0 txs
0 calls
constructor
No constructor.
functions
No functions.
events
No events.
errors
InsufficientCollateralAmount
error InsufficientCollateralAmount(uint256 collateralAmount, int256 collateralDeltaAmount)
InsufficientCollateralUsd
error InsufficientCollateralUsd(int256 remainingCollateralUsd)
InsufficientReserve
error InsufficientReserve(uint256 reservedUsd, uint256 maxReservedUsd)
InsufficientReserveForOpenInterest
error InsufficientReserveForOpenInterest(uint256 reservedUsd, uint256 maxReservedUsd)
MaxOpenInterestExceeded
error MaxOpenInterestExceeded(uint256 openInterest, uint256 maxOpenInterest)
OpenInterestCannotBeUpdatedForSwapOnlyMarket
error OpenInterestCannotBeUpdatedForSwapOnlyMarket(address market)
UnableToGetCachedTokenPrice
error UnableToGetCachedTokenPrice(address token, address market)
UnexpectedBorrowingFactor
error UnexpectedBorrowingFactor(uint256 positionBorrowingFactor, uint256 cumulativeBorrowingFactor)
UnexpectedTokenForVirtualInventory
error UnexpectedTokenForVirtualInventory(address token, address market)
creation bytecode
0x61519961003a600b82828239805160001a60731461002d57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063bd8b7e111461003a575b600080fd5b81801561004657600080fd5b5061005a610055366004614580565b61005c565b005b60006100748360000151606001518460200151610863565b905061007e613bcf565b61009c6100918560800151516040015190565b8560200151846109db565b60408201526080840151602001515160000361015f57835151602085015151608086015151604001516100ec926100de92909160808901516040015151610a7c565b608086810151602001510152565b83515160208501518051604091820151608088015190920151516101259361011693909291610b02565b60808601516020015160a00152565b835151602085015180516060909101516080870151604001515161015f936101509390929091610b02565b60808601516020015160c00152565b815160405163358daa8960e01b815273c4bb9a78e82aa1cd437db1bed9285bab3e3c85119163358daa8991610198918891600401614958565b608060405180830381865af41580156101b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d99190614a36565b602085015260a0840152608083015260608201526101f5613c1a565b61021185836040015161020787610b2a565b8560600151610b98565b81845291506000138015610243575081516102349061022f90614a82565b610f21565b60808601516020015160400151105b1561027b576080850151602001516040015182516040516374cc815b60e01b8152610272929190600401614a9e565b60405180910390fd5b6102aa61029b6102948760800151602001516040015190565b8451610f73565b60808701516020015160400152565b84518051602091820151918701515160808501516102d29391906102cd90614a82565b610faa565b50604080860151602001510151608086015160200151516102f39190614aac565b60c0830152845151602086015151608087015160400151516103169291906110b4565b60e0830181905260c083015161032e9187919061112e565b61033885826111ef565b60c08201516080860151602001515261037b8260a001516103628760800151602090810151015190565b61036c9190614aac565b60808701516020908101510152565b6040810151606001516080868101516020015101526103af8160400151608001518660800151610b1e90919063ffffffff16565b604081015160a0015160808601516020015160c0015260e0820151608086015160200151606001526103ea4260808701516020015160e00152565b84515160a086015160808701516040516318ed19e160e01b81527362de729c2529998d28f59cf75a8300630d2f18bc936318ed19e193610431939192909190600401614abf565b60006040518083038186803b15801561044957600080fd5b505af415801561045d573d6000803e3d6000fd5b505050506104928561048061047b8860400151602001516040015190565b610b2a565b61048d8560a00151610b2a565b611270565b60006104a78660400151602001516040015190565b11156106025784515160208601516040808801510151516104cb92919086906112d8565b84515160208601516040808801510151516104e9929190869061134a565b600060405180608001604052806105068860800151602001515190565b815260200161051e8860800151602001516040015190565b8152602001600081526020016000815250905060008073c4bb9a78e82aa1cd437db1bed9285bab3e3c851163dac648578960000151600001518a602001518961056d8d60800151516040015190565b60808e01516040015151896040518763ffffffff1660e01b815260040161059996959493929190614b14565b6040805180830381865af41580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d99190614b84565b91509150816105fe57604051632159b16160e01b815260048101829052602401610272565b5050505b61060c85826113b2565b8451805160a0909101516080870151602088015160405163d7e3321160e01b815273c4bb9a78e82aa1cd437db1bed9285bab3e3c85119463d7e332119461066094919390928a906001908190600401614bb2565b60006040518083038186803b15801561067857600080fd5b505af415801561068c573d6000803e3d6000fd5b5050505073e31a7a104e1c6a5a9242de27e5360b8d0cef7f7563f70a4e1c86600001516020015187606001518860a001518960200151600001516106d68b60800151516040015190565b6040808d01516020015101516001896040518963ffffffff1660e01b8152600401610708989796959493929190614cae565b60006040518083038186803b15801561072057600080fd5b505af4158015610734573d6000803e3d6000fd5b50505050610740613d47565b85516020908101516001600160a01b031682526060808801518383015260a0808901516040808601919091526080808b0151848701528851818701528785015160c08701528782015183870152818b0180518601519092015160e0870152918701516101008601528651610120860152918601516101408501528501516101608401525101515161018082019060088111156107de576107de6146d9565b908160088111156107f1576107f16146d9565b905250604051632f804e0d60e01b815273e31a7a104e1c6a5a9242de27e5360b8d0cef7f7590632f804e0d9061082b908490600401614e4c565b60006040518083038186803b15801561084357600080fd5b505af4158015610857573d6000803e3d6000fd5b50505050505050505050565b61086b613dd2565b6040518060600160405280846001600160a01b0316635dcf719485602001516040518263ffffffff1660e01b81526004016108a69190614f10565b6040805180830381865afa1580156108c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e69190614f24565b8152602001846001600160a01b0316635dcf719485604001516040518263ffffffff1660e01b815260040161091b9190614f10565b6040805180830381865afa158015610937573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095b9190614f24565b8152602001846001600160a01b0316635dcf719485606001516040518263ffffffff1660e01b81526004016109909190614f10565b6040805180830381865afa1580156109ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d09190614f24565b905290505b92915050565b6109e3613dfb565b82604001516001600160a01b0316846001600160a01b031603610a0b57506020810151610a75565b82606001516001600160a01b0316846001600160a01b031603610a3357506040810151610a75565b82602001516001600160a01b0316846001600160a01b031603610a5857508051610a75565b8251604051635f2394d160e11b8152610272918691600401614f72565b9392505050565b6000846001600160a01b031663bd02d0f5610a988686866113e3565b6040518263ffffffff1660e01b8152600401610ab691815260200190565b602060405180830381865afa158015610ad3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af79190614f8c565b90505b949350505050565b6000846001600160a01b031663bd02d0f5610a98868686611484565b60209091015160a00152565b60006001600160ff1b03821115610b945760405162461bcd60e51b815260206004820152602860248201527f53616665436173743a2076616c756520646f65736e27742066697420696e2061604482015267371034b73a191a9b60c11b6064820152608401610272565b5090565b6000610ba2613c1a565b60006040518061014001604052808860000151600001516001600160a01b03168152602001886000015160a001516001600160a01b031681526020018860800151815260200187815260200160008613151581526020018860200151604001516001600160a01b031681526020018860200151606001516001600160a01b03168152602001610c3a8960400151602001516040015190565b8152602001610c4f8960400151516080015190565b6001600160a01b031681526020016000151581525090506000610c71826114d1565b88518051602091820151918b01515160808c015151604001519394507317598a6e10f0cfd5a5ba9efddd0b94bc3debfda7936383789c80939190866101400151604051602001610ce690602080825260119082015270504f534954494f4e5f4645455f5459504560781b604082015260600190565b60408051601f198184030181529082905280516020909101206001600160e01b031960e089901b1682526001600160a01b0396871660048301529486166024820152928516604484015293166064820152608481019290925260a482015260c40160006040518083038186803b158015610d5f57600080fd5b505af4158015610d73573d6000803e3d6000fd5b50508951805160209091015160408c015151608001517317598a6e10f0cfd5a5ba9efddd0b94bc3debfda7945063214516ab935060208d01515160808e01515160400151876080015160400151604051602001610df89060208082526014908201527355495f504f534954494f4e5f4645455f5459504560601b604082015260600190565b60408051808303601f1901815290829052805160209091012060e089901b6001600160e01b03191682526001600160a01b039788166004830152958716602482015293861660448501529185166064840152909316608482015260a481019290925260c482015260e40160006040518083038186803b158015610e7a57600080fd5b505af4158015610e8e573d6000803e3d6000fd5b50505050610ea0816101e00151610b2a565b610eaa9087614fa5565b8851805160209091015160408b01515160a00151929850610ede9260808c015151604001516040808e01510151518b611740565b5087518051602091820151918a015160808b01515160400151610f10939190610f0b866101600151610b2a565b611888565b508593509150505b94509492505050565b600080821215610b945760405162461bcd60e51b815260206004820181905260248201527f53616665436173743a2076616c7565206d75737420626520706f7369746976656044820152606401610272565b600080821315610f9757610f86826119f8565b610f909084614aac565b90506109d5565b610fa0826119f8565b610a759084614fc5565b600080856001600160a01b0316638ca498b0610fc586611a09565b856040518363ffffffff1660e01b8152600401610fe3929190614a9e565b6020604051808303816000875af1158015611002573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110269190614f8c565b60405163555a997960e01b81526001600160a01b038088166004830152861660248201526044810185905260648101829052909150737ad48fe9b0605cae1eaf719e7b3c1ba54e96caf09063555a99799060840160006040518083038186803b15801561109257600080fd5b505af41580156110a6573d6000803e3d6000fd5b509298975050505050505050565b6000836001600160a01b031663bd02d0f56110cf8585611a95565b6040518263ffffffff1660e01b81526004016110ed91815260200190565b602060405180830381865afa15801561110a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afa9190614f8c565b82515160208085015151608086015160408082015151919093015180516060909101518451635b2b7fbd60e11b81526001600160a01b03968716600482015295909316602486015290151560448501526064840152608483015260a4820184905260c482018390525173091821658bc02784e90c700e34382d1657242cb79163b656ff7a9160e4808301926000929190829003018186803b1580156111d257600080fd5b505af41580156111e6573d6000803e3d6000fd5b50505050505050565b6040810151602001511561122d578151805160209182015191840151805160409182015191860151515161122d949290866040015160200151611b2a565b60408082015101511561126c57815180516020918201519184015180516060909101516040860151515161126c94929190866040015160400151611b2a565b5050565b81156112d3578251805160209182015191850151608086015151604001516112a49391906080880151604001515187611ca5565b508251805160209182015160808601518051938401516040948501519490910151516112d1949086611e0b565b505b505050565b60006112e8858585856000611f0f565b905060006112fb86866000015185611f95565b905060006113098383611fb0565b9050600061131988888888611fc9565b90508181111561134057808260405163315276c960e01b8152600401610272929190614a9e565b5050505050505050565b600061135a858585856000611f0f565b9050600061136d8686600001518561200f565b9050600061137b8383611fb0565b9050600061138b88888888611fc9565b90508181111561134057808260405163b98c617960e01b8152600401610272929190614a9e565b81518051602091820151608085015151808401516040909101518551948501516101209095015161126c959061202a565b6000604051602001611424906020808252601b908201527a46554e44494e475f4645455f414d4f554e545f5045525f53495a4560281b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915284166060820152821515608082015260a0015b6040516020818303038152906040528051906020012090509392505050565b60006040516020016114249060208082526021908201527f434c41494d41424c455f46554e44494e475f414d4f554e545f5045525f53495a6040820152604560f81b606082015260800190565b6114d9613c1a565b600061151383600001518460200151856060015186608001516114ff8860400151515190565b604089015151602001518960e00151612179565b9050600061152984600001518560400151612603565b905061153e8460000151856060015183612699565b6060830152610120840151156115745783516040850151516020015161156e91908660e0015187606001516127a8565b60a08301525b8160a00151606001518260a00151602001518360600151606001518460600151602001518561018001516115a89190614aac565b6115b29190614fc5565b6115bc9190614aac565b6115c69190614fc5565b61016083015260a082015160609081015181840151909101516115e99190614aac565b82610140018181516115fb9190614aac565b9052508351604080860151805160208101519083015191909201515161162393929190610a7c565b604080840151606001919091528451908501515160200151611653919060a0870151604080890151015151610b02565b604080840151608001919091528451908501515160200151611683919060c0870151604080890151015151610b02565b826040015160a00181815250506116a28260400151856040015161294e565b60408301528351606085015160e08601516101008701516116c5939291906129ca565b82608001819052508161020001518260800151604001518360a0015160200151846060015160200151856101a001516116fe9190614aac565b6117089190614aac565b6117129190614aac565b61171c9190614fc5565b6101c0830181905260408301515161173391614aac565b6101e08301525092915050565b600080876001600160a01b03166332f85bbf61175d888888612a32565b6040516001600160e01b031960e084901b16815260048101919091526024810186905260606044820152602560648201527f496e76616c69642073746174653a206e6567617469766520636f6c6c61746572608482015264616c53756d60d81b60a482015260c4016020604051808303816000875af11580156117e4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118089190614f8c565b6040516347bc645360e01b8152909150737ad48fe9b0605cae1eaf719e7b3c1ba54e96caf0906347bc64539061184c908a908a908a908a908a908990600401614fd8565b60006040518083038186803b15801561186457600080fd5b505af4158015611878573d6000803e3d6000fd5b50929a9950505050505050505050565b600080866001600160a01b03166332f85bbf6118a8876000015187612a66565b6040516001600160e01b031960e084901b16815260048101919091526024810186905260606044820152602260648201527f496e76616c69642073746174652c206e6567617469766520706f6f6c416d6f756084820152611b9d60f21b60a482015260c4016020604051808303816000875af115801561192c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119509190614f8c565b905061195f8787878787612ad4565b50508451604051631daaefa160e01b81526001600160a01b038089166004830152918216602482015290851660448201526064810184905260848101829052737ad48fe9b0605cae1eaf719e7b3c1ba54e96caf090631daaefa19060a40160006040518083038186803b1580156119d557600080fd5b505af41580156119e9573d6000803e3d6000fd5b50929998505050505050505050565b600080821215610b94575060000390565b6000604051602001611a4a906020808252601b908201527a1413d4d2551253d397d253541050d517d413d3d317d05353d55395602a1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038416908201526060015b604051602081830303815290604052805190602001209050919050565b6000604051602001611ad6906020808252601b908201527a21aaa6aaa620aa24ab22afa127a92927aba4a723afa320a1aa27a960291b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b0385169082015282151560608201526080015b60405160208183030381529060405280519060200120905092915050565b6000866001600160a01b031663340dbab3611b46878787612c9c565b846040518363ffffffff1660e01b8152600401611b64929190614a9e565b6020604051808303816000875af1158015611b83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba79190614f8c565b90506000876001600160a01b031663340dbab3611bc48888612cf2565b856040518363ffffffff1660e01b8152600401611be2929190614a9e565b6020604051808303816000875af1158015611c01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c259190614f8c565b604051631f20ad3360e01b8152909150737ad48fe9b0605cae1eaf719e7b3c1ba54e96caf090631f20ad3390611c6b908a908a908a908a908a908a908a90600401615013565b60006040518083038186803b158015611c8357600080fd5b505af4158015611c97573d6000803e3d6000fd5b505050505050505050505050565b60208401516000906001600160a01b0316611cd657845160405163730293fd60e01b81526102729190600401614f10565b6000876001600160a01b03166332f85bbf611cf688600001518888612d03565b6040516001600160e01b031960e084901b1681526004810191909152602481018690526060604482015260256064820152600080516020615144833981519152608482015264195c995cdd60da1b60a482015260c4016020604051808303816000875af1158015611d6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d8f9190614f8c565b9050611db48888886020015187611da65786612d36565b611daf87614a82565b612d36565b50506000831315611dca57611dca888786612edc565b85516040516328d445cb60e01b8152737ad48fe9b0605cae1eaf719e7b3c1ba54e96caf0916328d445cb9161184c918b918a908a908a908990600401614fd8565b600080876001600160a01b03166332f85bbf611e28888888612f2a565b6040516001600160e01b031960e084901b16815260048101919091526024810186905260606044820152602f606482015260008051602061514483398151915260848201526e657265737420696e20746f6b656e7360881b60a482015260c4016020604051808303816000875af1158015611ea7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ecb9190614f8c565b60405163d791fbb360e01b8152909150737ad48fe9b0605cae1eaf719e7b3c1ba54e96caf09063d791fbb39061184c908a908a908a908a908a908990600401614fd8565b60008083611f21578560600151611f27565b85604001515b90506000611f36888884612f67565b905060008415611f645785611f5357866040015160200151611f5d565b8660200151602001515b9050611f7e565b85611f7457604087015151611f7b565b6020870151515b90505b611f888183615057565b9998505050505050505050565b6000836001600160a01b031663bd02d0f56110cf8585613005565b6000610a75838368327cb2734119d3b7a9601e1b613039565b6000808215611ffa576000611fdf878786613046565b855160200151909150611ff29082615057565b915050610af7565b6120058686856130a4565b9695505050505050565b6000836001600160a01b031663bd02d0f56110cf85856130eb565b8015612171576000866001600160a01b031663340dbab361204c87878761312d565b846040518363ffffffff1660e01b815260040161206a929190614a9e565b6020604051808303816000875af1158015612089573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ad9190614f8c565b90506000876001600160a01b031663340dbab36120ca888861313e565b856040518363ffffffff1660e01b81526004016120e8929190614a9e565b6020604051808303816000875af1158015612107573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061212b9190614f8c565b604051632c32d50d60e21b8152909150739e42ecf4f92025cf46e696964a6d9062953bc08f9063b0cb543490611c6b908a908a908a908a908a908a908a90600401615013565b505050505050565b612181613c1a565b612189613c1a565b60c0810187905280516001600160a01b03861660409091015260006121af8a8a8861314f565b865160c081019290925260808201929092526001600160a01b039283166020820152929092529091508a1663bd02d0f56121e9878a61346b565b6040518263ffffffff1660e01b815260040161220791815260200190565b602060405180830381865afa158015612224573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122489190614f8c565b60e0830181905288519061225d908690611fb0565b6122679190615084565b6101a08301526001600160a01b038a1663bd02d0f5612285886134a4565b6040518263ffffffff1660e01b81526004016122a391815260200190565b602060405180830381865afa1580156122c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122e49190614f8c565b602083018051919091525151156123ab57896001600160a01b031663bd02d0f56123158460200151600001516134d9565b6040518263ffffffff1660e01b815260040161233391815260200190565b602060405180830381865afa158015612350573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123749190614f8c565b6020808401805182019290925290510151156123ab576123a1826101a00151836020015160200151611fb0565b6020830151604001525b815151156124a157815160808082015160a090920191909152825160c08101519101516123d89190614aac565b825160600152815160c00151602080840151015111156124435781516060015160208084015101511161242257602080830151015182516060015161241d9190614fc5565b612424565b805b825160a0908101919091528251015181111561244357815160a0018190525b61245a826101a00151836000015160a00151611fb0565b825161012001526101a0820151825160c001516124779190611fb0565b8251610100908101919091528251908101516101209091015161249a9190614aac565b825160e001525b81516101000151602083015160400151116124c257815161010001516124cc565b8160200151604001515b6102008301819052825161012001516101a08401516124eb9190614fc5565b6124f59190614fc5565b6101008301526040516001600160a01b038b169063bd02d0f59061254c906020016020808252601c908201527b2827a9a4aa24a7a72fa322a2afa922a1a2a4ab22a92fa320a1aa27a960211b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161258091815260200190565b602060405180830381865afa15801561259d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125c19190614f8c565b61012083018190526101008301516125d891611fb0565b61014083018190526101008301516125f09190614fc5565b6101808301525098975050505050505050565b6000806126218461261685516020015190565b6040860151516110b4565b90508061263384602001516060015190565b111561265e5760208301516060015181604051634cd96ac160e11b8152600401610272929190614a9e565b600061266f84602001516060015190565b6126799083614fc5565b905061269061268a85602001515190565b82611fb0565b95945050505050565b6126a1613e15565b6126a9613e15565b82815283516126b89084615084565b816020018181525050846001600160a01b031663bd02d0f5604051602001612711906020808252601d908201527f424f52524f57494e475f4645455f52454345495645525f464143544f52000000604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161274591815260200190565b602060405180830381865afa158015612762573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127869190614f8c565b60408201819052602082015161279b91611fb0565b6060820152949350505050565b6127b0613e15565b6127b8613e15565b6000866001600160a01b031663bd02d0f56127d28861353a565b6040518263ffffffff1660e01b81526004016127f091815260200190565b602060405180830381865afa15801561280d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128319190614f8c565b90508060000361284357509050610afa565b61284d8582611fb0565b808352845161285c9190613576565b826020018181525050866001600160a01b031663bd02d0f56040516020016128b5906020808252601f908201527f4c49515549444154494f4e5f4645455f52454345495645525f464143544f5200604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b81526004016128e991815260200190565b602060405180830381865afa158015612906573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061292a9190614f8c565b60408301819052602083015161293f91611fb0565b60608301525095945050505050565b612956613e3d565b61297a836060015161296d84602001516080015190565b6020850151516001613599565b835260808301516129a190612994846020015160a0015190565b6020850151516000613599565b602084015260a08301516129be90612994846020015160c0015190565b60408401525090919050565b6129d2613e73565b6129da613e73565b6001600160a01b0383166129ef579050610afa565b6001600160a01b0383168152612a0586846135d0565b60208201819052855190612a1a908690611fb0565b612a249190615084565b604082015295945050505050565b6000604051602001611424906020808252600e908201526d434f4c4c41544552414c5f53554d60901b604082015260600190565b6000604051602001612a97906020808252600b908201526a1413d3d317d05353d5539560aa1b604082015260600190565b60408051601f198184030181528282528051602091820120908301526001600160a01b038086169183019190915283166060820152608001611b0c565b6000806000876001600160a01b031663a6ed563e612af58860000151613716565b6040518263ffffffff1660e01b8152600401612b1391815260200190565b602060405180830381865afa158015612b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b549190614f8c565b905080612b68576000809250925050612c92565b6000612b74878761374d565b90506000896001600160a01b0316638ca498b0612b9185856137c5565b886040518363ffffffff1660e01b8152600401612baf929190614a9e565b6020604051808303816000875af1158015612bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bf29190614f8c565b885160405163a814bb6f60e01b81526001600160a01b03808d16600483015290911660248201528315156044820152606481018590526084810188905260a48101829052909150737ad48fe9b0605cae1eaf719e7b3c1ba54e96caf09063a814bb6f9060c40160006040518083038186803b158015612c7057600080fd5b505af4158015612c84573d6000803e3d6000fd5b506001975092955050505050505b9550959350505050565b6000604051602001612cad906150a6565b60408051601f198184030181528282528051602091820120908301526001600160a01b038087169183019190915280851660608301528316608082015260a001611465565b6000604051602001612a97906150a6565b6000604051602001611424906020808252600d908201526c13d4115397d2539511549154d5609a1b604082015260600190565b6000806000866001600160a01b031663a6ed563e612d5387613837565b6040518263ffffffff1660e01b8152600401612d7191815260200190565b602060405180830381865afa158015612d8e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612db29190614f8c565b905080612dc6576000809250925050610f18565b6000876001600160a01b031663e4e36c4e612de08461386d565b876040518363ffffffff1660e01b8152600401612dfe929190614a9e565b6020604051808303816000875af1158015612e1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e419190614f8c565b6040516310de91c960e31b81526001600160a01b03808a16600483015288166024820152604481018490526064810187905260848101829052909150737ad48fe9b0605cae1eaf719e7b3c1ba54e96caf0906386f48e489060a40160006040518083038186803b158015612eb457600080fd5b505af4158015612ec8573d6000803e3d6000fd5b5060019b939a509298505050505050505050565b6000612ee98484846130a4565b90506000612efc858560000151856138b0565b905080821115612f23578181604051632bf127cf60e01b8152600401610272929190614a9e565b5050505050565b6000604051602001611424906020808252601790820152764f50454e5f494e5445524553545f494e5f544f4b454e5360481b604082015260600190565b600080612f7c846040015185606001516138cb565b905080856001600160a01b031663bd02d0f5612f9c876000015187612a66565b6040518263ffffffff1660e01b8152600401612fba91815260200190565b602060405180830381865afa158015612fd7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ffb9190614f8c565b6126909190615084565b6000604051602001611ad6906020808252600e908201526d2922a9a2a92b22afa320a1aa27a960911b604082015260600190565b6000610afa8484846138fa565b60008061305b846040015185606001516138cb565b90506000613074868660000151876040015187866139e4565b9050600061308d878760000151886060015188876139e4565b90506130998183614aac565b979650505050505050565b6000806130b9846040015185606001516138cb565b905060006130d286866000015187604001518786613a6a565b9050600061308d87876000015188606001518887613a6a565b6000604051602001611ad6906020808252601c908201527b27a822a72fa4a72a22a922a9aa2fa922a9a2a92b22afa320a1aa27a960211b604082015260600190565b6000604051602001612cad906150d8565b6000604051602001612a97906150d8565b600080600080600080876001600160a01b03166385725b58886040518263ffffffff1660e01b81526004016131849190614f10565b602060405180830381865afa1580156131a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131c59190614f8c565b905060008080808415613413576040516306459e2360e51b8152600481018690526001600160a01b038d169063c8b3c46090602401602060405180830381865afa158015613217573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061323b9190615102565b935060008c6001600160a01b0316631582a018866040518263ffffffff1660e01b815260040161326b9190614f10565b602060405180830381865afa158015613288573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132ac9190614f8c565b60405163039af9eb60e01b8152600481018290529091506001600160a01b038e169063039af9eb906024016040805180830381865afa1580156132f3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613317919061511f565b90945092506001600160a01b038e1663bd02d0f561333483613a87565b6040518263ffffffff1660e01b815260040161335291815260200190565b602060405180830381865afa15801561336f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133939190614f8c565b915060008d6001600160a01b03166371a6a790876040518263ffffffff1660e01b81526004016133c39190614f10565b602060405180830381865afa1580156133e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134049190614f8c565b90508015613410578093505b50505b60006134346127106134258587615057565b61342f9190615084565b613ac8565b9050600061344185613ac8565b9050600061344f8383614fc5565b979c50959a509598509650945050505050939792965093509350565b6000604051602001611ad6906020808252601390820152722827a9a4aa24a7a72fa322a2afa320a1aa27a960691b604082015260600190565b6000604051602001611a4a906020808252600f908201526e282927afaa2920a222a92faa24a2a960891b604082015260600190565b600060405160200161351290602080825260139082015272282927afa224a9a1a7aaa72a2fa320a1aa27a960691b604082015260600190565b6040516020818303038152906040528051906020012082604051602001611a78929190614a9e565b6000604051602001611a4a906020808252601690820152752624a8aaa4a220aa24a7a72fa322a2afa320a1aa27a960511b604082015260600190565b60008160016135858286614aac565b61358f9190614fc5565b610a759190615084565b6000806135a68587614fc5565b905061200584826135ca66038d7ea4c6800068327cb2734119d3b7a9601e1b615057565b86613aed565b600080836001600160a01b031663bd02d0f56040516020016136179060208082526011908201527026a0ac2faaa4afa322a2afa320a1aa27a960791b604082015260600190565b604051602081830303815290604052805190602001206040518263ffffffff1660e01b815260040161364b91815260200190565b602060405180830381865afa158015613668573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061368c9190614f8c565b90506000846001600160a01b031663bd02d0f56136a886613b14565b6040518263ffffffff1660e01b81526004016136c691815260200190565b602060405180830381865afa1580156136e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137079190614f8c565b9050818110610afa5781612690565b6000604051602001611a4a906020808252601190820152701592549515505317d3505492d15517d251607a1b604082015260600190565b600082604001516001600160a01b0316826001600160a01b03161415801561378b575082606001516001600160a01b0316826001600160a01b031614155b156137ad57825160405163785ee46960e01b8152610272918491600401614f72565b506040909101516001600160a01b0391821691161490565b6000604051602001613806906020808252601b908201527a5649525455414c5f494e56454e544f52595f464f525f535741505360281b604082015260600190565b60408051601f1981840301815282825280516020918201209083015281018490528215156060820152608001611b0c565b6000604051602001611a4a9060208082526010908201526f1592549515505317d513d2d15397d25160821b604082015260600190565b6000604051602001613512906020808252601f908201527f5649525455414c5f494e56454e544f52595f464f525f504f534954494f4e5300604082015260600190565b6000836001600160a01b031663bd02d0f56110cf8585613b47565b6000816001600160a01b0316836001600160a01b0316146138ed5760016138f0565b60025b60ff169392505050565b60008080600019858709858702925082811083820303915050806000036139345783828161392a5761392a61506e565b0492505050610a75565b80841161397b5760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610272565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600081866001600160a01b031663bd02d0f5613a01888888612f2a565b6040518263ffffffff1660e01b8152600401613a1f91815260200190565b602060405180830381865afa158015613a3c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a609190614f8c565b6120059190615084565b600081866001600160a01b031663bd02d0f5613a01888888612d03565b6000604051602001613512906020808252601b908201527a26a4a72fa0a32324a624a0aa22afa922aba0a9222fa320a1aa27a960291b604082015260600190565b6000612710613ae368327cb2734119d3b7a9601e1b84615057565b6109d59190615084565b60008115613b0957613b028585856001613b7e565b9050610afa565b610af78585856138fa565b6000604051602001611a4a906020808252600d908201526c2aa4afa322a2afa320a1aa27a960991b604082015260600190565b6000604051602001611ad69060208082526011908201527013505617d3d4115397d2539511549154d5607a1b604082015260600190565b600080613b8c8686866138fa565b90506001836002811115613ba257613ba26146d9565b148015613bbf575060008480613bba57613bba61506e565b868809115b15610af757612005600182614aac565b6040518061010001604052806000815260200160008152602001613bf1613dfb565b815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806102200160405280613c916040518061014001604052806000801916815260200160006001600160a01b0316815260200160006001600160a01b03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001613cba60405180606001604052806000815260200160008152602001600081525090565b8152602001613cc7613e3d565b8152602001613cd4613e15565b8152602001613ce1613e73565b8152602001613cee613e15565b8152602001613cfb613dfb565b8152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604080516101a0810182526000808252602082018190529181019190915260608101613d71613e9d565b8152602001613d7e613dfb565b8152602001613d8b613dfb565b815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160006008811115613dcd57613dcd6146d9565b905290565b6040518060600160405280613de5613dfb565b8152602001613df2613dfb565b8152602001613dcd5b604051806040016040528060008152602001600081525090565b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6040805160c081019091526000606082018181526080830182905260a083019190915281908152602001613f166040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81526040805160208181019092526000815291015290565b634e487b7160e01b600052604160045260246000fd5b604051608081016001600160401b0381118282101715613f6657613f66613f2e565b60405290565b60405161016081016001600160401b0381118282101715613f6657613f66613f2e565b604051606081016001600160401b0381118282101715613f6657613f66613f2e565b60405161010081016001600160401b0381118282101715613f6657613f66613f2e565b60405161012081016001600160401b0381118282101715613f6657613f66613f2e565b60405160e081016001600160401b0381118282101715613f6657613f66613f2e565b6001600160a01b038116811461402e57600080fd5b50565b600060c0828403121561404357600080fd5b60405160c081016001600160401b038111828210171561406557614065613f2e565b604052905080823561407681614019565b8152602083013561408681614019565b6020820152604083013561409981614019565b604082015260608301356140ac81614019565b606082015260808301356140bf81614019565b608082015260a08301356140d281614019565b60a0919091015292915050565b80356140ea81614019565b919050565b60006080828403121561410157600080fd5b614109613f44565b9050813561411681614019565b8152602082013561412681614019565b6020820152604082013561413981614019565b6040820152606082013561414c81614019565b606082015292915050565b600082601f83011261416857600080fd5b813560206001600160401b038083111561418457614184613f2e565b8260051b604051601f19603f830116810181811084821117156141a9576141a9613f2e565b6040529384528581018301938381019250878511156141c757600080fd5b83870191505b848210156130995781356141e081614019565b835291830191908301906141cd565b8035600981106140ea57600080fd5b8035600381106140ea57600080fd5b6000610160828403121561422057600080fd5b614228613f6c565b9050614233826141ef565b8152614241602083016141fe565b602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c082015260e082013560e082015261010080830135818301525061012080830135818301525061014080830135818301525092915050565b801515811461402e57600080fd5b6000608082840312156142cc57600080fd5b6142d4613f44565b905081356142e1816142ac565b815260208201356142f1816142ac565b60208201526040820135614304816142ac565b6040820152606082013561414c816142ac565b6000610200828403121561432a57600080fd5b614332613f8f565b905081356001600160401b038082111561434b57600080fd5b90830190610100828603121561436057600080fd5b614368613fb1565b614371836140df565b815261437f602084016140df565b6020820152614390604084016140df565b60408201526143a1606084016140df565b60608201526143b2608084016140df565b60808201526143c360a084016140df565b60a08201526143d460c084016140df565b60c082015260e0830135828111156143eb57600080fd5b6143f787828601614157565b60e08301525083525061440f9050836020840161420d565b60208201526144228361018084016142ba565b604082015292915050565b60006020828403121561443f57600080fd5b604051602081016001600160401b038111828210171561446157614461613f2e565b6040529050808235614472816142ac565b905292915050565b60008183036101a081121561448e57600080fd5b614496613f8f565b915060608112156144a657600080fd5b6144ae613f8f565b83356144b981614019565b815260208401356144c981614019565b602082015260408401356144dc81614019565b60408201528252610120605f1982018113156144f757600080fd5b6144ff613fd4565b9150606084013582526080840135602083015260a0840135604083015260c0840135606083015260e084013560808301526101008085013560a08401528185013560c084015261014085013560e08401526101608501358184015250508060208301525061442283610180840161442d565b8035600281106140ea57600080fd5b6000806040838503121561459357600080fd5b82356001600160401b03808211156145aa57600080fd5b9084019061036082870312156145bf57600080fd5b6145c7613ff7565b6145d18784614031565b81526145e08760c085016140ef565b6020820152610140830135828111156145f857600080fd5b61460488828601614317565b604083015250610160830135606082015261462387610180850161447a565b608082015261032083013560a08201526146406103408401614571565b60c08201529660209590950135955050505050565b6001600160a01b03169052565b80516001600160a01b03908116835260208083015182169084015260408083015182169084015260609182015116910152565b600081518084526020808501945080840160005b838110156146ce5781516001600160a01b0316875295820195908201906001016146a9565b509495945050505050565b634e487b7160e01b600052602160045260246000fd5b600981106146ff576146ff6146d9565b9052565b600381106146ff576146ff6146d9565b61471e8282516146ef565b60208101516147306020840182614703565b5060408101516040830152606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015181840152506101208082015181840152506101408082015181840152505050565b805161020080845281516001600160a01b039081169185019190915260208201511661022084015260408101516000916147d3610240860183614655565b606081015191506147e8610260860183614655565b608081015191506147fd610280860183614655565b60a081015191506148126102a0860183614655565b60c081015191506148276102c0860183614655565b60e001516101006102e08601529050614844610300850182614695565b905060208301516148586020860182614713565b5060408381015180511515610180870152602081015115156101a08701529081015115156101c0860152606081015115156101e0860152509392505050565b805160018060a01b03808251168452806020830151166020850152806040830151166040850152505060208101518051606084015260208101516080840152604081015160a0840152606081015160c0840152608081015160e084015260a0810151610100818186015260c083015161012086015260e08301516101408601528083015161016086015250505060408101516112d36101808401825115159052565b600281106146ff576146ff6146d9565b80518252602090810151910152565b606081526000835160018060a01b038082511660608501528060208301511660808501528060408301511660a08501528060608301511660c08501528060808301511660e08501525060a081015190506149b6610100840182614655565b5060208401516149ca610120840182614662565b5060408401516103606101a08401526149e76103c0840182614795565b905060608501516101c08401526080850151614a076101e0850182614897565b5060a085015161038084015260c0850151614a266103a0850182614939565b509050610a756020830184614949565b60008060008060808587031215614a4c57600080fd5b505082516020840151604085015160609095015191969095509092509050565b634e487b7160e01b600052601160045260246000fd5b6000600160ff1b8201614a9757614a97614a6c565b5060000390565b918252602082015260400190565b808201808211156109d5576109d5614a6c565b6001600160a01b0384168152602081018390526101e08101610afa6040830184614897565b614aef828251614949565b6020810151614b016040840182614949565b5060408101516112d36080840182614949565b6001600160a01b038781168252610220820190614b346020840189614662565b614b4160a0840188614ae4565b9490941661016082015291151561018083015280516101a083015260208101516101c083015260408101516101e083015260600151610200909101529392505050565b60008060408385031215614b9757600080fd5b8251614ba2816142ac565b6020939093015192949293505050565b6001600160a01b038881168252871660208201526103608101614bd86040830188614897565b614be66101e0830187614662565b614bf4610260830186614ae4565b9215156103208201529015156103409091015295945050505050565b805182526020810151614c266020840182614655565b506040810151614c396040840182614655565b50606081015160608301526080810151608083015260a081015160a083015260c081015160c083015260e081015160e08301526101008082015181840152506101208082015181840152505050565b805182526020810151602083015260408101516040830152606081015160608301525050565b6001600160a01b038981168252602082018990526040820188905286811660608301528516608082015260a0810184905282151560c08201528151610620820190614cfd9060e0840190614c10565b602083810151805161022085015280820151610240850152604090810151610260850152808501518051610280860152918201516102a08501528101516102c08401526060808201516102e0850152608082015161030085015260a090910151610320840152830151614d74610340840182614c88565b50608083015180516001600160a01b03166103c084015260208101516103e08401526040015161040083015260a0830151614db3610420840182614c88565b5060c0830151614dc76104a0840182614949565b5060e08301516104e08301526101008301516105008301526101208301516105208301526101408301516105408301526101608301516105608301526101808301516105808301526101a08301516105a08301526101c08301516105c08301526101e08301516105e08301526102008301516106008301529998505050505050505050565b600061036082019050614e60828451614655565b60208301516020830152604083015160408301526060830151614e866060840182614897565b506080830151614e9a610200840182614949565b5060a0830151614eae610240840182614949565b5060c083015161028083015260e08301516102a08301526101008301516102c08301526101208301516102e0830152610140830151610300830152610160830151610320830152610180830151614f096103408401826146ef565b5092915050565b6001600160a01b0391909116815260200190565b600060408284031215614f3657600080fd5b604080519081016001600160401b0381118282101715614f5857614f58613f2e565b604052825181526020928301519281019290925250919050565b6001600160a01b0392831681529116602082015260400190565b600060208284031215614f9e57600080fd5b5051919050565b8181036000831280158383131683831282161715614f0957614f09614a6c565b818103818111156109d5576109d5614a6c565b6001600160a01b039687168152948616602086015292909416604084015215156060830152608082019290925260a081019190915260c00190565b6001600160a01b03978816815295871660208701529386166040860152919094166060840152608083019390935260a082019290925260c081019190915260e00190565b80820281158282048414176109d5576109d5614a6c565b634e487b7160e01b600052601260045260246000fd5b6000826150a157634e487b7160e01b600052601260045260246000fd5b500490565b60208082526018908201527710d31052535050931157d1955391125391d7d05353d5539560421b604082015260600190565b60208082526010908201526f10519192531250551157d49155d0549160821b604082015260600190565b60006020828403121561511457600080fd5b8151610a7581614019565b6000806040838503121561513257600080fd5b50508051602090910151909290915056fe496e76616c69642073746174653a206e65676174697665206f70656e20696e74a264697066735822122084dc7f8835fa5be52066c5fa6fb61a45d6d3b5e5eb2bad659b69c41ca263303064736f6c63430008120033