0 txs
0 calls
constructor
constructor(address _pool, address _router, uint256 _protocolFee, uint256 _maxTotalSupply)
functions
accruedProtocolFees0
viewfunction accruedProtocolFees0() view returns (uint256)
accruedProtocolFees1
viewfunction accruedProtocolFees1() view returns (uint256)
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
baseLower
viewfunction baseLower() view returns (int24)
baseUpper
viewfunction baseUpper() view returns (int24)
decimals
viewfunction decimals() view returns (uint8)
getBalance0
viewfunction getBalance0() view returns (uint256)
getBalance1
viewfunction getBalance1() view returns (uint256)
getPositionAmounts
viewfunction getPositionAmounts(int24 tickLower, int24 tickUpper) view returns (uint256 amount0, uint256 amount1)
getTotalAmounts
viewfunction getTotalAmounts() view returns (uint256 total0, uint256 total1)
governance
viewfunction governance() view returns (address)
limitLower
viewfunction limitLower() view returns (int24)
limitUpper
viewfunction limitUpper() view returns (int24)
maxTotalSupply
viewfunction maxTotalSupply() view returns (uint256)
name
viewfunction name() view returns (string)
pendingGovernance
viewfunction pendingGovernance() view returns (address)
pool
viewfunction pool() view returns (address)
protocolFee
viewfunction protocolFee() view returns (uint256)
router
viewfunction router() view returns (address)
routerAddress
viewfunction routerAddress() view returns (address)
SharpeKeeper
viewfunction SharpeKeeper() view returns (address)
symbol
viewfunction symbol() view returns (string)
tickSpacing
viewfunction tickSpacing() view returns (int24)
token0
viewfunction token0() view returns (address)
token0Address
viewfunction token0Address() view returns (address)
token1
viewfunction token1() view returns (address)
token1Address
viewfunction token1Address() view returns (address)
totalSupply
viewfunction totalSupply() view returns (uint256)
acceptGovernance
nonpayablefunction acceptGovernance()
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
collectProtocol
nonpayablefunction collectProtocol(uint256 amount0, uint256 amount1, address to)
decreaseAllowance
nonpayablefunction decreaseAllowance(address spender, uint256 subtractedValue) returns (bool)
deposit
nonpayablefunction deposit(uint256 amount0Desired, uint256 amount1Desired, uint256 amount0Min, uint256 amount1Min, address to) returns (uint256 shares, uint256 amount0, uint256 amount1)
emergencyBurn
nonpayablefunction emergencyBurn(int24 tickLower, int24 tickUpper, uint128 liquidity)
increaseAllowance
nonpayablefunction increaseAllowance(address spender, uint256 addedValue) returns (bool)
rebalance
nonpayablefunction rebalance(int256 swapAmount, uint160 sqrtPriceLimitX96, int24 _baseLower, int24 _baseUpper, int24 _bidLower, int24 _bidUpper, int24 _askLower, int24 _askUpper)
setGovernance
nonpayablefunction setGovernance(address _governance)
setMaxTotalSupply
nonpayablefunction setMaxTotalSupply(uint256 _maxTotalSupply)
setProtocolFee
nonpayablefunction setProtocolFee(uint256 _protocolFee)
setSharpeKeeper
nonpayablefunction setSharpeKeeper(address _SharpeKeeper)
sweep
nonpayablefunction sweep(address token, uint256 amount, address to)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
uniswapV3MintCallback
nonpayablefunction uniswapV3MintCallback(uint256 amount0, uint256 amount1, bytes data)
uniswapV3SwapCallback
nonpayablefunction uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data)
withdraw
nonpayablefunction withdraw(uint256 shares, uint256 amount0Min, uint256 amount1Min, address to, bool swapToAmount0, bool swapToAmount1) returns (uint256 amount0, uint256 amount1)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
CollectFees
event CollectFees(uint256 feesToVault0, uint256 feesToVault1, uint256 feesToProtocol0, uint256 feesToProtocol1)
Deposit
event Deposit(address indexed sender, address indexed to, uint256 shares, uint256 amount0, uint256 amount1)
Snapshot
event Snapshot(int24 tick, uint256 totalAmount0, uint256 totalAmount1, uint256 totalSupply)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
Withdraw
event Withdraw(address indexed sender, address indexed to, uint256 shares, uint256 amount0, uint256 amount1)
errors
No errors.
creation bytecode
0x6101806040523480156200001257600080fd5b5060405162006008380380620060088339810160408190526200003591620004c9565b604080518082018252600681526553686172706560d01b6020808301918252835180850190945260048452630534852560e41b9084015281519192916200007f91600391620003e2565b50805162000095906004906020840190620003e2565b50506001600555506001600160601b0319606085811b821660805284901b1660a05260408051630dfe168160e01b815290516001600160a01b03861691630dfe1681916004808301926020929190829003018186803b158015620000f857600080fd5b505afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001339190620004a5565b6001600160a01b031660c0816001600160a01b031660601b81525050836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018957600080fd5b505afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c49190620004a5565b6001600160a01b031660e0816001600160a01b031660601b81525050836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021a57600080fd5b505afa1580156200022f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002559190620004a5565b6001600160a01b0316610120816001600160a01b031660601b81525050836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ac57600080fd5b505afa158015620002c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e79190620004a5565b6001600160601b0319606091821b8116610140529084901b1661016052604080516334324e9f60e21b815290516001600160a01b0386169163d0c93a7c916004808301926020929190829003018186803b1580156200034557600080fd5b505afa1580156200035a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000380919062000510565b600290810b900b60e81b6101005260068290556007819055600980546001600160a01b03191633179055620f42408210620003d85760405162461bcd60e51b8152600401620003cf9062000533565b60405180910390fd5b5050505062000595565b828054620003f09062000558565b90600052602060002090601f0160209004810192826200041457600085556200045f565b82601f106200042f57805160ff19168380011785556200045f565b828001600101855582156200045f579182015b828111156200045f57825182559160200191906001019062000442565b506200046d92915062000471565b5090565b5b808211156200046d576000815560010162000472565b80516001600160a01b0381168114620004a057600080fd5b919050565b600060208284031215620004b7578081fd5b620004c28262000488565b9392505050565b60008060008060808587031215620004df578283fd5b620004ea8562000488565b9350620004fa6020860162000488565b6040860151606090960151949790965092505050565b60006020828403121562000522578081fd5b81518060020b8114620004c2578182fd5b6020808252600b908201526a70726f746f636f6c46656560a81b604082015260600190565b6002810460018216806200056d57607f821691505b602082108114156200058f57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160601c6101405160601c6101605160601c615851620007b7600039600081816107ce01528181610b9d0152818161127a015281816136ac015261392101526000818161096d01528181610c9f015281816110b20152818161131a015281816123780152818161374c0152613a230152600081816109cf01528181610c3d015281816110500152818161137c015281816119ef015281816137ae01526139c10152600081816122810152612ec301526000818161060401528181610f760152818161120e0152818161124d0152818161172301528181611865015281816122a501528181612349015281816124030152818161267601528181612772015281816128cd015261367f0152600081816105ca015281816106f701528181610b3101528181610b7001528181610ed9015281816116e8015281816119330152818161230f015281816123c60152818161259b015281816127380152818161289001526138f4015260008181610a3701528181610d070152818161111a015281816113e401528181612813015281816138160152613a8b01526000818161072b01528181611a8501528181611c7f015281816120670152818161210a015281816122d20152818161285001528181612bb101528181612fe4015281816130a80152818161313d015281816132ce015281816133b201526133f401526158516000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c806387e5e08311610167578063d0c93a7c116100ce578063e4292b5811610087578063e4292b581461051e578063eae989a214610531578063f39c38a014610539578063f887ea4014610541578063fa08274314610549578063fa461e331461055157610295565b8063d0c93a7c146104cd578063d21220a7146104d5578063d3487997146104dd578063d7cb416f146104f0578063dc2c256f146104f8578063dd62ed3e1461050b57610295565b8063a91ef6eb11610120578063a91ef6eb14610463578063ab033ea914610484578063abbffcb914610497578063b0e21e8a146104aa578063b3a3d00c146104b2578063c4a7761e146104c557610295565b806387e5e08314610412578063888a91341461042557806395d89b411461042d578063a00fa77f14610435578063a457c2d71461043d578063a9059cbb1461045057610295565b8063313ce5671161020b57806351e87af7116101c457806351e87af7146103cc5780635aa6e675146103d4578063629d9405146103dc57806370a08231146103e4578063787dce3d146103f75780637ff36fbe1461040a57610295565b8063313ce5671461035f5780633268cc5614610374578063365d0ed71461037c578063395093511461039e5780633f3e4c11146103b157806341aec538146103c457610295565b80630f35bcac1161025d5780630f35bcac1461030a57806316f0115b1461031f57806318160ddd14610327578063238efcbc1461033c57806323b872dd146103445780632ab4d0521461035757610295565b80630430c1301461029a57806306fdde03146102af578063095ea7b3146102cd5780630c42383a146102ed5780630dfe168114610302575b600080fd5b6102ad6102a8366004614b58565b610564565b005b6102b7610630565b6040516102c49190614e2f565b60405180910390f35b6102e06102db366004614742565b6106c2565b6040516102c49190614dc7565b6102f56106e6565b6040516102c49190614cbd565b6102f56106f5565b610312610719565b6040516102c49190614ddb565b6102f5610729565b61032f61074d565b6040516102c49190614dd2565b6102ad610753565b6102e0610352366004614702565b610791565b61032f6107c1565b6103676107c7565b6040516102c4919061561f565b6102f56107cc565b61038f61038a366004614beb565b6107f0565b6040516102c4939291906155e0565b6102e06103ac366004614742565b6117e0565b6102ad6103bf366004614b28565b61182c565b61032f61185b565b61031261190a565b6102f561191a565b61032f611929565b61032f6103f23660046146ae565b61197d565b6102ad610405366004614b28565b61199c565b6102f56119ed565b6102ad610420366004614964565b611a11565b610312611e9a565b6102b7611eaa565b61032f611eb9565b6102e061044b366004614742565b611ebf565b6102e061045e366004614742565b611f2b565b610476610471366004614884565b611f43565b6040516102c49291906155f6565b6102ad6104923660046146ae565b611fda565b6102ad6104a53660046148b1565b612026565b61032f6121a6565b6102ad6104c03660046146ae565b6121ac565b6104766121f8565b61031261227f565b6102f56122a3565b6102ad6104eb366004614913565b6122c7565b6102f5612376565b6102ad610506366004614843565b61239a565b61032f6105193660046146ca565b612468565b61047661052c366004614b85565b612493565b61032f6127fc565b6102f5612802565b6102f5612811565b610312612835565b6102ad61055f366004614913565b612845565b6009546001600160a01b031633146105975760405162461bcd60e51b815260040161058e90615265565b60405180910390fd5b600b546105a490846128f4565b600b55600c546105b490836128f4565b600c5582156105f1576105f16001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168285612900565b811561062b5761062b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168284612900565b505050565b60606003805461063f906156e3565b80601f016020809104026020016040519081016040528092919081815260200182805461066b906156e3565b80156106b85780601f1061068d576101008083540402835291602001916106b8565b820191906000526020600020905b81548152906001019060200180831161069b57829003601f168201915b5050505050905090565b6000806106cd612956565b90506106da81858561295a565b60019150505b92915050565b6008546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a54600160e81b900460020b81565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025490565b600a546001600160a01b0316331461077d5760405162461bcd60e51b815260040161058e90615147565b600980546001600160a01b03191633179055565b60008061079c612956565b90506107a9858285612a0e565b6107b4858585612a52565b60019150505b9392505050565b60075481565b601290565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806000600260055414156108185760405162461bcd60e51b815260040161058e906154d8565b60026005558715158061082b5750600087115b6108475760405162461bcd60e51b815260040161058e90615112565b6001600160a01b0384161580159061086857506001600160a01b0384163014155b6108845760405162461bcd60e51b815260040161058e90614f0b565b600a546108a690600160a01b8104600290810b91600160b81b9004900b612b76565b600a546108c890600160d01b8104600290810b91600160e81b9004900b612b76565b6108d28888612c3c565b9194509250905082611675576000821180156108ec575080155b806109005750600081118015610900575081155b61091c5760405162461bcd60e51b815260040161058e90615172565b600061092661074d565b90506000806109336121f8565b91509150600085118015610945575083155b1561102d576040805160028082526060820183526000926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106109ad57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610a0f57634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81526000917f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f90610a6e908690869060040161558b565b60006040518083038186803b158015610a8657600080fd5b505afa158015610a9a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ac2919081019061476d565b90506000610b14610b0483600181518110610aed57634e487b7160e01b600052603260045260246000fd5b602002602001015187612d9a90919063ffffffff16565b610b0e8a88612da6565b90612db2565b90506000610b2289836128f4565b9050610b596001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308c612dbe565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390610bc7907f0000000000000000000000000000000000000000000000000000000000000000908590600401614dae565b602060405180830381600087803b158015610be157600080fd5b505af1158015610bf5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c199190614827565b506040805160028082526060820183526000926020830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110610c7d57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110610cdf57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526040516338ed173960e01b81526000917f000000000000000000000000000000000000000000000000000000000000000016906338ed173990610d4490869085908790309042906004016155a4565b600060405180830381600087803b158015610d5e57600080fd5b505af1158015610d72573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d9a919081019061476d565b90506000610deb610dab868a612da6565b610de68b85600181518110610dd057634e487b7160e01b600052603260045260246000fd5b6020026020010151612da690919063ffffffff16565b612ddf565b905060008111610e0d5760405162461bcd60e51b815260040161058e9061519e565b610e266001610e208a610b0e85846128f4565b90612d9a565b9b50610e3b6001610e208b610b0e85846128f4565b9a50610e4d88610b0e8b81858f612da6565b9c508f8c1015610e6f5760405162461bcd60e51b815260040161058e90614ea5565b8e8b1015610e8f5760405162461bcd60e51b815260040161058e9061534e565b60008d11610eaf5760405162461bcd60e51b815260040161058e90614fcf565b6000610ebb868e6128f4565b1115610f0057610f008e610ecf878f6128f4565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190612900565b6000610f3d8c84600181518110610f2757634e487b7160e01b600052603260045260246000fd5b60200260200101516128f490919063ffffffff16565b1115610f9d57610f9d8e610f6c8d85600181518110610f2757634e487b7160e01b600052603260045260246000fd5b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169190612900565b610fa78e8e612df5565b8d6001600160a01b0316336001600160a01b03167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f68f8f8f604051610fee939291906155e0565b60405180910390a36007546110038b8f612d9a565b11156110215760405162461bcd60e51b815260040161058e90615466565b5050505050505061166d565b6040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061109057634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106110f257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260405163d06ca61f60e01b81526000917f0000000000000000000000000000000000000000000000000000000000000000169063d06ca61f90611151908790869060040161558b565b60006040518083038186803b15801561116957600080fd5b505afa15801561117d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526111a5919081019061476d565b905060006111f16111e7836001815181106111d057634e487b7160e01b600052603260045260246000fd5b602002602001015186612d9a90919063ffffffff16565b610b0e8987612da6565b905060006111ff88836128f4565b90506112366001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308b612dbe565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906112a4907f0000000000000000000000000000000000000000000000000000000000000000908590600401614dae565b602060405180830381600087803b1580156112be57600080fd5b505af11580156112d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112f69190614827565b506040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061135a57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106113bc57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526040516338ed173960e01b81526000917f000000000000000000000000000000000000000000000000000000000000000016906338ed17399061142190869085908790309042906004016155a4565b600060405180830381600087803b15801561143b57600080fd5b505af115801561144f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611477919081019061476d565b905060006114ad6114a38984600181518110610dd057634e487b7160e01b600052603260045260246000fd5b610de6878c612da6565b9050600081116114cf5760405162461bcd60e51b815260040161058e9061519e565b6114e26001610e208a610b0e85846128f4565b9b506114f76001610e208b610b0e85846128f4565b9a5061150988610b0e8b81858f612da6565b9c508f8c101561152b5760405162461bcd60e51b815260040161058e90614ea5565b8e8b101561154b5760405162461bcd60e51b815260040161058e9061534e565b60008d1161156b5760405162461bcd60e51b815260040161058e90614fcf565b60006115928d84600181518110610f2757634e487b7160e01b600052603260045260246000fd5b11156115c1576115c18e610ecf8e85600181518110610f2757634e487b7160e01b600052603260045260246000fd5b60006115cd868d6128f4565b11156115e1576115e18e610f6c878e6128f4565b6115eb8e8e612df5565b8d6001600160a01b0316336001600160a01b03167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f68f8f8f604051611632939291906155e0565b60405180910390a36007546116478b8f612d9a565b11156116655760405162461bcd60e51b815260040161058e90615466565b505050505050505b5050506117cd565b858210156116955760405162461bcd60e51b815260040161058e90614ea5565b848110156116b55760405162461bcd60e51b815260040161058e9061534e565b600083116116d55760405162461bcd60e51b815260040161058e90615289565b8115611710576117106001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085612dbe565b801561174b5761174b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084612dbe565b6117558484612df5565b836001600160a01b0316336001600160a01b03167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f685858560405161179c939291906155e0565b60405180910390a36007546117af61074d565b11156117cd5760405162461bcd60e51b815260040161058e90615466565b6001600581905550955095509592505050565b6000806117eb612956565b6001600160a01b038082166000908152600160209081526040808320938916835292905220549091506106da908290869061182790879061562d565b61295a565b6009546001600160a01b031633146118565760405162461bcd60e51b815260040161058e90615265565b600755565b6000611905600c547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016118af9190614cbd565b60206040518083038186803b1580156118c757600080fd5b505afa1580156118db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118ff9190614b40565b906128f4565b905090565b600a54600160d01b900460020b81565b6009546001600160a01b031681565b6000611905600b547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016118af9190614cbd565b6001600160a01b0381166000908152602081905260409020545b919050565b6009546001600160a01b031633146119c65760405162461bcd60e51b815260040161058e90615265565b620f424081106119e85760405162461bcd60e51b815260040161058e906151c4565b600655565b7f000000000000000000000000000000000000000000000000000000000000000081565b60026005541415611a345760405162461bcd60e51b815260040161058e906154d8565b60026005556008546001600160a01b03163314611a635760405162461bcd60e51b815260040161058e9061523f565b611a6d8686612ec1565b611a778484612ec1565b611a818282612ec1565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015611adc57600080fd5b505afa158015611af0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b149190614a92565b50505050509150508060020b8460020b1315611b425760405162461bcd60e51b815260040161058e906150aa565b8060020b8360020b13611b675760405162461bcd60e51b815260040161058e90615372565b600a54600090611b8c90600160a01b8104600290810b91600160b81b9004900b612fb6565b5050600a54929350600092611bb99250600160d01b8104600290810b9250600160e81b909104900b612fb6565b5050600a54929350611be592600160a01b8104600290810b9350600160b81b909104900b90508461307d565b5050600a54611c0d9250600160d01b8104600290810b9250600160e81b909104900b8361307d565b5050505050506000611c1d611929565b90506000611c2961185b565b90507f210f60adf1db7a02e9db9a49ec7c2eb2060c516cbcfd01a0c05288144738ee5d838383611c5761074d565b604051611c679493929190614e0f565b60405180910390a18a15611d46576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663128acb083060008e1380611cbc57611cb78f615775565b611cbe565b8e5b8e6040518563ffffffff1660e01b8152600401611cde9493929190614cf5565b6040805180830381600087803b158015611cf757600080fd5b505af1158015611d0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d2f91906148f0565b5050611d39611929565b9150611d4361185b565b90505b6000611d548a8a85856132c9565b9050611d618a8a8361338c565b600a805460028c810b62ffffff908116600160a01b0262ffffff60a01b19928e900b909116600160b81b0262ffffff60b81b199093169290921716179055611da7611929565b9250611db161185b565b91506000611dc1898986866132c9565b90506000611dd1888887876132c9565b9050806001600160801b0316826001600160801b03161115611e3b57611df88a8a8461338c565b600a805460028c810b62ffffff908116600160d01b0262ffffff60d01b19928e900b909116600160e81b026001600160e81b039093169290921716179055611e85565b611e4688888361338c565b600a805460028a810b62ffffff908116600160d01b0262ffffff60d01b19928c900b909116600160e81b026001600160e81b0390931692909217161790555b50506001600555505050505050505050505050565b600a54600160b81b900460020b81565b60606004805461063f906156e3565b600c5481565b600080611eca612956565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205490915083811015611f135760405162461bcd60e51b815260040161058e9061550f565b611f20828686840361295a565b506001949350505050565b600080611f36612956565b90506106da818585612a52565b6000806000806000611f558787612fb6565b9450945050509250611f688787856133ed565b6006549196509450600090611f8190620f4240906128f4565b9050611fa7611fa0620f4240610b0e6001600160801b03871685612da6565b8790612d9a565b9550611fcd611fc6620f4240610b0e6001600160801b03861685612da6565b8690612d9a565b9450505050509250929050565b6009546001600160a01b031633146120045760405162461bcd60e51b815260040161058e90615265565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b031633146120505760405162461bcd60e51b815260040161058e90615265565b60405163a34123a760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a34123a7906120a090869086908690600401614de9565b6040805180830381600087803b1580156120b957600080fd5b505af11580156120cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f191906148f0565b50506040516309e3d67b60e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634f1eb3d89061214e903090879087906001600160801b03908190600401614d71565b6040805180830381600087803b15801561216757600080fd5b505af115801561217b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f9190614a03565b5050505050565b60065481565b6009546001600160a01b031633146121d65760405162461bcd60e51b815260040161058e90615265565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600a5460009081908190819061222390600160a01b8104600290810b91600160b81b9004900b611f43565b600a549193509150600090819061224f90600160d01b8104600290810b91600160e81b9004900b611f43565b9150915061226382610e2086610e20611929565b955061227581610e2085610e2061185b565b9450505050509091565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146122fc57600080fd5b8315612336576123366001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163386612900565b8215612370576123706001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163385612900565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6009546001600160a01b031633146123c45760405162461bcd60e51b815260040161058e90615265565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561243857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b6124545760405162461bcd60e51b815260040161058e906151e9565b61062b6001600160a01b0384168284612900565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600080600260055414156124b95760405162461bcd60e51b815260040161058e906154d8565b6002600555876124db5760405162461bcd60e51b815260040161058e90615289565b6001600160a01b038516158015906124fc57506001600160a01b0385163014155b6125185760405162461bcd60e51b815260040161058e90614f0b565b600061252261074d565b905061252e338a6134b4565b61253889826135a5565b9093509150848015612548575083155b1561261857600061255a836001613660565b90506125668482612d9a565b9350888410156125885760405162461bcd60e51b815260040161058e90614ea5565b83156125c2576125c26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168886612900565b866001600160a01b0316336001600160a01b03167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f8c87600060405161260a939291906155e0565b60405180910390a3506127e9565b838015612623575084155b156126e5576000612635846000613660565b90506126418382612d9a565b9250878310156126635760405162461bcd60e51b815260040161058e9061534e565b821561269d5761269d6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168885612900565b866001600160a01b0316336001600160a01b03167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f8c60008760405161260a939291906155e0565b878310156127055760405162461bcd60e51b815260040161058e90614ea5565b868210156127255760405162461bcd60e51b815260040161058e9061534e565b821561275f5761275f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168785612900565b8115612799576127996001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168784612900565b856001600160a01b0316336001600160a01b03167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f8b86866040516127e0939291906155e0565b60405180910390a35b5060016005559097909650945050505050565b600b5481565b600a546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a54600160a01b900460020b81565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461287a57600080fd5b60008413156128b7576128b76001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163386612900565b6000831315612370576123706001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163385612900565b60006107ba82846156a0565b61062b8363a9059cbb60e01b848460405160240161291f929190614dae565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613b53565b3390565b6001600160a01b0383166129805760405162461bcd60e51b815260040161058e906153bf565b6001600160a01b0382166129a65760405162461bcd60e51b815260040161058e90614f56565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590612a01908590614dd2565b60405180910390a3505050565b6000612a1a8484612468565b905060001981146123705781811015612a455760405162461bcd60e51b815260040161058e90614ff6565b612370848484840361295a565b6001600160a01b038316612a785760405162461bcd60e51b815260040161058e90615309565b6001600160a01b038216612a9e5760405162461bcd60e51b815260040161058e90614e62565b612aa983838361062b565b6001600160a01b03831660009081526020819052604090205481811015612ae25760405162461bcd60e51b815260040161058e90615064565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290612b1990849061562d565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b639190614dd2565b60405180910390a361237084848461062b565b6000612b828383612fb6565b5050505090506000816001600160801b0316111561062b5760405163a34123a760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a34123a790612beb9086908690600090600401614de9565b6040805180830381600087803b158015612c0457600080fd5b505af1158015612c18573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061219f91906148f0565b600080600080612c4a61074d565b9050600080612c576121f8565b915091508260001480612c6a5750600082115b80612c755750600081115b612c8f57634e487b7160e01b600052600160045260246000fd5b82612cab57879450869350612ca48585613be2565b9550612d90565b81612cc157869350612ca481610b0e8686612da6565b80612cd757879450612ca482610b0e8786612da6565b6000881180612ce65750600087115b612d025760405162461bcd60e51b815260040161058e90615208565b6000612d1b612d118a84612da6565b610de68a86612da6565b905080612d315788955087945060009650612d8e565b60008111612d515760405162461bcd60e51b815260040161058e906152ea565b612d646001610e2084610b0e85846128f4565b9550612d796001610e2085610b0e85846128f4565b9450612d8b82610b0e85818589612da6565b96505b505b5050509250925092565b60006107ba828461562d565b60006107ba8284615659565b60006107ba8284615645565b612370846323b872dd60e01b85858560405160240161291f93929190614cd1565b6000818310612dee57816107ba565b5090919050565b6001600160a01b038216612e1b5760405162461bcd60e51b815260040161058e90615554565b612e276000838361062b565b8060026000828254612e39919061562d565b90915550506001600160a01b03821660009081526020819052604081208054839290612e6690849061562d565b90915550506040516001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612ea9908590614dd2565b60405180910390a3612ebd6000838361062b565b5050565b7f0000000000000000000000000000000000000000000000000000000000000000600282810b9084900b12612f085760405162461bcd60e51b815260040161058e90614f27565b620d89e719600284900b1215612f305760405162461bcd60e51b815260040161058e90615394565b612f3d620d89e719615754565b60020b8260020b1315612f625760405162461bcd60e51b815260040161058e90615403565b612f6c818461571e565b60020b15612f8c5760405162461bcd60e51b815260040161058e90614f98565b612f96818361571e565b60020b1561062b5760405162461bcd60e51b815260040161058e9061502d565b600080600080600080612fca308989613bf2565b60405163514ea4bf60e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063514ea4bf90613019908490600401614dd2565b60a06040518083038186803b15801561303157600080fd5b505afa158015613045573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130699190614a31565b939c929b5090995097509095509350505050565b60008080806001600160801b038516156131385760405163a34123a760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a34123a7906130e1908a908a908a90600401614de9565b6040805180830381600087803b1580156130fa57600080fd5b505af115801561310e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061313291906148f0565b90945092505b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634f1eb3d8308b8b6001600160801b03806040518663ffffffff1660e01b8152600401613196959493929190614d71565b6040805180830381600087803b1580156131af57600080fd5b505af11580156131c3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131e79190614a03565b6001600160801b03918216935016905061320182876128f4565b935061320d81866128f4565b6006549093506000908190801561327e5761322f620f4240610b0e8984612da6565b9250613242620f4240610b0e8884612da6565b915061324e87846128f4565b965061325a86836128f4565b600b5490965061326a9084612d9a565b600b55600c5461327a9083612d9a565b600c555b7f1ac56d7e866e3f5ea9aa92aa11758ead39a0a5f013f3fefb0f47cb9d008edd27878785856040516132b39493929190615604565b60405180910390a1505050505093509350935093565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561332557600080fd5b505afa158015613339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335d9190614a92565b50505050505090506133828161337288613c28565b61337b88613c28565b8787614002565b9695505050505050565b6001600160801b0381161561062b57604051633c8a7d8d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633c8a7d8d90612beb903090879087908790600401614d2f565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b15801561344b57600080fd5b505afa15801561345f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134839190614a92565b50505050505090506134a78161349888613c28565b6134a188613c28565b876140c6565b9250925050935093915050565b6001600160a01b0382166134da5760405162461bcd60e51b815260040161058e906152a9565b6134e68260008361062b565b6001600160a01b0382166000908152602081905260409020548181101561351f5760405162461bcd60e51b815260040161058e90614ec9565b6001600160a01b038316600090815260208190526040812083830390556002805484929061354e9084906156a0565b90915550506040516000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90613591908690614dd2565b60405180910390a361062b8360008461062b565b60008060006135c084610b0e876135ba611929565b90612da6565b905060006135d485610b0e886135ba61185b565b600a54909150600090819061360090600160a01b8104600290810b91600160b81b9004900b8a8a614162565b600a549193509150600090819061362e90600160d01b8104600290810b91600160e81b9004900b8c8c614162565b909250905061364182610e208887612d9a565b975061365181610e208786612d9a565b96505050505050509250929050565b600081156138dd5760405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906136d6907f0000000000000000000000000000000000000000000000000000000000000000908790600401614dae565b602060405180830381600087803b1580156136f057600080fd5b505af1158015613704573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137289190614827565b506040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061378c57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106137ee57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526040516338ed173960e01b81526000917f000000000000000000000000000000000000000000000000000000000000000016906338ed17399061385390889085908790309042906004016155a4565b600060405180830381600087803b15801561386d57600080fd5b505af1158015613881573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526138a9919081019061476d565b9050806001815181106138cc57634e487b7160e01b600052603260045260246000fd5b6020026020010151925050506106e0565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b39061394b907f0000000000000000000000000000000000000000000000000000000000000000908790600401614dae565b602060405180830381600087803b15801561396557600080fd5b505af1158015613979573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061399d9190614827565b506040805160028082526060820183526000926020830190803683370190505090507f000000000000000000000000000000000000000000000000000000000000000081600081518110613a0157634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110613a6357634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526040516338ed173960e01b81526000917f000000000000000000000000000000000000000000000000000000000000000016906338ed173990613ac890889085908790309042906004016155a4565b600060405180830381600087803b158015613ae257600080fd5b505af1158015613af6573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613b1e919081019061476d565b905080600181518110613b4157634e487b7160e01b600052603260045260246000fd5b60200260200101519250505092915050565b6000613ba8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166142089092919063ffffffff16565b80519091501561062b5780806020019051810190613bc69190614827565b61062b5760405162461bcd60e51b815260040161058e9061548e565b600081831015612dee57816107ba565b6000838383604051602001613c0993929190614c6c565b6040516020818303038152906040528051906020012090509392505050565b60008060008360020b12613c3f578260020b613c4c565b8260020b613c4c90615775565b9050600060018216613c6257600160801b613c74565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615613cb3576080613cae826ffff97272373d413259a46990580e213a615659565b901c90505b6004821615613cdd576080613cd8826ffff2e50f5f656932ef12357cf3c7fdcc615659565b901c90505b6008821615613d07576080613d02826fffe5caca7e10e4e61c3624eaa0941cd0615659565b901c90505b6010821615613d31576080613d2c826fffcb9843d60f6159c9db58835c926644615659565b901c90505b6020821615613d5b576080613d56826fff973b41fa98c081472e6896dfb254c0615659565b901c90505b6040821615613d85576080613d80826fff2ea16466c96a3843ec78b326b52861615659565b901c90505b6080821615613daf576080613daa826ffe5dee046a99a2a811c461f1969c3053615659565b901c90505b610100821615613dda576080613dd5826ffcbe86c7900a88aedcffc83b479aa3a4615659565b901c90505b610200821615613e05576080613e00826ff987a7253ac413176f2b074cf7815e54615659565b901c90505b610400821615613e30576080613e2b826ff3392b0822b70005940c7a398e4b70f3615659565b901c90505b610800821615613e5b576080613e56826fe7159475a2c29b7443b29c7fa6e889d9615659565b901c90505b611000821615613e86576080613e81826fd097f3bdfd2022b8845ad8f792aa5825615659565b901c90505b612000821615613eb1576080613eac826fa9f746462d870fdf8a65dc1f90e061e5615659565b901c90505b614000821615613edc576080613ed7826f70d869a156d2a1b890bb3df62baf32f7615659565b901c90505b618000821615613f07576080613f02826f31be135f97d08fd981231505542fcfa6615659565b901c90505b62010000821615613f33576080613f2e826f09aa508b5b7a84e1c677de54f3e99bc9615659565b901c90505b62020000821615613f5e576080613f59826e5d6af8dedb81196699c329225ee604615659565b901c90505b62040000821615613f88576080613f83826d2216e584f5fa1ea926041bedfe98615659565b901c90505b62080000821615613fb0576080613fab826b048a170391f7dc42444e8fa2615659565b901c90505b60008460020b1315613fcb57613fc881600019615645565b90505b613fda64010000000082615740565b15613fe6576001613fe9565b60005b613ffa9060ff16602083901c61562d565b949350505050565b6000836001600160a01b0316856001600160a01b03161115614022579293925b846001600160a01b0316866001600160a01b03161161404d57614046858585614217565b90506140bd565b836001600160a01b0316866001600160a01b031610156140af576000614074878686614217565b90506000614083878986614281565b9050806001600160801b0316826001600160801b0316106140a457806140a6565b815b925050506140bd565b6140ba858584614281565b90505b95945050505050565b600080836001600160a01b0316856001600160a01b031611156140e7579293925b846001600160a01b0316866001600160a01b0316116141125761410b8585856142b7565b9150614159565b836001600160a01b0316866001600160a01b0316101561414b576141378685856142b7565b915061414485878561432a565b9050614159565b61415685858561432a565b90505b94509492505050565b60008060006141718787612fb6565b505050509050600061419985610b0e88856001600160801b0316612da690919063ffffffff16565b905080156141fd576000806000806141ba8c8c6141b588614374565b61307d565b929650909450925090506141dc6141d58a610b0e858e612da6565b8590612d9a565b97506141f66141ef8a610b0e848e612da6565b8490612d9a565b9650505050505b505094509492505050565b6060613ffa848460008561439f565b6000826001600160a01b0316846001600160a01b03161115614237579192915b600061425a856001600160a01b0316856001600160a01b0316600160601b61445f565b90506140bd61427c848361426e8989615678565b6001600160a01b031661445f565b6145d5565b6000826001600160a01b0316846001600160a01b031611156142a1579192915b613ffa61427c83600160601b61426e8888615678565b6000826001600160a01b0316846001600160a01b031611156142d7579192915b6001600160a01b0384166143206fffffffffffffffffffffffffffffffff60601b606085901b166143088787615678565b6001600160a01b0316866001600160a01b031661445f565b613ffa9190615645565b6000826001600160a01b0316846001600160a01b0316111561434a579192915b613ffa6001600160801b0383166143618686615678565b6001600160a01b0316600160601b61445f565b60006001600160801b0382111561439b57634e487b7160e01b600052600160045260246000fd5b5090565b6060824710156143c15760405162461bcd60e51b815260040161058e906150cc565b6143ca856145eb565b6143e65760405162461bcd60e51b815260040161058e9061542f565b600080866001600160a01b031685876040516144029190614ca1565b60006040518083038185875af1925050503d806000811461443f576040519150601f19603f3d011682016040523d82523d6000602084013e614444565b606091505b509150915061445482828661461c565b979650505050505050565b6000808060001985870986860292508281109083900303905080614495576000841161448a57600080fd5b5082900490506107ba565b8084116144a157600080fd5b60008486880980840393811190920391905060006144c18619600161562d565b86169586900495938490049360008190030460010190506144e28184615659565b9093179260006144f3876003615659565b60021890506145028188615659565b61450d9060026156a0565b6145179082615659565b90506145238188615659565b61452e9060026156a0565b6145389082615659565b90506145448188615659565b61454f9060026156a0565b6145599082615659565b90506145658188615659565b6145709060026156a0565b61457a9082615659565b90506145868188615659565b6145919060026156a0565b61459b9082615659565b90506145a78188615659565b6145b29060026156a0565b6145bc9082615659565b90506145c88186615659565b9998505050505050505050565b806001600160801b038116811461199757600080fd5b600080826001600160a01b0316803b806020016040519081016040528181526000908060200190933c511192915050565b6060831561462b5750816107ba565b82511561463b5782518084602001fd5b8160405162461bcd60e51b815260040161058e9190614e2f565b60008083601f840112614666578182fd5b50813567ffffffffffffffff81111561467d578182fd5b60208301915083602082850101111561469557600080fd5b9250929050565b805161ffff8116811461199757600080fd5b6000602082840312156146bf578081fd5b81356107ba816157d1565b600080604083850312156146dc578081fd5b82356146e7816157d1565b915060208301356146f7816157d1565b809150509250929050565b600080600060608486031215614716578081fd5b8335614721816157d1565b92506020840135614731816157d1565b929592945050506040919091013590565b60008060408385031215614754578182fd5b823561475f816157d1565b946020939093013593505050565b6000602080838503121561477f578182fd5b825167ffffffffffffffff80821115614796578384fd5b818501915085601f8301126147a9578384fd5b8151818111156147bb576147bb6157bb565b838102604051858282010181811085821117156147da576147da6157bb565b604052828152858101935084860182860187018a10156147f8578788fd5b8795505b8386101561481a5780518552600195909501949386019386016147fc565b5098975050505050505050565b600060208284031215614838578081fd5b81516107ba816157e9565b600080600060608486031215614857578283fd5b8335614862816157d1565b9250602084013591506040840135614879816157d1565b809150509250925092565b60008060408385031215614896578182fd5b82356148a1816157f7565b915060208301356146f7816157f7565b6000806000606084860312156148c5578081fd5b83356148d0816157f7565b925060208401356148e0816157f7565b9150604084013561487981615806565b60008060408385031215614902578182fd5b505080516020909101519092909150565b60008060008060608587031215614928578182fd5b8435935060208501359250604085013567ffffffffffffffff81111561494c578283fd5b61495887828801614655565b95989497509550505050565b600080600080600080600080610100898b031215614980578586fd5b883597506020890135614992816157d1565b965060408901356149a2816157f7565b955060608901356149b2816157f7565b945060808901356149c2816157f7565b935060a08901356149d2816157f7565b925060c08901356149e2816157f7565b915060e08901356149f2816157f7565b809150509295985092959890939650565b60008060408385031215614a15578182fd5b8251614a2081615806565b60208401519092506146f781615806565b600080600080600060a08688031215614a48578283fd5b8551614a5381615806565b8095505060208601519350604086015192506060860151614a7381615806565b6080870151909250614a8481615806565b809150509295509295909350565b600080600080600080600060e0888a031215614aac578081fd5b8751614ab7816157d1565b6020890151909750614ac8816157f7565b9550614ad66040890161469c565b9450614ae46060890161469c565b9350614af26080890161469c565b925060a088015160ff81168114614b07578182fd5b60c0890151909250614b18816157e9565b8091505092959891949750929550565b600060208284031215614b39578081fd5b5035919050565b600060208284031215614b51578081fd5b5051919050565b600080600060608486031215614b6c578081fd5b83359250602084013591506040840135614879816157d1565b60008060008060008060c08789031215614b9d578384fd5b8635955060208701359450604087013593506060870135614bbd816157d1565b92506080870135614bcd816157e9565b915060a0870135614bdd816157e9565b809150509295509295509295565b600080600080600060a08688031215614c02578283fd5b853594506020860135935060408601359250606086013591506080860135614a84816157d1565b6000815180845260208085019450808401835b83811015614c615781516001600160a01b031687529582019590820190600101614c3c565b509495945050505050565b60609390931b6bffffffffffffffffffffffff19168352600291820b60e890811b6014850152910b901b6017820152601a0190565b60008251614cb38184602087016156b7565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03948516815292151560208401526040830191909152909116606082015260a06080820181905260009082015260c00190565b6001600160a01b03949094168452600292830b6020850152910b60408301526001600160801b0316606082015260a06080820181905260009082015260c00190565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b60029190910b815260200190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b60029490940b845260208401929092526040830152606082015260800190565b6000602082528251806020840152614e4e8160408501602087016156b7565b601f01601f19169190910160400192915050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252600a908201526930b6b7bab73a1826b4b760b11b604082015260600190565b60208082526022908201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604082015261636560f01b606082015260800190565b602080825260029082015261746f60f01b604082015260600190565b6020808252601590820152743a34b1b5a637bbb2b9101e103a34b1b5aab83832b960591b604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526017908201527f7469636b4c6f7765722025207469636b53706163696e67000000000000000000604082015260600190565b6020808252600d908201526c7377617070656453686172657360981b604082015260600190565b6020808252601d908201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604082015260600190565b60208082526017908201527f7469636b55707065722025207469636b53706163696e67000000000000000000604082015260600190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b6020808252600890820152673134b22ab83832b960c11b604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252818101527f616d6f756e743044657369726564206f7220616d6f756e743144657369726564604082015260600190565b60208082526011908201527070656e64696e67476f7665726e616e636560781b604082015260600190565b602080825260129082015271616d6f756e7430206f7220616d6f756e743160701b604082015260600190565b6020808252600c908201526b7377617070656443726f737360a01b604082015260600190565b6020808252600b908201526a70726f746f636f6c46656560a81b604082015260600190565b6020808252600590820152643a37b5b2b760d91b604082015260600190565b6020808252601b908201527f61746c65617374206f6e6520746f6b656e206973206e65656465640000000000604082015260600190565b6020808252600c908201526b29b430b93832a5b2b2b832b960a11b604082015260600190565b6020808252600a9082015269676f7665726e616e636560b01b604082015260600190565b60208082526006908201526573686172657360d01b604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526005908201526463726f737360d81b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252600a908201526930b6b7bab73a18a6b4b760b11b604082015260600190565b60208082526008908201526730b9b5a637bbb2b960c11b604082015260600190565b6020808252601190820152707469636b4c6f77657220746f6f206c6f7760781b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601290820152710e8d2c6d6aae0e0cae440e8dede40d0d2ced60731b604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252600e908201526d6d6178546f74616c537570706c7960901b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b600083825260406020830152613ffa6040830184614c29565b600086825285602083015260a060408301526155c360a0830186614c29565b6001600160a01b0394909416606083015250608001529392505050565b9283526020830191909152604082015260600190565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b60ff91909116815260200190565b600082198211156156405761564061578f565b500190565b600082615654576156546157a5565b500490565b60008160001904831182151516156156735761567361578f565b500290565b60006001600160a01b03838116908316818110156156985761569861578f565b039392505050565b6000828210156156b2576156b261578f565b500390565b60005b838110156156d25781810151838201526020016156ba565b838111156123705750506000910152565b6002810460018216806156f757607f821691505b6020821081141561571857634e487b7160e01b600052602260045260246000fd5b50919050565b60008260020b80615731576157316157a5565b808360020b0791505092915050565b60008261574f5761574f6157a5565b500690565b60008160020b627fffff1981141561576e5761576e61578f565b9003919050565b6000600160ff1b82141561578b5761578b61578f565b0390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146157e657600080fd5b50565b80151581146157e657600080fd5b8060020b81146157e657600080fd5b6001600160801b03811681146157e657600080fdfea2646970667358221220dafffb033fadf57015843630bc66b644f496b7c436d0bae8756cd2a0e2b16a9764736f6c63430008000033000000000000000000000000dac8a8e6dbf8c690ec6815e0ff03491b2770255d000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff0000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000012a05f200