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, uint256 swapMin, 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) 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
0x6101806040523480156200001257600080fd5b5060405162005a2338038062005a238339810160408190526200003591620004c9565b604080518082018252600681526553686172706560d01b6020808301918252835180850190945260048452630534852560e41b9084015281519192916200007f91600391620003e2565b50805162000095906004906020840190620003e2565b50506001600555506001600160601b0319606085811b821660805284901b1660a05260408051630dfe168160e01b815290516001600160a01b03861691630dfe1681916004808301926020929190829003018186803b158015620000f857600080fd5b505afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001339190620004a5565b6001600160a01b031660c0816001600160a01b031660601b81525050836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b1580156200018957600080fd5b505afa1580156200019e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c49190620004a5565b6001600160a01b031660e0816001600160a01b031660601b81525050836001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b1580156200021a57600080fd5b505afa1580156200022f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002559190620004a5565b6001600160a01b0316610120816001600160a01b031660601b81525050836001600160a01b031663d21220a76040518163ffffffff1660e01b815260040160206040518083038186803b158015620002ac57600080fd5b505afa158015620002c1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e79190620004a5565b6001600160601b0319606091821b8116610140529084901b1661016052604080516334324e9f60e21b815290516001600160a01b0386169163d0c93a7c916004808301926020929190829003018186803b1580156200034557600080fd5b505afa1580156200035a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000380919062000510565b600290810b900b60e81b6101005260068290556007819055600980546001600160a01b03191633179055620f42408210620003d85760405162461bcd60e51b8152600401620003cf9062000533565b60405180910390fd5b5050505062000595565b828054620003f09062000558565b90600052602060002090601f0160209004810192826200041457600085556200045f565b82601f106200042f57805160ff19168380011785556200045f565b828001600101855582156200045f579182015b828111156200045f57825182559160200191906001019062000442565b506200046d92915062000471565b5090565b5b808211156200046d576000815560010162000472565b80516001600160a01b0381168114620004a057600080fd5b919050565b600060208284031215620004b7578081fd5b620004c28262000488565b9392505050565b60008060008060808587031215620004df578283fd5b620004ea8562000488565b9350620004fa6020860162000488565b6040860151606090960151949790965092505050565b60006020828403121562000522578081fd5b81518060020b8114620004c2578182fd5b6020808252600b908201526a70726f746f636f6c46656560a81b604082015260600190565b6002810460018216806200056d57607f821691505b602082108114156200058f57634e487b7160e01b600052602260045260246000fd5b50919050565b60805160601c60a05160601c60c05160601c60e05160601c6101005160e81c6101205160601c6101405160601c6101605160601c6152886200079b600039600081816107cc015281816110e8015281816115980152818161323f01526134870152600081816111ea015281816116380152818161228b015281816132df01526135890152600081816109fd015281816111880152818161169a015281816133410152613527015260008181611e7c0152612722015260008181610604015281816108730152818161144b0152818161152c0152818161156b015281816118be015281816119e701528181611ea0015281816120d80152818161214c0152818161225c015281816123160152818161247701526132120152600081816105ca015281816106f5015281816109410152818161107c015281816110bb0152818161141101528181611884015281816119ac0152818161207a0152818161211201528181612222015281816122d90152818161243a015261345a01526000818161124e015281816116fe015281816123bd015281816133a601526135ee01526000818161072901528181610a9301528181610c8d01528181611c6201528181611d05015281816121e5015281816123fa01528181612843015281816129070152818161299c01528181612b2d01528181612c1101528181612cd80152612f9e01526152886000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c8063888a913411610167578063d0c93a7c116100ce578063dd62ed3e11610087578063dd62ed3e1461051e578063eae989a214610531578063f39c38a014610539578063f887ea4014610541578063fa08274314610549578063fa461e331461055157610295565b8063d0c93a7c146104cd578063d21220a7146104d5578063d331bef7146104dd578063d3487997146104f0578063d7cb416f14610503578063dc2c256f1461050b57610295565b8063a91ef6eb11610120578063a91ef6eb14610463578063ab033ea914610484578063abbffcb914610497578063b0e21e8a146104aa578063b3a3d00c146104b2578063c4a7761e146104c557610295565b8063888a9134146104035780639130700e1461040b57806395d89b411461042d578063a00fa77f14610435578063a457c2d71461043d578063a9059cbb1461045057610295565b8063313ce5671161020b5780635aa6e675116101c45780635aa6e675146103b2578063629d9405146103ba57806370a08231146103c2578063787dce3d146103d55780637ff36fbe146103e857806387e5e083146103f057610295565b8063313ce5671461035f5780633268cc5614610374578063395093511461037c5780633f3e4c111461038f57806341aec538146103a257806351e87af7146103aa57610295565b80630f35bcac1161025d5780630f35bcac1461030a57806316f0115b1461031f57806318160ddd14610327578063238efcbc1461033c57806323b872dd146103445780632ab4d0521461035757610295565b80630430c1301461029a57806306fdde03146102af578063095ea7b3146102cd5780630c42383a146102ed5780630dfe168114610302575b600080fd5b6102ad6102a83660046145ec565b610564565b005b6102b7610630565b6040516102c491906148b3565b60405180910390f35b6102e06102db3660046141dd565b6106c2565b6040516102c4919061484b565b6102f56106e4565b6040516102c49190614741565b6102f56106f3565b610312610717565b6040516102c4919061485f565b6102f5610727565b61032f61074b565b6040516102c49190614856565b6102ad610751565b6102e061035236600461419d565b61078f565b61032f6107bf565b6103676107c5565b6040516102c49190615064565b6102f56107ca565b6102e061038a3660046141dd565b6107ee565b6102ad61039d3660046145bc565b61083a565b61032f610869565b610312610918565b6102f5610928565b61032f610937565b61032f6103d0366004614149565b61098b565b6102ad6103e33660046145bc565b6109aa565b6102f56109fb565b6102ad6103fe3660046143fd565b610a1f565b610312610ea8565b61041e610419366004614659565b610eb8565b6040516102c493929190615033565b6102b7611aa5565b61032f611ab4565b6102e061044b3660046141dd565b611aba565b6102e061045e3660046141dd565b611b26565b61047661047136600461431d565b611b3e565b6040516102c4929190615025565b6102ad610492366004614149565b611bd5565b6102ad6104a536600461434a565b611c21565b61032f611da1565b6102ad6104c0366004614149565b611da7565b610476611df3565b610312611e7a565b6102f5611e9e565b6104766104eb366004614619565b611ec2565b6102ad6104fe3660046143ac565b6121da565b6102f5612289565b6102ad6105193660046142dc565b6122ad565b61032f61052c366004614165565b61237b565b61032f6123a6565b6102f56123ac565b6102f56123bb565b6103126123df565b6102ad61055f3660046143ac565b6123ef565b6009546001600160a01b031633146105975760405162461bcd60e51b815260040161058e90614cc3565b60405180910390fd5b600b546105a4908461249e565b600b55600c546105b4908361249e565b600c5582156105f1576105f16001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682856124aa565b811561062b5761062b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001682846124aa565b505050565b60606003805461063f90615128565b80601f016020809104026020016040519081016040528092919081815260200182805461066b90615128565b80156106b85780601f1061068d576101008083540402835291602001916106b8565b820191906000526020600020905b81548152906001019060200180831161069b57829003601f168201915b5050505050905090565b6000806106cd612500565b90506106da818585612504565b5060019392505050565b6008546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a54600160e81b900460020b81565b7f000000000000000000000000000000000000000000000000000000000000000081565b60025490565b600a546001600160a01b0316331461077b5760405162461bcd60e51b815260040161058e90614bcb565b600980546001600160a01b03191633179055565b60008061079a612500565b90506107a78582856125b8565b6107b28585856125fc565b60019150505b9392505050565b60075481565b601290565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000806107f9612500565b6001600160a01b038082166000908152600160209081526040808320938916835292905220549091506106da9082908690610835908790615072565b612504565b6009546001600160a01b031633146108645760405162461bcd60e51b815260040161058e90614cc3565b600755565b6000610913600c547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016108bd9190614741565b60206040518083038186803b1580156108d557600080fd5b505afa1580156108e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061090d91906145d4565b9061249e565b905090565b600a54600160d01b900460020b81565b6009546001600160a01b031681565b6000610913600b547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016108bd9190614741565b6001600160a01b0381166000908152602081905260409020545b919050565b6009546001600160a01b031633146109d45760405162461bcd60e51b815260040161058e90614cc3565b620f424081106109f65760405162461bcd60e51b815260040161058e90614c22565b600655565b7f000000000000000000000000000000000000000000000000000000000000000081565b60026005541415610a425760405162461bcd60e51b815260040161058e90614f36565b60026005556008546001600160a01b03163314610a715760405162461bcd60e51b815260040161058e90614c9d565b610a7b8686612720565b610a858484612720565b610a8f8282612720565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015610aea57600080fd5b505afa158015610afe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b22919061452b565b50505050509150508060020b8460020b1315610b505760405162461bcd60e51b815260040161058e90614b2e565b8060020b8360020b13610b755760405162461bcd60e51b815260040161058e90614dd0565b600a54600090610b9a90600160a01b8104600290810b91600160b81b9004900b612815565b5050600a54929350600092610bc79250600160d01b8104600290810b9250600160e81b909104900b612815565b5050600a54929350610bf392600160a01b8104600290810b9350600160b81b909104900b9050846128dc565b5050600a54610c1b9250600160d01b8104600290810b9250600160e81b909104900b836128dc565b5050505050506000610c2b610937565b90506000610c37610869565b90507f210f60adf1db7a02e9db9a49ec7c2eb2060c516cbcfd01a0c05288144738ee5d838383610c6561074b565b604051610c759493929190614893565b60405180910390a18a15610d54576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663128acb083060008e1380610cca57610cc58f6151ba565b610ccc565b8e5b8e6040518563ffffffff1660e01b8152600401610cec9493929190614779565b6040805180830381600087803b158015610d0557600080fd5b505af1158015610d19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3d9190614389565b5050610d47610937565b9150610d51610869565b90505b6000610d628a8a8585612b28565b9050610d6f8a8a83612beb565b600a805460028c810b62ffffff908116600160a01b0262ffffff60a01b19928e900b909116600160b81b0262ffffff60b81b199093169290921716179055610db5610937565b9250610dbf610869565b91506000610dcf89898686612b28565b90506000610ddf88888787612b28565b9050806001600160801b0316826001600160801b03161115610e4957610e068a8a84612beb565b600a805460028c810b62ffffff908116600160d01b0262ffffff60d01b19928e900b909116600160e81b026001600160e81b039093169290921716179055610e93565b610e54888883612beb565b600a805460028a810b62ffffff908116600160d01b0262ffffff60d01b19928c900b909116600160e81b026001600160e81b0390931692909217161790555b50506001600555505050505050505050505050565b600a54600160b81b900460020b81565b600080600060026005541415610ee05760405162461bcd60e51b815260040161058e90614f36565b600260055588151580610ef35750600088115b610f0f5760405162461bcd60e51b815260040161058e90614b96565b6001600160a01b03841615801590610f3057506001600160a01b0384163014155b610f4c5760405162461bcd60e51b815260040161058e9061498f565b600a54610f6e90600160a01b8104600290810b91600160b81b9004900b612c9d565b600a54610f9090600160d01b8104600290810b91600160e81b9004900b612c9d565b610f9a8989612d12565b9194509250905086821015610fc15760405162461bcd60e51b815260040161058e90614929565b85811015610fe15760405162461bcd60e51b815260040161058e90614dac565b8261197957600082118015610ff4575080155b806110085750600081118015611008575081155b6110245760405162461bcd60e51b815260040161058e90614bf6565b600061102e61074b565b905060008061103b611df3565b9150915060008511801561104d575083155b1561150257600061105f866002612e70565b9050600061106d878361249e565b90506110a46001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633308a612e7c565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390611112907f0000000000000000000000000000000000000000000000000000000000000000908590600401614832565b602060405180830381600087803b15801561112c57600080fd5b505af1158015611140573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061116491906142c2565b506040805160028082526060820183526000926020830190803683370190505090507f0000000000000000000000000000000000000000000000000000000000000000816000815181106111c857634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061122a57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166338ed1739848e8530426040518663ffffffff1660e01b81526004016112a0959493929190614fe9565b600060405180830381600087803b1580156112ba57600080fd5b505af11580156112ce573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526112f69190810190614208565b905060006113476113078688612e9d565b611342898560018151811061132c57634e487b7160e01b600052603260045260246000fd5b6020026020010151612e9d90919063ffffffff16565b612ea9565b905061136860016113628861135c858461249e565b90612e70565b90612ebf565b995061137d60016113628961135c858461249e565b985061138f8661135c8981858d612e9d565b9a5060008b116113b15760405162461bcd60e51b815260040161058e90614a53565b60006113bd868c61249e565b905060006113fc8b856001815181106113e657634e487b7160e01b600052603260045260246000fd5b602002602001015161249e90919063ffffffff16565b90508115611438576114386001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168f846124aa565b8015611472576114726001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168f836124aa565b61147c8e8e612ecb565b8d6001600160a01b0316336001600160a01b03167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f68f8f8f6040516114c393929190615033565b60405180910390a36007546114d88b8f612ebf565b11156114f65760405162461bcd60e51b815260040161058e90614ec4565b50505050505050611971565b600061150f856002612e70565b9050600061151d868361249e565b90506115546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333089612e7c565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906115c2907f0000000000000000000000000000000000000000000000000000000000000000908590600401614832565b602060405180830381600087803b1580156115dc57600080fd5b505af11580156115f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161491906142c2565b506040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061167857634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106116da57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b03168152505060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166338ed1739848e8530426040518663ffffffff1660e01b8152600401611750959493929190614fe9565b600060405180830381600087803b15801561176a57600080fd5b505af115801561177e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526117a69190810190614208565b905060006117dc6117d2878460018151811061132c57634e487b7160e01b600052603260045260246000fd5b611342878a612e9d565b90506117f160016113628861135c858461249e565b995061180660016113628961135c858461249e565b98506118188661135c8981858d612e9d565b9a5060008b1161183a5760405162461bcd60e51b815260040161058e90614a53565b60006118618b846001815181106113e657634e487b7160e01b600052603260045260246000fd5b9050600061186f878c61249e565b905081156118ab576118ab6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168f846124aa565b80156118e5576118e56001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168f836124aa565b6118ef8e8e612ecb565b8d6001600160a01b0316336001600160a01b03167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f68f8f8f60405161193693929190615033565b60405180910390a360075461194b8b8f612ebf565b11156119695760405162461bcd60e51b815260040161058e90614ec4565b505050505050505b505050611a91565b600083116119995760405162461bcd60e51b815260040161058e90614ce7565b81156119d4576119d46001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085612e7c565b8015611a0f57611a0f6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084612e7c565b611a198484612ecb565b836001600160a01b0316336001600160a01b03167f4e2ca0515ed1aef1395f66b5303bb5d6f1bf9d61a353fa53f73f8ac9973fa9f6858585604051611a6093929190615033565b60405180910390a3600754611a7361074b565b1115611a915760405162461bcd60e51b815260040161058e90614ec4565b600160058190555096509650969350505050565b60606004805461063f90615128565b600c5481565b600080611ac5612500565b6001600160a01b0380821660009081526001602090815260408083209389168352929052205490915083811015611b0e5760405162461bcd60e51b815260040161058e90614f6d565b611b1b8286868403612504565b506001949350505050565b600080611b31612500565b90506106da8185856125fc565b6000806000806000611b508787612815565b9450945050509250611b63878785612f97565b6006549196509450600090611b7c90620f42409061249e565b9050611ba2611b9b620f424061135c6001600160801b03871685612e9d565b8790612ebf565b9550611bc8611bc1620f424061135c6001600160801b03861685612e9d565b8690612ebf565b9450505050509250929050565b6009546001600160a01b03163314611bff5760405162461bcd60e51b815260040161058e90614cc3565b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b6009546001600160a01b03163314611c4b5760405162461bcd60e51b815260040161058e90614cc3565b60405163a34123a760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a34123a790611c9b9086908690869060040161486d565b6040805180830381600087803b158015611cb457600080fd5b505af1158015611cc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cec9190614389565b50506040516309e3d67b60e31b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690634f1eb3d890611d49903090879087906001600160801b039081906004016147f5565b6040805180830381600087803b158015611d6257600080fd5b505af1158015611d76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9a919061449c565b5050505050565b60065481565b6009546001600160a01b03163314611dd15760405162461bcd60e51b815260040161058e90614cc3565b600880546001600160a01b0319166001600160a01b0392909216919091179055565b600a54600090819081908190611e1e90600160a01b8104600290810b91600160b81b9004900b611b3e565b600a5491935091506000908190611e4a90600160d01b8104600290810b91600160e81b9004900b611b3e565b91509150611e5e8261136286611362610937565b9550611e708161136285611362610869565b9450505050509091565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060026005541415611ee85760405162461bcd60e51b815260040161058e90614f36565b600260055585611f0a5760405162461bcd60e51b815260040161058e90614ce7565b6001600160a01b03831615801590611f2b57506001600160a01b0383163014155b611f475760405162461bcd60e51b815260040161058e9061498f565b6000611f5161074b565b9050611f5d338861305e565b6000611f758261135c8a611f6f610937565b90612e9d565b90506000611f898361135c8b611f6f610869565b600a549091506000908190611fb590600160a01b8104600290810b91600160b81b9004900b8d8861314f565b600a5491935091506000908190611fe390600160d01b8104600290810b91600160e81b9004900b8f8a61314f565b9092509050611ff6826113628887612ebf565b9850612006816113628786612ebf565b97508b8910156120285760405162461bcd60e51b815260040161058e90614929565b8a8810156120485760405162461bcd60e51b815260040161058e90614dac565b60008c11801561205657508a155b156120a6576120678860018c6131f5565b88156120a1576120a16001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168b8b6124aa565b612173565b60008b1180156120b457508b155b156120ff576120c58960008c6131f5565b87156120a1576120a16001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168b8a6124aa565b8815612139576121396001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168b8b6124aa565b8715612173576121736001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168b8a6124aa565b896001600160a01b0316336001600160a01b03167febff2602b3f468259e1e99f613fed6691f3a6526effe6ef3e768ba7ae7a36c4f8f8c8c6040516121ba93929190615033565b60405180910390a350505050505050600160058190555094509492505050565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461220f57600080fd5b8315612249576122496001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633866124aa565b8215612283576122836001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633856124aa565b50505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6009546001600160a01b031633146122d75760405162461bcd60e51b815260040161058e90614cc3565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b03161415801561234b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b031614155b6123675760405162461bcd60e51b815260040161058e90614c47565b61062b6001600160a01b03841682846124aa565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600b5481565b600a546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600a54600160a01b900460020b81565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461242457600080fd5b6000841315612461576124616001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633866124aa565b6000831315612283576122836001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633856124aa565b60006107b882846150e5565b61062b8363a9059cbb60e01b84846040516024016124c9929190614832565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152613684565b3390565b6001600160a01b03831661252a5760405162461bcd60e51b815260040161058e90614e1d565b6001600160a01b0382166125505760405162461bcd60e51b815260040161058e906149da565b6001600160a01b0380841660008181526001602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906125ab908590614856565b60405180910390a3505050565b60006125c4848461237b565b9050600019811461228357818110156125ef5760405162461bcd60e51b815260040161058e90614a7a565b6122838484848403612504565b6001600160a01b0383166126225760405162461bcd60e51b815260040161058e90614d67565b6001600160a01b0382166126485760405162461bcd60e51b815260040161058e906148e6565b61265383838361062b565b6001600160a01b0383166000908152602081905260409020548181101561268c5760405162461bcd60e51b815260040161058e90614ae8565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906126c3908490615072565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161270d9190614856565b60405180910390a361228384848461062b565b7f0000000000000000000000000000000000000000000000000000000000000000600282810b9084900b126127675760405162461bcd60e51b815260040161058e906149ab565b620d89e719600284900b121561278f5760405162461bcd60e51b815260040161058e90614df2565b61279c620d89e719615199565b60020b8260020b13156127c15760405162461bcd60e51b815260040161058e90614e61565b6127cb8184615163565b60020b156127eb5760405162461bcd60e51b815260040161058e90614a1c565b6127f58183615163565b60020b1561062b5760405162461bcd60e51b815260040161058e90614ab1565b600080600080600080612829308989613713565b60405163514ea4bf60e01b81529091506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063514ea4bf90612878908490600401614856565b60a06040518083038186803b15801561289057600080fd5b505afa1580156128a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128c891906144ca565b939c929b5090995097509095509350505050565b60008080806001600160801b038516156129975760405163a34123a760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a34123a790612940908a908a908a9060040161486d565b6040805180830381600087803b15801561295957600080fd5b505af115801561296d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129919190614389565b90945092505b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316634f1eb3d8308b8b6001600160801b03806040518663ffffffff1660e01b81526004016129f59594939291906147f5565b6040805180830381600087803b158015612a0e57600080fd5b505af1158015612a22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a46919061449c565b6001600160801b039182169350169050612a60828761249e565b9350612a6c818661249e565b60065490935060009081908015612add57612a8e620f424061135c8984612e9d565b9250612aa1620f424061135c8884612e9d565b9150612aad878461249e565b9650612ab9868361249e565b600b54909650612ac99084612ebf565b600b55600c54612ad99083612ebf565b600c555b7f1ac56d7e866e3f5ea9aa92aa11758ead39a0a5f013f3fefb0f47cb9d008edd2787878585604051612b129493929190615049565b60405180910390a1505050505093509350935093565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015612b8457600080fd5b505afa158015612b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bbc919061452b565b5050505050509050612be181612bd188613749565b612bda88613749565b8787613b23565b9695505050505050565b6001600160801b0381161561062b57604051633c8a7d8d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633c8a7d8d90612c4c9030908790879087906004016147b3565b6040805180830381600087803b158015612c6557600080fd5b505af1158015612c79573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9a9190614389565b6000612ca98383612815565b5050505090506000816001600160801b0316111561062b5760405163a34123a760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a34123a790612c4c908690869060009060040161486d565b600080600080612d2061074b565b9050600080612d2d611df3565b915091508260001480612d405750600082115b80612d4b5750600081115b612d6557634e487b7160e01b600052600160045260246000fd5b82612d8157879450869350612d7a8585613be7565b9550612e66565b81612d9757869350612d7a8161135c8686612e9d565b80612dad57879450612d7a8261135c8786612e9d565b6000881180612dbc5750600087115b612dd85760405162461bcd60e51b815260040161058e90614c66565b6000612df1612de78a84612e9d565b6113428a86612e9d565b905080612e075788955087945060009650612e64565b60008111612e275760405162461bcd60e51b815260040161058e90614d48565b612e3a60016113628461135c858461249e565b9550612e4f60016113628561135c858461249e565b9450612e618261135c85818589612e9d565b96505b505b5050509250925092565b60006107b8828461508a565b612283846323b872dd60e01b8585856040516024016124c993929190614755565b60006107b8828461509e565b6000818310612eb857816107b8565b5090919050565b60006107b88284615072565b6001600160a01b038216612ef15760405162461bcd60e51b815260040161058e90614fb2565b612efd6000838361062b565b8060026000828254612f0f9190615072565b90915550506001600160a01b03821660009081526020819052604081208054839290612f3c908490615072565b90915550506040516001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90612f7f908590614856565b60405180910390a3612f936000838361062b565b5050565b60008060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160e06040518083038186803b158015612ff557600080fd5b505afa158015613009573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061302d919061452b565b50505050505090506130518161304288613749565b61304b88613749565b87613bf7565b9250925050935093915050565b6001600160a01b0382166130845760405162461bcd60e51b815260040161058e90614d07565b6130908260008361062b565b6001600160a01b038216600090815260208190526040902054818110156130c95760405162461bcd60e51b815260040161058e9061494d565b6001600160a01b03831660009081526020819052604081208383039055600280548492906130f89084906150e5565b90915550506040516000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061313b908690614856565b60405180910390a361062b8360008461062b565b600080600061315e8787612815565b50505050905060006131868561135c88856001600160801b0316612e9d90919063ffffffff16565b905080156131ea576000806000806131a78c8c6131a288613c93565b6128dc565b929650909450925090506131c96131c28a61135c858e612e9d565b8590612ebf565b97506131e36131dc8a61135c848e612e9d565b8490612ebf565b9650505050505b505094509492505050565b81156134435760405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b390613269907f0000000000000000000000000000000000000000000000000000000000000000908790600401614832565b602060405180830381600087803b15801561328357600080fd5b505af1158015613297573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906132bb91906142c2565b506040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061331f57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061338157634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526040516338ed173960e01b81527f0000000000000000000000000000000000000000000000000000000000000000909116906338ed1739906133e6908790600090869088904290600401614fe9565b600060405180830381600087803b15801561340057600080fd5b505af1158015613414573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261343c9190810190614208565b505061062b565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906134b1907f0000000000000000000000000000000000000000000000000000000000000000908790600401614832565b602060405180830381600087803b1580156134cb57600080fd5b505af11580156134df573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061350391906142c2565b506040805160028082526060820183526000926020830190803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061356757634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b0316815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106135c957634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526040516338ed173960e01b81527f0000000000000000000000000000000000000000000000000000000000000000909116906338ed17399061362e908790600090869088904290600401614fe9565b600060405180830381600087803b15801561364857600080fd5b505af115801561365c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611d9a9190810190614208565b60006136d9826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316613cbe9092919063ffffffff16565b80519091501561062b57808060200190518101906136f791906142c2565b61062b5760405162461bcd60e51b815260040161058e90614eec565b600083838360405160200161372a939291906146f0565b6040516020818303038152906040528051906020012090509392505050565b60008060008360020b12613760578260020b61376d565b8260020b61376d906151ba565b905060006001821661378357600160801b613795565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff16905060028216156137d45760806137cf826ffff97272373d413259a46990580e213a61509e565b901c90505b60048216156137fe5760806137f9826ffff2e50f5f656932ef12357cf3c7fdcc61509e565b901c90505b6008821615613828576080613823826fffe5caca7e10e4e61c3624eaa0941cd061509e565b901c90505b601082161561385257608061384d826fffcb9843d60f6159c9db58835c92664461509e565b901c90505b602082161561387c576080613877826fff973b41fa98c081472e6896dfb254c061509e565b901c90505b60408216156138a65760806138a1826fff2ea16466c96a3843ec78b326b5286161509e565b901c90505b60808216156138d05760806138cb826ffe5dee046a99a2a811c461f1969c305361509e565b901c90505b6101008216156138fb5760806138f6826ffcbe86c7900a88aedcffc83b479aa3a461509e565b901c90505b610200821615613926576080613921826ff987a7253ac413176f2b074cf7815e5461509e565b901c90505b61040082161561395157608061394c826ff3392b0822b70005940c7a398e4b70f361509e565b901c90505b61080082161561397c576080613977826fe7159475a2c29b7443b29c7fa6e889d961509e565b901c90505b6110008216156139a75760806139a2826fd097f3bdfd2022b8845ad8f792aa582561509e565b901c90505b6120008216156139d25760806139cd826fa9f746462d870fdf8a65dc1f90e061e561509e565b901c90505b6140008216156139fd5760806139f8826f70d869a156d2a1b890bb3df62baf32f761509e565b901c90505b618000821615613a28576080613a23826f31be135f97d08fd981231505542fcfa661509e565b901c90505b62010000821615613a54576080613a4f826f09aa508b5b7a84e1c677de54f3e99bc961509e565b901c90505b62020000821615613a7f576080613a7a826e5d6af8dedb81196699c329225ee60461509e565b901c90505b62040000821615613aa9576080613aa4826d2216e584f5fa1ea926041bedfe9861509e565b901c90505b62080000821615613ad1576080613acc826b048a170391f7dc42444e8fa261509e565b901c90505b60008460020b1315613aec57613ae98160001961508a565b90505b613afb64010000000082615185565b15613b07576001613b0a565b60005b613b1b9060ff16602083901c615072565b949350505050565b6000836001600160a01b0316856001600160a01b03161115613b43579293925b846001600160a01b0316866001600160a01b031611613b6e57613b67858585613ccd565b9050613bde565b836001600160a01b0316866001600160a01b03161015613bd0576000613b95878686613ccd565b90506000613ba4878986613d37565b9050806001600160801b0316826001600160801b031610613bc55780613bc7565b815b92505050613bde565b613bdb858584613d37565b90505b95945050505050565b600081831015612eb857816107b8565b600080836001600160a01b0316856001600160a01b03161115613c18579293925b846001600160a01b0316866001600160a01b031611613c4357613c3c858585613d6d565b9150613c8a565b836001600160a01b0316866001600160a01b03161015613c7c57613c68868585613d6d565b9150613c75858785613de0565b9050613c8a565b613c87858585613de0565b90505b94509492505050565b60006001600160801b03821115613cba57634e487b7160e01b600052600160045260246000fd5b5090565b6060613b1b8484600085613e2a565b6000826001600160a01b0316846001600160a01b03161115613ced579192915b6000613d10856001600160a01b0316856001600160a01b0316600160601b613eea565b9050613bde613d328483613d2489896150bd565b6001600160a01b0316613eea565b614060565b6000826001600160a01b0316846001600160a01b03161115613d57579192915b613b1b613d3283600160601b613d2488886150bd565b6000826001600160a01b0316846001600160a01b03161115613d8d579192915b6001600160a01b038416613dd66fffffffffffffffffffffffffffffffff60601b606085901b16613dbe87876150bd565b6001600160a01b0316866001600160a01b0316613eea565b613b1b919061508a565b6000826001600160a01b0316846001600160a01b03161115613e00579192915b613b1b6001600160801b038316613e1786866150bd565b6001600160a01b0316600160601b613eea565b606082471015613e4c5760405162461bcd60e51b815260040161058e90614b50565b613e5585614076565b613e715760405162461bcd60e51b815260040161058e90614e8d565b600080866001600160a01b03168587604051613e8d9190614725565b60006040518083038185875af1925050503d8060008114613eca576040519150601f19603f3d011682016040523d82523d6000602084013e613ecf565b606091505b5091509150613edf8282866140a7565b979650505050505050565b6000808060001985870986860292508281109083900303905080613f205760008411613f1557600080fd5b5082900490506107b8565b808411613f2c57600080fd5b6000848688098084039381119092039190506000613f4c86196001615072565b8616958690049593849004936000819003046001019050613f6d818461509e565b909317926000613f7e87600361509e565b6002189050613f8d818861509e565b613f989060026150e5565b613fa2908261509e565b9050613fae818861509e565b613fb99060026150e5565b613fc3908261509e565b9050613fcf818861509e565b613fda9060026150e5565b613fe4908261509e565b9050613ff0818861509e565b613ffb9060026150e5565b614005908261509e565b9050614011818861509e565b61401c9060026150e5565b614026908261509e565b9050614032818861509e565b61403d9060026150e5565b614047908261509e565b9050614053818661509e565b9998505050505050505050565b806001600160801b03811681146109a557600080fd5b600080826001600160a01b0316803b806020016040519081016040528181526000908060200190933c511192915050565b606083156140b65750816107b8565b8251156140c65782518084602001fd5b8160405162461bcd60e51b815260040161058e91906148b3565b805180151581146109a557600080fd5b60008083601f840112614101578182fd5b50813567ffffffffffffffff811115614118578182fd5b60208301915083602082850101111561413057600080fd5b9250929050565b805161ffff811681146109a557600080fd5b60006020828403121561415a578081fd5b81356107b881615216565b60008060408385031215614177578081fd5b823561418281615216565b9150602083013561419281615216565b809150509250929050565b6000806000606084860312156141b1578081fd5b83356141bc81615216565b925060208401356141cc81615216565b929592945050506040919091013590565b600080604083850312156141ef578182fd5b82356141fa81615216565b946020939093013593505050565b6000602080838503121561421a578182fd5b825167ffffffffffffffff80821115614231578384fd5b818501915085601f830112614244578384fd5b81518181111561425657614256615200565b8381026040518582820101818110858211171561427557614275615200565b604052828152858101935084860182860187018a1015614293578788fd5b8795505b838610156142b5578051855260019590950194938601938601614297565b5098975050505050505050565b6000602082840312156142d3578081fd5b6107b8826140e0565b6000806000606084860312156142f0578283fd5b83356142fb81615216565b925060208401359150604084013561431281615216565b809150509250925092565b6000806040838503121561432f578182fd5b823561433a8161522e565b915060208301356141928161522e565b60008060006060848603121561435e578283fd5b83356143698161522e565b925060208401356143798161522e565b915060408401356143128161523d565b6000806040838503121561439b578182fd5b505080516020909101519092909150565b600080600080606085870312156143c1578182fd5b8435935060208501359250604085013567ffffffffffffffff8111156143e5578283fd5b6143f1878288016140f0565b95989497509550505050565b600080600080600080600080610100898b031215614419578586fd5b88359750602089013561442b81615216565b9650604089013561443b8161522e565b9550606089013561444b8161522e565b9450608089013561445b8161522e565b935060a089013561446b8161522e565b925060c089013561447b8161522e565b915060e089013561448b8161522e565b809150509295985092959890939650565b600080604083850312156144ae578182fd5b82516144b98161523d565b60208401519092506141928161523d565b600080600080600060a086880312156144e1578283fd5b85516144ec8161523d565b809550506020860151935060408601519250606086015161450c8161523d565b608087015190925061451d8161523d565b809150509295509295909350565b600080600080600080600060e0888a031215614545578081fd5b875161455081615216565b60208901519097506145618161522e565b955061456f60408901614137565b945061457d60608901614137565b935061458b60808901614137565b925060a088015160ff811681146145a0578182fd5b91506145ae60c089016140e0565b905092959891949750929550565b6000602082840312156145cd578081fd5b5035919050565b6000602082840312156145e5578081fd5b5051919050565b600080600060608486031215614600578081fd5b8335925060208401359150604084013561431281615216565b6000806000806080858703121561462e578182fd5b843593506020850135925060408501359150606085013561464e81615216565b939692955090935050565b60008060008060008060c08789031215614671578384fd5b863595506020870135945060408701359350606087013592506080870135915060a087013561469f81615216565b809150509295509295509295565b6000815180845260208085019450808401835b838110156146e55781516001600160a01b0316875295820195908201906001016146c0565b509495945050505050565b60609390931b6bffffffffffffffffffffffff19168352600291820b60e890811b6014850152910b901b6017820152601a0190565b600082516147378184602087016150fc565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03948516815292151560208401526040830191909152909116606082015260a06080820181905260009082015260c00190565b6001600160a01b03949094168452600292830b6020850152910b60408301526001600160801b0316606082015260a06080820181905260009082015260c00190565b6001600160a01b03959095168552600293840b60208601529190920b60408401526001600160801b03918216606084015216608082015260a00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b60029190910b815260200190565b600293840b81529190920b60208201526001600160801b03909116604082015260600190565b60029490940b845260208401929092526040830152606082015260800190565b60006020825282518060208401526148d28160408501602087016150fc565b601f01601f19169190910160400192915050565b60208082526023908201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252600a908201526930b6b7bab73a1826b4b760b11b604082015260600190565b60208082526022908201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604082015261636560f01b606082015260800190565b602080825260029082015261746f60f01b604082015260600190565b6020808252601590820152743a34b1b5a637bbb2b9101e103a34b1b5aab83832b960591b604082015260600190565b60208082526022908201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526017908201527f7469636b4c6f7765722025207469636b53706163696e67000000000000000000604082015260600190565b6020808252600d908201526c7377617070656453686172657360981b604082015260600190565b6020808252601d908201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604082015260600190565b60208082526017908201527f7469636b55707065722025207469636b53706163696e67000000000000000000604082015260600190565b60208082526026908201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604082015265616c616e636560d01b606082015260800190565b6020808252600890820152673134b22ab83832b960c11b604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6040820152651c8818d85b1b60d21b606082015260800190565b6020808252818101527f616d6f756e743044657369726564206f7220616d6f756e743144657369726564604082015260600190565b60208082526011908201527070656e64696e67476f7665726e616e636560781b604082015260600190565b602080825260129082015271616d6f756e7430206f7220616d6f756e743160701b604082015260600190565b6020808252600b908201526a70726f746f636f6c46656560a81b604082015260600190565b6020808252600590820152643a37b5b2b760d91b604082015260600190565b6020808252601b908201527f61746c65617374206f6e6520746f6b656e206973206e65656465640000000000604082015260600190565b6020808252600c908201526b29b430b93832a5b2b2b832b960a11b604082015260600190565b6020808252600a9082015269676f7665726e616e636560b01b604082015260600190565b60208082526006908201526573686172657360d01b604082015260600190565b60208082526021908201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526005908201526463726f737360d81b604082015260600190565b60208082526025908201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252600a908201526930b6b7bab73a18a6b4b760b11b604082015260600190565b60208082526008908201526730b9b5a637bbb2b960c11b604082015260600190565b6020808252601190820152707469636b4c6f77657220746f6f206c6f7760781b604082015260600190565b60208082526024908201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252601290820152710e8d2c6d6aae0e0cae440e8dede40d0d2ced60731b604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252600e908201526d6d6178546f74616c537570706c7960901b604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b60208082526025908201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604082015264207a65726f60d81b606082015260800190565b6020808252601f908201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604082015260600190565b600086825285602083015260a0604083015261500860a08301866146ad565b6001600160a01b0394909416606083015250608001529392505050565b918252602082015260400190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b60ff91909116815260200190565b60008219821115615085576150856151d4565b500190565b600082615099576150996151ea565b500490565b60008160001904831182151516156150b8576150b86151d4565b500290565b60006001600160a01b03838116908316818110156150dd576150dd6151d4565b039392505050565b6000828210156150f7576150f76151d4565b500390565b60005b838110156151175781810151838201526020016150ff565b838111156122835750506000910152565b60028104600182168061513c57607f821691505b6020821081141561515d57634e487b7160e01b600052602260045260246000fd5b50919050565b60008260020b80615176576151766151ea565b808360020b0791505092915050565b600082615194576151946151ea565b500690565b60008160020b627fffff198114156151b3576151b36151d4565b9003919050565b6000600160ff1b8214156151d0576151d06151d4565b0390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461522b57600080fd5b50565b8060020b811461522b57600080fd5b6001600160801b038116811461522b57600080fdfea26469706673582212206b1d8f5270268dd1c8d4bfbd905cc777eb7e87577667da0c1237eacd8937723564736f6c63430008000033000000000000000000000000dac8a8e6dbf8c690ec6815e0ff03491b2770255d000000000000000000000000a5e0829caced8ffdd4de3c43696c57f7d7a678ff0000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000012a05f200