0 txs
688 calls
constructor
No constructor.
functions
activeTickLiquidity
viewfunction activeTickLiquidity(address pool) view returns (uint256 sqrtPrice, uint256 liquidity, uint256 reserveA, uint256 reserveB)
getActiveBins
viewfunction getActiveBins(address pool, uint128 startBinIndex, uint128 endBinIndex) view returns (tuple[] bins)
getAddLiquidityParams
viewfunction getAddLiquidityParams(address pool, address poolPosition, uint256 lpTokenAmount) view returns (tuple[] addParams, uint256 binLpTokenAmount0)
getBinDepth
viewfunction getBinDepth(address pool, uint128 binId) view returns (uint256 depth)
getBinsAtTick
viewfunction getBinsAtTick(address pool, int32 tick) view returns (tuple[] bins)
getSqrtPrice
viewfunction getSqrtPrice(address pool) view returns (uint256 sqrtPrice)
swapCallback
purefunction swapCallback(uint256 amountIn, uint256 amountOut, bytes _data) pure
tickLiquidity
viewfunction tickLiquidity(address pool, int32 tick) view returns (uint256 sqrtPrice, uint256 liquidity, uint256 reserveA, uint256 reserveB)
calculateMultihopSwap
nonpayablefunction calculateMultihopSwap(bytes path, uint256 amount, bool exactOutput) returns (uint256 returnAmount)
calculateSwap
nonpayablefunction calculateSwap(address pool, uint128 amount, bool tokenAIn, bool exactOutput, uint256 sqrtPriceLimit) returns (uint256 returnAmount)
events
No events.
errors
PRBMath__MulDivFixedPointOverflow
error PRBMath__MulDivFixedPointOverflow(uint256 prod1)
PRBMath__MulDivOverflow
error PRBMath__MulDivOverflow(uint256 prod1, uint256 denominator)
PRBMathUD60x18__SqrtOverflow
error PRBMathUD60x18__SqrtOverflow(uint256 x)
creation bytecode
0x608060405234801561001057600080fd5b5061336c806100206000396000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806391c0914e11610076578063a3a5d06d1161005b578063a3a5d06d14610178578063d12e2bb2146101ab578063d388a5a6146101cb57600080fd5b806391c0914e14610150578063923b8a2a1461016357600080fd5b80632764cd0b116100a75780632764cd0b146100fc5780632d4c5a381461010f57806380a51b221461012f57600080fd5b8063136c7589146100c357806321f8ce41146100e9575b600080fd5b6100d66100d136600461270e565b6101de565b6040519081526020015b60405180910390f35b6100d66100f73660046127df565b610366565b6100d661010a3660046128b0565b610408565b61012261011d366004612914565b610597565b6040516100e0919061295f565b61014261013d3660046129f6565b610a20565b6040516100e0929190612a37565b6100d661015e366004612ac9565b610a3b565b610176610171366004612ae6565b610a50565b005b61018b610186366004612ac9565b610ae2565b6040805194855260208501939093529183015260608201526080016100e0565b6101be6101b9366004612b75565b610b76565b6040516100e09190612ba3565b61018b6101d9366004612b75565b610dc8565b6040517f44a185bb0000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff82166004820152600090819073ffffffffffffffffffffffffffffffffffffffff8516906344a185bb9060240160e060405180830381865afa15801561025f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102839190612c62565b90505b60608101516fffffffffffffffffffffffffffffffff161561035f57816102ac81612d45565b60608301516040517f44a185bb0000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8216600482015290955090935073ffffffffffffffffffffffffffffffffffffffff861691506344a185bb9060240160e060405180830381865afa158015610334573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103589190612c62565b9050610286565b5092915050565b60005b600061037485610f10565b9050600080600085156103975761038a88610f48565b90945090925090506103a8565b6103a088610f48565b919450925090505b73ffffffffffffffffffffffffffffffffffffffff808316908416106103d28289838a6000610408565b975084156103ea576103e389610f83565b98506103f7565b8795505050505050610401565b5050505050610369565b9392505050565b60008573ffffffffffffffffffffffffffffffffffffffff1663c51c9029308787878789604051602001610440911515815260200190565b6040516020818303038152906040526040518763ffffffff1660e01b815260040161047096959493929190612de1565b60408051808303816000875af19250505080156104c8575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526104c591810190612e4a565b60015b61058b576104d4612e6e565b806308c379a00361057f57506104e8612e8a565b806104f35750610581565b8051600003610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f496e76616c69642053776170000000000000000000000000000000000000000060448201526064015b60405180910390fd5b808060200190518101906105779190612f32565b91505061058e565b505b3d6000803e3d6000fd5b50505b95945050505050565b606060008473ffffffffffffffffffffffffffffffffffffffff16631865c57d6040518163ffffffff1660e01b8152600401608060405180830381865afa1580156105e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060a9190612f4b565b6040015190506fffffffffffffffffffffffffffffffff83161561065e57826fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1610610659578261065b565b805b90505b806fffffffffffffffffffffffffffffffff1667ffffffffffffffff81111561068957610689612747565b60405190808252806020026020018201604052801561070757816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816106a75790505b5091506000845b826fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1610156109d857600073ffffffffffffffffffffffffffffffffffffffff88166344a185bb610763846001612fde565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526fffffffffffffffffffffffffffffffff909116600482015260240160e060405180830381865afa1580156107c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107ec9190612c62565b90506107f9826001612fde565b60c082015160a08301516040517f83f9c63200000000000000000000000000000000000000000000000000000000815260039290920b600483015260ff1660248201526fffffffffffffffffffffffffffffffff919091169073ffffffffffffffffffffffffffffffffffffffff8a16906383f9c63290604401602060405180830381865afa158015610890573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b49190613007565b6fffffffffffffffffffffffffffffffff1614806108e7575060608101516fffffffffffffffffffffffffffffffff1615155b156109c5576040518060c001604052808360016109049190612fde565b6fffffffffffffffffffffffffffffffff1681526020018260a0015160ff1681526020018260c0015160030b815260200182600001516fffffffffffffffffffffffffffffffff16815260200182602001516fffffffffffffffffffffffffffffffff16815260200182606001516fffffffffffffffffffffffffffffffff1681525085846fffffffffffffffffffffffffffffffff16815181106109ab576109ab613024565b602002602001018190525082806109c190613053565b9350505b50806109d081613053565b91505061070e565b50816fffffffffffffffffffffffffffffffff16816fffffffffffffffffffffffffffffffff1614610a17576000610a108284613082565b8451038452505b50509392505050565b60606000610a2f858585610fb8565b90969095509350505050565b6000610a4682610ae2565b5091949350505050565b6000610a5e828401846130ab565b90508015610ad1576040805160208101879052015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a000000000000000000000000000000000000000000000000000000000825261055a916004016130c8565b604080516020810186905201610a73565b60008060008060008573ffffffffffffffffffffffffffffffffffffffff16631865c57d6040518163ffffffff1660e01b8152600401608060405180830381865afa158015610b35573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b599190612f4b565b519050610b668682610dc8565b9299919850965090945092505050565b60408051600480825260a082019092526060919081816020015b6040805160e08101825260008082526020808301829052928201819052606082018190526080820181905260a0820181905260c082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff909201910181610b9057905050915060005b600460ff82161015610db3576040517f83f9c632000000000000000000000000000000000000000000000000000000008152600385900b600482015260ff8216602482015260009073ffffffffffffffffffffffffffffffffffffffff8716906383f9c63290604401602060405180830381865afa158015610c82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca69190613007565b90506fffffffffffffffffffffffffffffffff811615610da0576040517f44a185bb0000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff8216600482015260009073ffffffffffffffffffffffffffffffffffffffff8816906344a185bb9060240160e060405180830381865afa158015610d3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d639190612c62565b90508085610d728660046130db565b60ff1681518110610d8557610d85613024565b60200260200101819052508380610d9b906130f4565b945050505b5080610dab8161312f565b915050610bfc565b5060ff81161561035f57815103815292915050565b60008060008060008673ffffffffffffffffffffffffffffffffffffffff1663d0c93a7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e3f9190612f32565b90506000610e4d8888610b76565b905060005b8151811015610ed5576000828281518110610e6f57610e6f613024565b6020026020010151905080600001516fffffffffffffffffffffffffffffffff1686610e9b919061314e565b955080602001516fffffffffffffffffffffffffffffffff1685610ebf919061314e565b9450508080610ecd90612d45565b915050610e52565b50610efe8484610ee5858b6118a3565b610ef986610ef48d6001613161565b6118a3565b611b9d565b90999098509396509194509192505050565b6000610f1d60148061314e565b6014610f29818061314e565b610f33919061314e565b610f3d919061314e565b825110159050919050565b60008080610f568482611c28565b9250610f63846014611c28565b9050610f7a610f7360148061314e565b8590611c28565b91509193909250565b6060610fb2610f9360148061314e565b610f9e60148061314e565b8451610faa91906131a3565b849190611d2c565b92915050565b60606000808473ffffffffffffffffffffffffffffffffffffffff1663b15a3bc66040518163ffffffff1660e01b8152600401600060405180830381865afa158015611008573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405261104e91908101906131b6565b905060008673ffffffffffffffffffffffffffffffffffffffff166344a185bb8360008151811061108157611081613024565b60200260200101516040518263ffffffff1660e01b81526004016110bd91906fffffffffffffffffffffffffffffffff91909116815260200190565b60e060405180830381865afa1580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190612c62565b905060008773ffffffffffffffffffffffffffffffffffffffff16633ab72c106040518163ffffffff1660e01b8152600401602060405180830381865afa15801561114d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111719190612f32565b905060008873ffffffffffffffffffffffffffffffffffffffff166321272d4c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156111c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111e49190612f32565b90508773ffffffffffffffffffffffffffffffffffffffff1663ef0def6a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112559190613269565b158015611277575060608301516fffffffffffffffffffffffffffffffff1615155b156112de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601c60248201527f42696e206973206d65726765643b206d69677261746520666972737400000000604482015260640161055a565b835167ffffffffffffffff8111156112f8576112f8612747565b60405190808252806020026020018201604052801561136f57816020015b6040805160a0810182526000808252602080830182905292820181905260608201819052608082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816113165790505b50955061150c878a73ffffffffffffffffffffffffffffffffffffffff16636da3bf8b8b73ffffffffffffffffffffffffffffffffffffffff166317d70f7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114019190612f32565b8860008151811061141457611414613024565b60200260200101516040518363ffffffff1660e01b81526004016114549291909182526fffffffffffffffffffffffffffffffff16602082015260400190565b602060405180830381865afa158015611471573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114959190612f32565b8a73ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156114e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115049190612f32565b60015b611f19565b61151790600161314e565b94508460005b8551811015611895578015611693578a73ffffffffffffffffffffffffffffffffffffffff166344a185bb87838151811061155a5761155a613024565b60200260200101516040518263ffffffff1660e01b815260040161159691906fffffffffffffffffffffffffffffffff91909116815260200190565b60e060405180830381865afa1580156115b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d79190612c62565b6040517f771dc86a000000000000000000000000000000000000000000000000000000008152600481018390529095506116909073ffffffffffffffffffffffffffffffffffffffff8c169063771dc86a90602401602060405180830381865afa158015611649573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061166d9190613007565b6fffffffffffffffffffffffffffffffff1688670de0b6b3a76400006001611f19565b91505b8451602086015160009182916fffffffffffffffffffffffffffffffff91821691168183036116e95760808901516116e290829088906fffffffffffffffffffffffffffffffff166001611f19565b92506117c6565b8060000361171e57608089015161171790839088906fffffffffffffffffffffffffffffffff166001611f19565b93506117c6565b61173b86670de0bfcbf5d6a000670de0b6b3a76400006001611f19565b61174690600161314e565b955061177782878b608001516fffffffffffffffffffffffffffffffff166001600281111561150757611507613286565b93506117b46117898286856001611f19565b60808b01516117af9084908a906fffffffffffffffffffffffffffffffff166001611f19565b611f78565b92506117c38284836001611f19565b93505b6040518060a001604052808a60a0015160ff1681526020018a60c0015160030b8152602001600015158152602001836000146118155761181061180b878c6001611f8f565b61204a565b611818565b60005b6fffffffffffffffffffffffffffffffff16815260200182156118495761184461180b868b6001611f8f565b61184c565b60005b6fffffffffffffffffffffffffffffffff168152508c868151811061187357611873613024565b602002602001018190525050505050808061188d90612d45565b91505061151d565b505050505050935093915050565b60008060008360030b126118ba578260030b6118c2565b8260030b6000035b8402905060006001821681036118e9577001000000000000000000000000000000006118fb565b6ffffcb933bd6fad9d3af5f0b9f25db4d65b70ffffffffffffffffffffffffffffffffff169050600282161561192f576ffff97272373d41fd789c8cb37ffcaa1c0260801c5b600482161561194e576ffff2e50f5f656ac9229c67059486f3890260801c5b600882161561196d576fffe5caca7e10e81259b3cddc7a0649410260801c5b601082161561198c576fffcb9843d60f67b19e8887e0bd251eb70260801c5b60208216156119ab576fff973b41fa98cd2e57b660be99eb2c4a0260801c5b60408216156119ca576fff2ea16466c9838804e327cb417cafcb0260801c5b60808216156119e9576ffe5dee046a99d51e2cc356c2f617dbe00260801c5b610100821615611a09576ffcbe86c7900aecf64236ab31f1f9dcb50260801c5b610200821615611a29576ff987a7253ac4d9194200696907cf2e370260801c5b610400821615611a49576ff3392b0822b88206f8abe8a3b44dd9be0260801c5b610800821615611a69576fe7159475a2c578ef4f1d17b2b235d4800260801c5b611000821615611a89576fd097f3bdfd254ee83bdd3f248e7e785e0260801c5b612000821615611aa9576fa9f746462d8f7dd10e744d913d0333330260801c5b614000821615611ac9576f70d869a156ddd32a39e257bc3f50aa9b0260801c5b618000821615611ae9576f31be135f97da6e09a19dc367e3b6da400260801c5b62010000821615611b0a576f09aa508b5b7e5a9780b0cc4e25d61a560260801c5b62020000821615611b2a576e5d6af8dedbcb3a6ccb7ce618d142250260801c5b62040000821615611b49576d2216e584f630389b2052b8db590e0260801c5b60008460030b1315611b8857807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81611b8457611b846132b5565b0490505b670de0b6b3a76400000260801c949350505050565b600080611bac868686866120f0565b905085600003611bbe57839150611c1f565b84600003611bce57829150611c1f565b611c07611c02611bde83866121f0565b611be8908861314e565b611bf28488612205565b611bfc908a61314e565b906121f0565b612211565b9150611c1c611c16838661227c565b8461228b565b91505b94509492505050565b600081611c3681601461314e565b1015611c9e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f746f416464726573735f6f766572666c6f770000000000000000000000000000604482015260640161055a565b611ca982601461314e565b83511015611d13576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f746f416464726573735f6f75744f66426f756e64730000000000000000000000604482015260640161055a565b5001602001516c01000000000000000000000000900490565b606081611d3a81601f61314e565b1015611da2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161055a565b82611dad838261314e565b1015611e15576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f736c6963655f6f766572666c6f77000000000000000000000000000000000000604482015260640161055a565b611e1f828461314e565b84511015611e89576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f736c6963655f6f75744f66426f756e6473000000000000000000000000000000604482015260640161055a565b606082158015611ea85760405191506000825260208201604052611f10565b6040519150601f8416801560200281840101858101878315602002848b0101015b81831015611ee1578051835260209283019201611ec9565b5050858452601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016604052505b50949350505050565b600080611f2786868661229a565b90506001836002811115611f3d57611f3d613286565b148015611f5a575060008480611f5557611f556132b5565b868809115b15611f6d57611f6a60018261314e565b90505b90505b949350505050565b600081831015611f885781610401565b5090919050565b60006001831480611f9e575083155b15611faa575082610401565b7f800000000000000000000000000000000000000000000000000000000000000083161561200557611ffe7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8416856132e4565b9050610401565b8180156120225750828061201b5761201b6132b5565b6001850915155b6120355761203083856132fb565b611ffe565b61203f83856132fb565b611ffe90600161314e565b60006fffffffffffffffffffffffffffffffff8211156120ec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203160448201527f3238206269747300000000000000000000000000000000000000000000000000606482015260840161055a565b5090565b600080603c86901c1580156121075750603c85901c155b156121185750602894851b9493841b935b851580612123575084155b1561216c5760006121348686612205565b61213e88866121f0565b612148919061314e565b905081612161828661215a89826131a3565b6000612367565b901c92505050611f70565b6000600161217a8787612205565b61218489876121f0565b61218e919061314e565b901c9050600061219e86866131a3565b9050826121e46121d16121bd6121b48b8d612205565b858a6000612367565b6121c78680612205565b611c02919061314e565b6121db908561314e565b87846000612367565b901c9350505050611f70565b600061040183670de0b6b3a7640000846123a2565b60006104018383612433565b60007812725dd1d243aba0e75fe645cc4873f9e65afe688c928e1f21821115612269576040517f6155b67d0000000000000000000000000000000000000000000000000000000081526004810183905260240161055a565b610fb2670de0b6b3a7640000830261254a565b6000818311611f885781610401565b6000818310611f885781610401565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036122f2578382816122e8576122e86132b5565b0492505050610401565b8084116122fe57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b60006123748585856123a2565b90508180156123925750828061238c5761238c6132b5565b84860915155b15611f7057611f6d81600161314e565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff858709858702925082811083820303915050806000036123f0578382816122e8576122e86132b5565b8381106122fe576040517f773cc18c000000000000000000000000000000000000000000000000000000008152600481018290526024810185905260440161055a565b600080807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848609848602925082811083820303915050670de0b6b3a764000081106124ae576040517fd31b34020000000000000000000000000000000000000000000000000000000081526004810182905260240161055a565b600080670de0b6b3a764000086880991506706f05b59d3b1ffff82119050826000036124ec5780670de0b6b3a7640000850401945050505050610fb2565b6204000082850304939091119091037d40000000000000000000000000000000000000000000000000000000000002919091177faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac106690201905092915050565b60008160000361255c57506000919050565b5060018170010000000000000000000000000000000081106125835760409190911b9060801c5b68010000000000000000811061259e5760209190911b9060401c5b64010000000081106125b55760109190911b9060201c5b6201000081106125ca5760089190911b9060101c5b61010081106125de5760049190911b9060081c5b601081106125f15760029190911b9060041c5b6008811061260157600182901b91505b6001828481612612576126126132b5565b048301901c9150600182848161262a5761262a6132b5565b048301901c91506001828481612642576126426132b5565b048301901c9150600182848161265a5761265a6132b5565b048301901c91506001828481612672576126726132b5565b048301901c9150600182848161268a5761268a6132b5565b048301901c915060018284816126a2576126a26132b5565b048301901c915060008284816126ba576126ba6132b5565b049050808310156104015782611f70565b73ffffffffffffffffffffffffffffffffffffffff811681146126ed57600080fd5b50565b6fffffffffffffffffffffffffffffffff811681146126ed57600080fd5b6000806040838503121561272157600080fd5b823561272c816126cb565b9150602083013561273c816126f0565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f830116810181811067ffffffffffffffff821117156127ba576127ba612747565b6040525050565b80151581146126ed57600080fd5b80356127da816127c1565b919050565b6000806000606084860312156127f457600080fd5b833567ffffffffffffffff8082111561280c57600080fd5b818601915086601f83011261282057600080fd5b813560208282111561283457612834612747565b604051925061286a817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160184612776565b818352888183860101111561287e57600080fd5b81818501828501376000818385010152829650808801359550505050506128a7604085016127cf565b90509250925092565b600080600080600060a086880312156128c857600080fd5b85356128d3816126cb565b945060208601356128e3816126f0565b935060408601356128f3816127c1565b92506060860135612903816127c1565b949793965091946080013592915050565b60008060006060848603121561292957600080fd5b8335612934816126cb565b92506020840135612944816126f0565b91506040840135612954816126f0565b809150509250925092565b602080825282518282018190526000919060409081850190868401855b828110156129e957815180516fffffffffffffffffffffffffffffffff90811686528782015160ff16888701528682015160030b8787015260608083015182169087015260808083015182169087015260a091820151169085015260c0909301929085019060010161297c565b5091979650505050505050565b600080600060608486031215612a0b57600080fd5b8335612a16816126cb565b92506020840135612a26816126cb565b929592945050506040919091013590565b6040808252835182820181905260009190606090818501906020808901865b83811015612ab5578151805160ff1686528381015160030b8487015287810151151588870152868101516fffffffffffffffffffffffffffffffff90811688880152608091820151169086015260a09094019390820190600101612a56565b505095909501959095525092949350505050565b600060208284031215612adb57600080fd5b8135610401816126cb565b60008060008060608587031215612afc57600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115612b2257600080fd5b818701915087601f830112612b3657600080fd5b813581811115612b4557600080fd5b886020828501011115612b5757600080fd5b95989497505060200194505050565b8060030b81146126ed57600080fd5b60008060408385031215612b8857600080fd5b8235612b93816126cb565b9150602083013561273c81612b66565b602080825282518282018190526000919060409081850190868401855b828110156129e957815180516fffffffffffffffffffffffffffffffff908116865287820151811688870152868201518116878701526060808301518216908701526080808301519091169086015260a08082015160ff169086015260c09081015160030b9085015260e09093019290850190600101612bc0565b80516127da816126f0565b805160ff811681146127da57600080fd5b80516127da81612b66565b600060e08284031215612c7457600080fd5b60405160e0810181811067ffffffffffffffff82111715612c9757612c97612747565b6040528251612ca5816126f0565b81526020830151612cb5816126f0565b6020820152612cc660408401612c3b565b6040820152612cd760608401612c3b565b6060820152612ce860808401612c3b565b6080820152612cf960a08401612c46565b60a0820152612d0a60c08401612c57565b60c08201529392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d7657612d76612d16565b5060010190565b6000815180845260005b81811015612da357602081850181015186830182015201612d87565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b73ffffffffffffffffffffffffffffffffffffffff871681526fffffffffffffffffffffffffffffffff861660208201528415156040820152831515606082015282608082015260c060a08201526000612e3e60c0830184612d7d565b98975050505050505050565b60008060408385031215612e5d57600080fd5b505080516020909101519092909150565b600060033d1115612e875760046000803e5060005160e01c5b90565b600060443d1015612e985790565b6040517ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc803d016004833e81513d67ffffffffffffffff8160248401118184111715612ee657505050505090565b8285019150815181811115612efe5750505050505090565b843d8701016020828501011115612f185750505050505090565b612f2760208286010187612776565b509095945050505050565b600060208284031215612f4457600080fd5b5051919050565b600060808284031215612f5d57600080fd5b6040516080810167ffffffffffffffff8282108183111715612f8157612f81612747565b8160405284519150612f9282612b66565b818352612fa160208601612c46565b602084015260408501519150612fb6826126f0565b816040840152606085015191508082168214612fd157600080fd5b5060608201529392505050565b6fffffffffffffffffffffffffffffffff81811683821601908082111561035f5761035f612d16565b60006020828403121561301957600080fd5b8151610401816126f0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006fffffffffffffffffffffffffffffffff80831681810361307857613078612d16565b6001019392505050565b6fffffffffffffffffffffffffffffffff82811682821603908082111561035f5761035f612d16565b6000602082840312156130bd57600080fd5b8135610401816127c1565b6020815260006104016020830184612d7d565b60ff8281168282160390811115610fb257610fb2612d16565b600060ff82168061310757613107612d16565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b600060ff821660ff810361314557613145612d16565b60010192915050565b80820180821115610fb257610fb2612d16565b600381810b9083900b01637fffffff81137fffffffffffffffffffffffffffffffffffffffffffffffffffffffff8000000082121715610fb257610fb2612d16565b81810381811115610fb257610fb2612d16565b600060208083850312156131c957600080fd5b825167ffffffffffffffff808211156131e157600080fd5b818501915085601f8301126131f557600080fd5b81518181111561320757613207612747565b8060051b915060405161321c85840182612776565b8181529183018401918481018884111561323557600080fd5b938501935b8385101561325d578451925061324f836126f0565b82815293850193850161323a565b50979650505050505050565b60006020828403121561327b57600080fd5b8151610401816127c1565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b8082028115828204841417610fb257610fb2612d16565b600082613331577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea2646970667358221220862732b38cf532b76586156ea350f45929cd631435e982f233e7abd5433fd3c764736f6c63430008110033