From 0c08d8ed84a03cfce425629d85ac202050e00be2 Mon Sep 17 00:00:00 2001 From: ts0yu <120932697+ts0yu@users.noreply.github.com> Date: Sat, 21 Sep 2024 11:26:38 +0000 Subject: [PATCH] feat: clean up --- contracts/utils/src/ArenaController.sol | 105 +----------- src/artifacts/ArenaController.json | 2 +- src/artifacts/ArenaToken.json | 1 - src/artifacts/LiquidExchange.json | 1 - src/artifacts/PoolManager.json | 1 - src/artifacts/PoolModifyLiquidityTest.json | 1 - src/artifacts/PoolSwapTest.json | 1 - src/engine/arbitrageur.rs | 15 +- src/engine/mod.rs | 38 +---- src/lib.rs | 187 +-------------------- 10 files changed, 14 insertions(+), 338 deletions(-) delete mode 100644 src/artifacts/ArenaToken.json delete mode 100644 src/artifacts/LiquidExchange.json delete mode 100644 src/artifacts/PoolManager.json delete mode 100644 src/artifacts/PoolModifyLiquidityTest.json delete mode 100644 src/artifacts/PoolSwapTest.json diff --git a/contracts/utils/src/ArenaController.sol b/contracts/utils/src/ArenaController.sol index 859eae9..b68b88e 100644 --- a/contracts/utils/src/ArenaController.sol +++ b/contracts/utils/src/ArenaController.sol @@ -94,7 +94,7 @@ contract ArenaController { require(currency0.approve(address(swapRouter), type(uint256).max), "Approval for currency0 failed"); require(currency1.approve(address(swapRouter), type(uint256).max), "Approval for currency1 failed"); - (uint160 sqrtPriceX96, int24 tick,,) = fetcher.getSlot0(poolManager, fetcher.toId(poolKey)); + (uint160 sqrtPriceX96,,,) = fetcher.getSlot0(poolManager, fetcher.toId(poolKey)); uint256 uniswapPrice = FullMath.mulDiv(uint256(sqrtPriceX96) * 10**18, uint256(sqrtPriceX96), 1 << 192); uint256 lexPrice = lex.price(); @@ -161,107 +161,4 @@ contract ArenaController { router.modifyLiquidity(poolKey, params, ""); } - - /*function getPositionInfo( - address owner, - int24 tickLower, - int24 tickUpper, - bytes32 salt - ) external view returns (uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128) { - PoolId poolId = fetcher.toId(poolKey); - // positionKey = keccak256(abi.encodePacked(owner, tickLower, tickUpper, salt)) - bytes32 positionKey = Position.calculatePositionKey(owner, tickLower, tickUpper, salt); - - (liquidity, feeGrowthInside0LastX128, feeGrowthInside1LastX128) = getPositionInfo(poolManager, poolId, positionKey); - } - - function getPositionInfo(IPoolManager manager, PoolId poolId, bytes32 positionId) - internal - view - returns (uint128 liquidity, uint256 feeGrowthInside0LastX128, uint256 feeGrowthInside1LastX128) - { - bytes32 slot = _getPositionInfoSlot(poolId, positionId); - - // read all 3 words of the Position.State struct - bytes32[] memory data = manager.extsload(slot, 3); - - assembly ("memory-safe") { - liquidity := mload(add(data, 32)) - feeGrowthInside0LastX128 := mload(add(data, 64)) - feeGrowthInside1LastX128 := mload(add(data, 96)) - } - } - - function _getPositionInfoSlot(PoolId poolId, bytes32 positionId) internal pure returns (bytes32) { - // slot key of Pool.State value: `pools[poolId]` - bytes32 stateSlot = _getPoolStateSlot(poolId); - - // Pool.State: `mapping(bytes32 => Position.State) positions;` - bytes32 positionMapping = bytes32(uint256(stateSlot) + POSITIONS_OFFSET); - - // slot of the mapping key: `pools[poolId].positions[positionId] - return keccak256(abi.encodePacked(positionId, positionMapping)); - } - - function _getPoolStateSlot(PoolId poolId) internal pure returns (bytes32) { - return keccak256(abi.encodePacked(PoolId.unwrap(poolId), POOLS_SLOT)); - }*/ - - function computeSwapStep( - uint160 sqrtPriceCurrentX96, - uint160 sqrtPriceTargetX96, - uint128 liquidity, - int256 amountRemaining, - uint24 feePips - ) external pure returns (uint160 sqrtPriceNextX96, uint256 amountIn, uint256 amountOut, uint256 feeAmount) { - unchecked { - uint256 _feePips = feePips; // upcast once and cache - bool zeroForOne = sqrtPriceCurrentX96 >= sqrtPriceTargetX96; - bool exactIn = amountRemaining < 0; - - if (exactIn) { - uint256 amountRemainingLessFee = - FullMath.mulDiv(uint256(-amountRemaining), MAX_SWAP_FEE - _feePips, MAX_SWAP_FEE); - amountIn = zeroForOne - ? SqrtPriceMath.getAmount0Delta(sqrtPriceTargetX96, sqrtPriceCurrentX96, liquidity, true) - : SqrtPriceMath.getAmount1Delta(sqrtPriceCurrentX96, sqrtPriceTargetX96, liquidity, true); - if (amountRemainingLessFee >= amountIn) { - // `amountIn` is capped by the target price - sqrtPriceNextX96 = sqrtPriceTargetX96; - feeAmount = _feePips == MAX_SWAP_FEE - ? amountIn // amountIn is always 0 here, as amountRemainingLessFee == 0 and amountRemainingLessFee >= amountIn - : FullMath.mulDivRoundingUp(amountIn, _feePips, MAX_SWAP_FEE - _feePips); - } else { - // exhaust the remaining amount - amountIn = amountRemainingLessFee; - sqrtPriceNextX96 = SqrtPriceMath.getNextSqrtPriceFromInput( - sqrtPriceCurrentX96, liquidity, amountRemainingLessFee, zeroForOne - ); - // we didn't reach the target, so take the remainder of the maximum input as fee - feeAmount = uint256(-amountRemaining) - amountIn; - } - amountOut = zeroForOne - ? SqrtPriceMath.getAmount1Delta(sqrtPriceNextX96, sqrtPriceCurrentX96, liquidity, false) - : SqrtPriceMath.getAmount0Delta(sqrtPriceCurrentX96, sqrtPriceNextX96, liquidity, false); - } else { - amountOut = zeroForOne - ? SqrtPriceMath.getAmount1Delta(sqrtPriceTargetX96, sqrtPriceCurrentX96, liquidity, false) - : SqrtPriceMath.getAmount0Delta(sqrtPriceCurrentX96, sqrtPriceTargetX96, liquidity, false); - if (uint256(amountRemaining) >= amountOut) { - // `amountOut` is capped by the target price - sqrtPriceNextX96 = sqrtPriceTargetX96; - } else { - // cap the output amount to not exceed the remaining output amount - amountOut = uint256(amountRemaining); - sqrtPriceNextX96 = - SqrtPriceMath.getNextSqrtPriceFromOutput(sqrtPriceCurrentX96, liquidity, amountOut, zeroForOne); - } - amountIn = zeroForOne - ? SqrtPriceMath.getAmount0Delta(sqrtPriceNextX96, sqrtPriceCurrentX96, liquidity, true) - : SqrtPriceMath.getAmount1Delta(sqrtPriceCurrentX96, sqrtPriceNextX96, liquidity, true); - // `feePips` cannot be `MAX_SWAP_FEE` for exact out - feeAmount = FullMath.mulDivRoundingUp(amountIn, _feePips, MAX_SWAP_FEE - _feePips); - } - } - } } diff --git a/src/artifacts/ArenaController.json b/src/artifacts/ArenaController.json index 02a7d50..082723f 100644 --- a/src/artifacts/ArenaController.json +++ b/src/artifacts/ArenaController.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"fee","type":"uint256","internalType":"uint256"},{"name":"initialPrice","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"POOLS_SLOT","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"POSITIONS_OFFSET","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addLiquidity","inputs":[{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeSwapStep","inputs":[{"name":"sqrtPriceCurrentX96","type":"uint160","internalType":"uint160"},{"name":"sqrtPriceTargetX96","type":"uint160","internalType":"uint160"},{"name":"liquidity","type":"uint128","internalType":"uint128"},{"name":"amountRemaining","type":"int256","internalType":"int256"},{"name":"feePips","type":"uint24","internalType":"uint24"}],"outputs":[{"name":"sqrtPriceNextX96","type":"uint160","internalType":"uint160"},{"name":"amountIn","type":"uint256","internalType":"uint256"},{"name":"amountOut","type":"uint256","internalType":"uint256"},{"name":"feeAmount","type":"uint256","internalType":"uint256"}],"stateMutability":"pure"},{"type":"function","name":"constructSignal","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct ArenaController.Signal","components":[{"name":"currentTick","type":"int24","internalType":"int24"},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"manager","type":"address","internalType":"address"},{"name":"lexPrice","type":"uint256","internalType":"uint256"},{"name":"pool","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"fetcher","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"equalizePrice","inputs":[{"name":"depth","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getRouter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"poolKey","inputs":[],"outputs":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"stateMutability":"view"},{"type":"function","name":"setPool","inputs":[{"name":"poolFee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPrice","inputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapOnLex","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x610160604052348015610010575f80fd5b5060405161bbd738038061bbd783398101604081905261002f916104a6565b8160405161003c90610458565b908152602001604051809103905ff08015801561005b573d5f803e3d5ffd5b506001600160a01b0316608081905260405161007690610465565b6001600160a01b039091168152602001604051809103905ff08015801561009f573d5f803e3d5ffd5b506001600160a01b031660a0526080516040516100bb90610472565b6001600160a01b039091168152602001604051809103905ff0801580156100e4573d5f803e3d5ffd5b506001600160a01b031660c0526040516100fd9061047f565b604051809103905ff080158015610116573d5f803e3d5ffd5b506001600160a01b0316610100526040516012906101339061048c565b606080825260099082015268063757272656e6379360bc1b608082015260a06020820181905260029082015261063360f41b60c082015260ff909116604082015260e001604051809103905ff080158015610190573d5f803e3d5ffd5b506001600160a01b0316610120526040516012906101ad9061048c565b60608082526009908201526863757272656e63793160b81b608082015260a06020820181905260029082015261633160f01b60c082015260ff909116604082015260e001604051809103905ff08015801561020a573d5f803e3d5ffd5b506001600160a01b0390811661014081905261012051909116111561024657610140805161012080516001600160a01b03908116909352911690525b61012051610140518260405161025b90610499565b6001600160a01b0393841681529290911660208301526040820152606001604051809103905ff080158015610292573d5f803e3d5ffd5b506001600160a01b0390811660e052610120516040516340c10f1960e01b8152306004820152678ac7230489e8000060248201529116906340c10f19906044016020604051808303815f875af11580156102ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031291906104c8565b6103775760405162461bcd60e51b815260206004820152602b60248201527f4d696e74696e672063757272656e63793020746f206c6971756964206578636860448201526a185b99d94819985a5b195960aa1b60648201526084015b60405180910390fd5b610140516040516340c10f1960e01b8152306004820152678ac7230489e8000060248201526001600160a01b03909116906340c10f19906044016020604051808303815f875af11580156103cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f191906104c8565b6104515760405162461bcd60e51b815260206004820152602b60248201527f4d696e74696e672063757272656e63793120746f206c6971756964206578636860448201526a185b99d94819985a5b195960aa1b606482015260840161036e565b50506104ee565b61502b8061236483390190565b6116ad8061738f83390190565b6117d480618a3c83390190565b6105bc8061a21083390190565b610eea8061a7cc83390190565b6105218061b6b683390190565b5f80604083850312156104b7575f80fd5b505080516020909101519092909150565b5f602082840312156104d8575f80fd5b815180151581146104e7575f80fd5b9392505050565b60805160a05160c05160e051610100516101205161014051611d926105d25f395f81816106bb015281816108bb01528181610cd101526111d001525f81816105dc015281816107bf01528181610bd501526111a101525f81816103510152818161058e01528181610d8b0152610ddb01525f81816104b401528181610f0f01528181611316015261139701525f8181610ba601528181610ca201528181610ff701526110ef01525f81816102b8015281816107900152818161088c01526109b001525f818161037a0152818161048501528181610dba015261127f0152611d925ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c8063542524dd1161008857806391b7f5ed1161006357806391b7f5ed1461029057806396f5e27c146102a3578063b0f479a1146102b6578063c7b8e15d146102dc575f80fd5b8063542524dd1461025d57806357eb1da7146102475780636af577411461027d575f80fd5b806301480703146100cf57806306ba06fa14610169578063100d3f741461017e57806314ee3677146101bb578063182148ef146101ce5780632ba31c5314610247575b5f80fd5b6100d76102e4565b604080518251600290810b82526020808501516001600160a01b03908116828501528585015181168486015260608087015181860152608080880151805184168288015293840151831660a0808801919091529684015162ffffff1660c08701529083015190930b60e08501529101518116610100830152919092015116610120820152610140015b60405180910390f35b61017c61017736600461187e565b6105b8565b005b61019161018c3660046118e1565b610a2c565b604080516001600160a01b0390951685526020850193909352918301526060820152608001610160565b61017c6101c9366004611950565b610b8f565b5f5460015460028054610207936001600160a01b03908116938082169362ffffff600160a01b83041693600160b81b909204900b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a001610160565b61024f600681565b604051908152602001610160565b610265611173565b6040516001600160a01b039091168152602001610160565b61017c61028b36600461197b565b611195565b61017c61029e366004611950565b611300565b61017c6102b1366004611a77565b611371565b7f0000000000000000000000000000000000000000000000000000000000000000610265565b6102656113ea565b6040805160c0810182525f80825260208083018290528284018290526060808401839052845160a080820187528482529281018490528086018490529081018390526080808201849052840152820181905291516332c961d960e01b815290919081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e631bcbf907f00000000000000000000000000000000000000000000000000000000000000009083906332c961d9906103b0908790600401611ae6565b602060405180830381865afa1580156103cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ef9190611afa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401608060405180830381865afa158015610436573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045a9190611b11565b5050915091506040518060c001604052808260020b8152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561050e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105329190611afa565b81526040805160a0810182525f546001600160a01b03908116825260015480821660208481019190915262ffffff600160a01b83041684860152600160b81b909104600290810b606085015254821660808401528401919091527f0000000000000000000000000000000000000000000000000000000000000000169101529392505050565b5f831315610779576040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af115801561062a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064e9190611b6d565b61069f5760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637930206661696c6564000000000000000060448201526064015b60405180910390fd5b6040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af1158015610709573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072d9190611b6d565b6107795760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637931206661696c656400000000000000006044820152606401610696565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610805573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108299190611b6d565b6108755760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637930206661696c65640000006044820152606401610696565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610901573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109259190611b6d565b6109715760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637931206661696c65640000006044820152606401610696565b60408051608081018252600284810b825283900b60208201528082018590525f606082018190529151632d35e7ed60e11b815290916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691635a6bcfda916109e5918590600401611b8c565b6020604051808303815f875af1158015610a01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a259190611afa565b5050505050565b5f80808062ffffff85166001600160a01b03808a16908b1610158288128015610b02575f610a658a5f0385620f424003620f42406113fa565b905082610a7e57610a798d8d8d6001611497565b610a8b565b610a8b8c8e8d60016114e3565b9650868110610abf578b9750620f42408414610ab657610ab1878586620f4240036115a8565b610ab8565b865b9450610ad8565b809650610ace8d8c83866115d8565b9750868a5f030394505b82610aee57610ae98d898d5f6114e3565b610afa565b610afa888e8d5f611497565b955050610b80565b81610b1857610b138c8c8c5f6114e3565b610b24565b610b248b8d8c5f611497565b9450848910610b35578a9650610b47565b889450610b448c8b878561162f565b96505b81610b5e57610b598c888c6001611497565b610b6b565b610b6b878d8c60016114e3565b9550610b7d868485620f4240036115a8565b93505b50505095509550955095915050565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610c1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3f9190611b6d565b610c8b5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637930206661696c65640000006044820152606401610696565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610d17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3b9190611b6d565b610d875760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637931206661696c65640000006044820152606401610696565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e631bcbf7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166332c961d95f6040518263ffffffff1660e01b8152600401610e259190611ae6565b602060405180830381865afa158015610e40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e649190611afa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401608060405180830381865afa158015610eab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecf9190611b11565b5050915091505f610f0a836001600160a01b0316670de0b6b3a7640000610ef69190611bf1565b846001600160a01b0316600160c01b6113fa565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8d9190611afa565b9050808211156110795760408051606081018252600180825260208201889052915f91908101610fc36401000276a36001611c27565b6001600160a01b039081169091526040805180820182525f80825260208201819052915163088a742d60e21b8152939450927f000000000000000000000000000000000000000000000000000000000000000090921691632229d0b4916110309186908690600401611c46565b6020604051808303815f875af115801561104c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110709190611afa565b50505050610a25565b80821015610a2557604080516060810182525f808252602082018890529182919081016110bb600173fffd8963efd1fc6a506488495d951d5263988d26611c08565b6001600160a01b039081169091526040805180820182525f80825260208201819052915163088a742d60e21b8152939450927f000000000000000000000000000000000000000000000000000000000000000090921691632229d0b4916111289186908690600401611c46565b6020604051808303815f875af1158015611144573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111689190611afa565b505050505050505050565b611192600173fffd8963efd1fc6a506488495d951d5263988d26611c08565b81565b6040805160a0810182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081168083527f000000000000000000000000000000000000000000000000000000000000000082166020840181905262ffffff8a811685870181905260028b810b60608801528a861660809097018790525f80546001600160a01b03199081169096178155600180546001600160b81b031916909517600160a01b9093029290921762ffffff60b81b1916600160b81b938d16939093029290921790925580549092169093179055915163695c5bf560e01b81527f00000000000000000000000000000000000000000000000000000000000000009092169163695c5bf5916112b89186908690600401611ca6565b6020604051808303815f875af11580156112d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f89190611cfb565b505050505050565b6040516391b7f5ed60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391b7f5ed906024015f604051808303815f87803b15801561135f575f80fd5b505af1158015610a25573d5f803e3d5ffd5b60405163d004f0f760e01b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d004f0f7906044015f604051808303815f87803b1580156113d8575f80fd5b505af11580156112f8573d5f803e3d5ffd5b6111926401000276a36001611c27565b5f838302815f1985870982811083820303915050808411611419575f80fd5b805f0361142b57508290049050611490565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b5f6001600160a01b038481169086160360ff81901d90810118600160601b6001600160801b0385166114ca8184846113fa565b9350845f83858409111684019350505050949350505050565b5f836001600160a01b0316856001600160a01b03161115611502579293925b6001600160a01b03851661151c5762bfc9215f526004601cfd5b600160601b600160e01b03606084901b166001600160a01b03868603168361156f57866001600160a01b031661155c8383896001600160a01b03166113fa565b8161156957611569611d16565b0461159b565b61159b6115868383896001600160a01b03166115a8565b886001600160a01b0316808204910615150190565b925050505b949350505050565b5f6115b48484846113fa565b905081806115c4576115c4611d16565b838509156114905760010180611490575f80fd5b5f6001600160801b038416156001600160a01b03861615171561160257634f2461b85f526004601cfd5b81611619576116148585856001611672565b611626565b611626858585600161175d565b95945050505050565b5f6001600160801b038416156001600160a01b03861615171561165957634f2461b85f526004601cfd5b8161166a576116148585855f61175d565b6116268585855f5b5f81156116e2575f6001600160a01b038411156116a6576116a184600160601b876001600160801b03166113fa565b6116bd565b6116bd6001600160801b038616606086901b611d2a565b90506116da6116d5826001600160a01b038916611d49565b61183f565b9150506115a0565b5f6001600160a01b0384111561170f5761170a84600160601b876001600160801b03166115a8565b61172c565b61172c606085901b6001600160801b038716808204910615150190565b9050806001600160a01b0387161161174b57634323a5555f526004601cfd5b6001600160a01b0386160390506115a0565b5f825f0361176c5750836115a0565b600160601b600160e01b03606085901b1682156117fe576001600160a01b038616848102908582816117a0576117a0611d16565b04036117d0578181018281106117ce576117c483896001600160a01b0316836115a8565b93505050506115a0565b505b506116da81856117e96001600160a01b038a1683611d2a565b6117f39190611d49565b808204910615150190565b6001600160a01b0386168481029085820414818311166118255763f5c787f15f526004601cfd5b8082036117c46116d5846001600160a01b038b16846115a8565b806001600160a01b0381168114611860576118606393dafdf160e01b611865565b919050565b805f5260045ffd5b8060020b811461187b575f80fd5b50565b5f805f60608486031215611890575f80fd5b8335925060208401356118a28161186d565b915060408401356118b28161186d565b809150509250925092565b6001600160a01b038116811461187b575f80fd5b62ffffff8116811461187b575f80fd5b5f805f805f60a086880312156118f5575f80fd5b8535611900816118bd565b94506020860135611910816118bd565b935060408601356001600160801b038116811461192b575f80fd5b9250606086013591506080860135611942816118d1565b809150509295509295909350565b5f60208284031215611960575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f805f60a0868803121561198f575f80fd5b853561199a816118d1565b945060208601356119aa8161186d565b935060408601356119ba816118bd565b925060608601356119ca816118bd565b9150608086013567ffffffffffffffff8111156119e5575f80fd5b8601601f810188136119f5575f80fd5b803567ffffffffffffffff811115611a0f57611a0f611967565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611a3e57611a3e611967565b6040528181528282016020018a1015611a55575f80fd5b816020840160208301375f602083830101528093505050509295509295909350565b5f8060408385031215611a88575f80fd5b8235611a93816118bd565b946020939093013593505050565b80546001600160a01b0390811683526001820154808216602085015260a081901c62ffffff16604085015260b81c600290810b60608501529091015416608090910152565b60a08101611af48284611aa1565b92915050565b5f60208284031215611b0a575f80fd5b5051919050565b5f805f8060808587031215611b24575f80fd5b8451611b2f816118bd565b6020860151909450611b408161186d565b6040860151909350611b51816118d1565b6060860151909250611b62816118d1565b939692955090935050565b5f60208284031215611b7d575f80fd5b81518015158114611490575f80fd5b611b968184611aa1565b8151600290810b60a08301526020830151900b60c0820152604082015160e082015260609091015161010082015261014061012082018190525f9082015261016001919050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417611af457611af4611bdd565b6001600160a01b038281168282160390811115611af457611af4611bdd565b6001600160a01b038181168382160190811115611af457611af4611bdd565b611c508185611aa1565b8251151560a082015260208084015160c08301526040909301516001600160a01b031660e082015281511515610100820152910151151561012082015261016061014082018190525f9082015261018001919050565b611cb08185611aa1565b60018060a01b03831660a082015260e060c08201525f82518060e0840152806020850161010085015e5f6101008285010152610100601f19601f830116840101915050949350505050565b5f60208284031215611d0b575f80fd5b81516114908161186d565b634e487b7160e01b5f52601260045260245ffd5b5f82611d4457634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115611af457611af4611bdd56fea2646970667358221220ac598dbc9802d34d8779520416b36bf01582f124c1671ffbabe2fc31888f9de064736f6c634300081a003360c0604052348015600e575f80fd5b5060405161502b38038061502b833981016040819052602b916077565b5f80546001600160a01b031916339081178255604051839282917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350608052503060a052608d565b5f602082840312156086575f80fd5b5051919050565b60805160a051614f766100b55f395f6117e201525f818161220b01526122490152614f765ff3fe6080604052600436106101fb575f3560e01c80635a6bcfda11610113578063a58411941161009d578063f135baaa1161006d578063f135baaa14610641578063f2fde38b14610660578063f3cd914c1461067f578063f5298aca1461069e578063fe99049a146106bd575f80fd5b8063a5841194146105ab578063b6363cf2146105ca578063dbd035ff14610603578063f02de3b214610622575f80fd5b806380f0b44c116100e357806380f0b44c146104ed5780638161b8741461050c5780638da5cb5b1461052b57806397e8cd4e146105615780639bf6645f1461058c575f80fd5b80635a6bcfda1461046657806360460f061461049a578063695c5bf5146104af5780637e87ce7d146104ce575f80fd5b8063234266d711610194578063426a849311610164578063426a8493146103a157806348c89491146103c057806352759651146103ec578063558a72971461040b578063598af9e71461042a575f80fd5b8063234266d7146103245780632d7713891461034357806335fd631a146103625780633dd45adb1461038e575f80fd5b80630b0d9c09116101cf5780630b0d9c09146102bd57806311da60b4146102de578063156e29f6146102e65780631e2eaeaf14610305575f80fd5b8062fdd58e146101ff57806301ffc9a71461024857806307eff0dd14610277578063095bcdb61461029e575b5f80fd5b34801561020a575f80fd5b50610235610219366004614397565b600460209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b506102676102623660046143c1565b6106dc565b604051901515815260200161023f565b348015610282575f80fd5b5061028b600181565b60405160029190910b815260200161023f565b3480156102a9575f80fd5b506102676102b83660046143e8565b610712565b3480156102c8575f80fd5b506102dc6102d736600461441a565b6107b9565b005b61023561080a565b3480156102f1575f80fd5b506102dc6103003660046143e8565b61083c565b348015610310575f80fd5b5061023561031f366004614458565b610887565b34801561032f575f80fd5b5061023561033e3660046145d7565b610891565b34801561034e575f80fd5b506102dc61035d36600461463b565b610941565b34801561036d575f80fd5b5061038161037c366004614656565b6109d7565b60405161023f9190614676565b61023561039c36600461463b565b610a14565b3480156103ac575f80fd5b506102676103bb3660046143e8565b610a46565b3480156103cb575f80fd5b506103df6103da3660046146b8565b610aaa565b60405161023f91906146f6565b3480156103f7575f80fd5b506102dc61040636600461472b565b610b6d565b348015610416575f80fd5b5061026761042536600461476c565b610bdc565b348015610435575f80fd5b5061023561044436600461441a565b600560209081525f938452604080852082529284528284209052825290205481565b348015610471575f80fd5b50610485610480366004614796565b610c4b565b6040805192835260208301919091520161023f565b3480156104a5575f80fd5b5061028b617fff81565b3480156104ba575f80fd5b5061028b6104c9366004614838565b610dde565b3480156104d9575f80fd5b506102dc6104e836600461472b565b610fcd565b3480156104f8575f80fd5b506102dc610507366004614397565b61107f565b348015610517575f80fd5b5061023561052636600461441a565b6110f2565b348015610536575f80fd5b505f54610549906001600160a01b031681565b6040516001600160a01b03909116815260200161023f565b34801561056c575f80fd5b5061023561057b36600461463b565b60016020525f908152604090205481565b348015610597575f80fd5b506103816105a636600461487f565b611181565b3480156105b6575f80fd5b506102dc6105c536600461463b565b6111ba565b3480156105d5575f80fd5b506102676105e43660046148ee565b600360209081525f928352604080842090915290825290205460ff1681565b34801561060e575f80fd5b5061038161061d36600461487f565b6111f6565b34801561062d575f80fd5b50600254610549906001600160a01b031681565b34801561064c575f80fd5b5061023561065b366004614458565b61122d565b34801561066b575f80fd5b506102dc61067a36600461463b565b611237565b34801561068a575f80fd5b50610235610699366004614925565b6112c9565b3480156106a9575f80fd5b506102dc6106b83660046143e8565b61140f565b3480156106c8575f80fd5b506102676106d73660046149c3565b611454565b5f6301ffc9a760e01b6001600160e01b03198316148061070c5750630f632fb360e01b6001600160e01b03198316145b92915050565b335f90815260046020908152604080832085845290915281208054839190839061073d908490614a1a565b90915550506001600160a01b0384165f90815260046020908152604080832086845290915281208054849290610774908490614a2d565b909155505060408051338082526020820185905285926001600160a01b038816925f80516020614ee183398151915291015b60405180910390a45060015b9392505050565b5f80516020614f018339815191525c6107dc576107dc6354e3ca0d60e01b6115b3565b6107f1836107e9836115bb565b5f03336115db565b6108056001600160a01b038416838361162e565b505050565b5f5f80516020614f018339815191525c61082e5761082e6354e3ca0d60e01b6115b3565b610837336116c2565b905090565b5f80516020614f018339815191525c61085f5761085f6354e3ca0d60e01b6115b3565b8161086d816107e9846115bb565b610881846001600160a01b03831684611765565b50505050565b5f81545f5260205ff35b5f5f80516020614f018339815191525c6108b5576108b56354e3ca0d60e01b6115b3565b6108bd6117d7565b5f6108dc6108cc8860a0902090565b5f90815260066020526040902090565b90506108e781611819565b6080870151610903906001600160a01b0316888888888861183d565b61090e8187876118ba565b915061091b87833361196d565b6080870151610937906001600160a01b03168888888888611995565b5095945050505050565b5f546001600160a01b0316331461098e5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc905f90a250565b6060604051808360051b6020835284602084015260408301925080830190505b855483526020830192506001860195508083106109f75781810382f35b5f5f80516020614f018339815191525c610a3857610a386354e3ca0d60e01b6115b3565b61070c826116c2565b919050565b335f8181526005602090815260408083206001600160a01b03881680855290835281842087855290925280832085905551919285927fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a7906107a69087815260200190565b60605f80516020614f018339815191525c15610ad057610ad06328486b6360e11b6115b3565b610ad8611a07565b6040516348eeb9a360e11b815233906391dd734690610afd9086908690600401614a68565b5f604051808303815f875af1158015610b18573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b3f9190810190614a7b565b90505f80516020614f218339815191525c15610b6557610b65635212cba160e01b6115b3565b61070c611a1a565b604082015162ffffff1662800000141580610b9e575081608001516001600160a01b0316336001600160a01b031614155b15610bb357610bb36330d2164160e01b6115b3565b610bc18162ffffff16611a2c565b60a082205f8181526006602052604090206108059083611a52565b335f8181526003602090815260408083206001600160a01b038716808552908352818420805460ff191687151590811790915591519182529293917fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267910160405180910390a350600192915050565b5f805f80516020614f018339815191525c610c7057610c706354e3ca0d60e01b6115b3565b610c786117d7565b60a086205f818152600660205260409020610c9281611819565b6080880151610cad906001600160a01b031689898989611a6d565b5f610d146040518060c00160405280336001600160a01b031681526020018a5f015160020b81526020018a6020015160020b8152602001610cf18b60400151611b6f565b600f0b81526060808d015160020b60208301528b01516040909101528390611b8b565b94509050610d228185611f05565b9450336001600160a01b0316837f541c041c2cce48e614b3de043c9280f06b6164c0a1741649e2de3c3d375f79748a5f01518b602001518c60400151604051610d8693929190600293840b81529190920b6020820152604081019190915260600190565b60405180910390a360808901515f90610dac906001600160a01b03168b8b898c8c611f38565b90965090508015610dc657610dc68a828c6080015161196d565b610dd18a873361196d565b5050505094509492505050565b5f610de76117d7565b6060850151617fff60029190910b1315610e12576060850151610e12906316e0049f60e31b90612057565b600160020b856060015160020b1215610e3c576060850151610e3c90631d3d20b160e31b90612057565b845160208601516001600160a01b03908116911610610e6e5784516020860151610e6e916306e6c98360e41b91612066565b610e92856040015186608001516001600160a01b031661208890919063ffffffff16565b610ead576080850151610ead90630732d7b560e51b90612149565b5f610ec0866040015162ffffff1661215e565b6080870151909150610ede906001600160a01b031687878787612183565b60a086205f610eec886121f4565b5f848152600660205260409020909250610f099150888386612326565b6080890151909450610f28906001600160a01b03168989878a8a612385565b87602001516001600160a01b0316885f01516001600160a01b0316837fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d64388b604001518c606001518d608001518d8b604051610fba95949392919062ffffff959095168552600293840b60208601526001600160a01b03928316604086015291166060840152900b608082015260a00190565b60405180910390a4505050949350505050565b6002546001600160a01b03163314610fef57610fef6348f5c3ed60e01b6115b3565b6103e9610fff821610623e900062fff0008316101661101e5761101e63a7abe2f760e01b62ffffff8316612149565b60a082206110408261103a835f90815260066020526040902090565b906123f8565b60405162ffffff8316815281907fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99060200160405180910390a2505050565b5f80516020614f018339815191525c6110a2576110a26354e3ca0d60e01b6115b3565b335f9081526001600160a01b038316602052604081205c906110c3836115bb565b90508181600f0b146110df576110df63bda73abf60e01b6115b3565b610881846110ec83614b0d565b336115db565b6002545f906001600160a01b03163314611116576111166348f5c3ed60e01b6115b3565b8115611122578161113b565b6001600160a01b0383165f908152600160205260409020545b6001600160a01b0384165f90815260016020526040812080549293508392909190611167908490614a1a565b909155506107b290506001600160a01b038416858361162e565b606060405180602082528360208301526040820191508360051b8201855b80355c84526020938401930181841061119f575b5081810382f35b6111c261240d565b6001600160a01b0381166111d35750565b5f6111e6826001600160a01b0316612441565b90506111f282826124bd565b5050565b606060405180602082528360208301526040820191508360051b8201855b803554845260209384019301818410156111b357611214565b5f815c5f5260205ff35b5f546001600160a01b0316331461127f5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610985565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f5f80516020614f018339815191525c6112ed576112ed6354e3ca0d60e01b6115b3565b6112f56117d7565b83602001515f036113105761131063be8b850760e01b6115b3565b60a085205f81815260066020526040902061132a81611819565b60808701515f908190819061134b906001600160a01b03168b8b8b8b6124fd565b8093508195508294505050506113ba84866040518060a001604052808e6060015160020b81526020018d5f0151151581526020018681526020018d604001516001600160a01b031681526020018562ffffff168152508c5f01516113b3578d60200151612619565b8d51612619565b60808b01519096505f92506113de91506001600160a01b03168a8a888b8b88612707565b909550905080156113f8576113f889828b6080015161196d565b61140389863361196d565b50505050949350505050565b5f80516020614f018339815191525c611432576114326354e3ca0d60e01b6115b3565b81611440816110ec846115bb565b610881846001600160a01b0383168461282a565b5f336001600160a01b0386161480159061149157506001600160a01b0385165f90815260036020908152604080832033845290915290205460ff16155b15611501576001600160a01b0385165f90815260056020908152604080832033845282528083208684529091529020545f1981146114ff576114d38382614a1a565b6001600160a01b0387165f90815260056020908152604080832033845282528083208884529091529020555b505b6001600160a01b0385165f90815260046020908152604080832086845290915281208054849290611533908490614a1a565b90915550506001600160a01b0384165f9081526004602090815260408083208684529091528120805484929061156a908490614a2d565b9091555050604080513381526020810184905284916001600160a01b0380881692908916915f80516020614ee1833981519152910160405180910390a45060015b949350505050565b805f5260045ffd5b5f6001607f1b82106115d7576115d76393dafdf160e01b6115b3565b5090565b81600f0b5f036115ea57505050565b5f806116006001600160a01b03861684866128e8565b91509150805f0361161857611613612921565b611627565b815f0361162757611627612949565b5050505050565b5f6001600160a01b038416611661575f805f8085875af190508061165c5761165c6356cdd02560e11b612971565b610881565b60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061088157610881632745a14f60e21b612971565b5f5f80516020614ec18339815191525c6001600160a01b0381166116e85734915061174c565b34156116fe576116fe6319d245cf60e01b6115b3565b7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c5f6117336001600160a01b038416612441565b905061173f8282614a1a565b935061174961299e565b50505b61175f81611759846115bb565b856115db565b50919050565b6001600160a01b0383165f90815260046020908152604080832085845290915281208054839290611797908490614a2d565b9091555050604080513381526020810183905283916001600160a01b038616915f915f80516020614ee183398151915291015b60405180910390a4505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611817576118176306c4a1c760e11b6115b3565b565b80546001600160a01b03165f0361183a5761183a63486aa30760e01b6115b3565b50565b85336001600160a01b038216146118b15760208716156118b1576118af33878787878760405160240161187596959493929190614b74565b60408051601f198184030181529190526020810180516001600160e01b0316635b54587d60e11b1790526001600160a01b038916906129b0565b505b50505050505050565b60038301545f906001600160801b03168082036118e1576118e163a74f97ab60e01b6115b3565b61190f6118ed856115bb565b5f036118f8856115bb565b5f0360809190911b6001600160801b039091161790565b9150831561193b5761192f84600160801b836001600160801b0316612a40565b60018601805490910190555b82156119655761195983600160801b836001600160801b0316612a40565b60028601805490910190555b509392505050565b82516119839061197d8460801d90565b836115db565b610805836020015161197d84600f0b90565b85336001600160a01b038216146118b15760108716156118b1576118af3387878787876040516024016119cd96959493929190614b74565b60408051601f198184030181529190526020810180516001600160e01b031663e1b4af6960e01b1790526001600160a01b038916906129b0565b60015f80516020614f018339815191525d565b5f5f80516020614f018339815191525d565b620f424062ffffff8216111561183a5761183a631400211360e01b62ffffff8316612149565b611a5b82611819565b8154611a679082612adc565b90915550565b84336001600160a01b03821614611b67575f8460400151138015611a945750610800861615155b15611af557611aef3386868686604051602401611ab5959493929190614bbe565b60408051601f198184030181529190526020810180516001600160e01b031663259982e560e01b1790526001600160a01b038816906129b0565b50611b67565b5f846040015113158015611b0c5750610200861615155b15611b67576118b13386868686604051602401611b2d959493929190614bbe565b60408051601f198184030181529190526020810180516001600160e01b031663021d0ee760e41b1790526001600160a01b038816906129b0565b505050505050565b80600f81900b8114610a4157610a416393dafdf160e01b6115b3565b6060810151602082015160408301515f9283929091611baa8282612af7565b604080516080810182525f80825260208201819052918101829052606081019190915283600f0b5f14611cef57611be38884865f612b57565b6001600160801b0316602083015215158152611c028883866001612b57565b6001600160801b03166060830152151560408201525f600f85900b12611cb4575f611c52886080015160020b620d89e7198190058102620d89e8829005820203056001016001600160801b030490565b9050806001600160801b031682602001516001600160801b03161115611c8357611c8363b8e3c38560e01b85612057565b806001600160801b031682606001516001600160801b03161115611cb257611cb263b8e3c38560e01b84612057565b505b805115611cd0576080870151611cd09060058a01908590612c11565b806040015115611cef576080870151611cef9060058a01908490612c11565b5f80611cfc8a8686612c63565b8a5160a08c015160408051602681019290925260068083018a9052600383018b9052928252603a600c8301205f838301819052602080850182905293819052908152928f01909152812092945090925080611d59838a8787612d17565b91509150611d85611d69836115bb565b611d72836115bb565b6001600160801b031660809190911b1790565b995050505050505f84600f0b1215611dee57805115611dc157600283810b5f90815260048a016020526040812081815560018101829055909101555b806040015115611dee57600282810b5f90815260048a016020526040812081815560018101829055909101555b5082600f0b5f14611efb5786545f80611e0a8360a01c60020b90565b6001600160a01b038416915091508460020b8260020b1215611e5957611e52611e4c611e47611e3888612dd0565b611e4188612dd0565b8a613088565b611b6f565b60801b90565b9750611ef7565b8360020b8260020b1215611ed257611e90611e7a611e4783611e4188612dd0565b611d72611e47611e8989612dd0565b858b6130c0565b60038b0154909850611eab906001600160801b0316876130ec565b60038b0180546001600160801b0319166001600160801b0392909216919091179055611ef7565b611ef45f611d72611e47611ee589612dd0565b611eee89612dd0565b8b6130c0565b97505b5050505b5050509250929050565b5f608082811d9084901d01600f83810b9085900b01611f2f611f2683611b6f565b611d7283611b6f565b95945050505050565b5f806001600160a01b0388163303611f5457508390505f61204c565b8491505f86604001511315611fe057610400881615611fdb57611fcc338888888888604051602401611f8b96959493929190614c1e565b60408051601f198184030181529190526020810180516001600160e01b0316625a2a8160e81b17905260028a1615155b6001600160a01b038b169190613113565b9050611fd88282613154565b91505b61204c565b61010088161561204c5761203d33888888888860405160240161200896959493929190614c1e565b60408051601f198184030181529190526020810180516001600160e01b03166346d95b2960e11b17905260018a161515611fbb565b90506120498282613154565b91505b965096945050505050565b815f528060020b60045260245ffd5b825f526001600160a01b0382166004526001600160a01b03811660245260445ffd5b5f6080831615801561209c57506008831615155b156120a857505f61070c565b604083161580156120bb57506004831615155b156120c757505f61070c565b61040083161580156120db57506002831615155b156120e757505f61070c565b61010083161580156120fb57506001831615155b1561210757505f61070c565b6001600160a01b0383161561213857613fff831615158061213357506280000062ffffff8316146107b2565b6107b2565b5062ffffff16628000001415919050565b815f526001600160a01b03811660045260245ffd5b5f6280000062ffffff83160361217557505f919050565b6115d78262ffffff16611a2c565b84336001600160a01b03821614611b6757612000861615611b67576118b133868686866040516024016121ba959493929190614c85565b60408051601f198184030181529190526020810180516001600160e01b03166301a206c160e51b1790526001600160a01b038816906129b0565b6002545f9081906001600160a01b031615612321577f00000000000000000000000000000000000000000000000000000000000000005a101561224157612241630f724b8160e11b6115b3565b6002546040517f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b0316905f90612283908790602401614cc6565b60408051601f198184030181529190526020810180516001600160e01b031663553bfc3760e01b17815281519192505f918291829190828789f13d60201416955085156122da576040513d5f823e805191505f8152505b8580156122eb57508062ffffff1681145b801561230857506103e9610fff821610623e900062fff000831610165b612313575f80612317565b6001815b9096509450505050505b915091565b83545f906001600160a01b03161561234857612348637983c05160e01b6115b3565b61235184613175565b905061237a826123748561236e6001600160a01b03891686613460565b9061347b565b90612adc565b909455509192915050565b85336001600160a01b038216146118b1576110008716156118b1576118af3387878787876040516024016123be96959493929190614cd4565b60408051601f198184030181529190526020810180516001600160e01b031663a910f80f60e01b1790526001600160a01b038916906129b0565b61240182611819565b8154611a67908261347b565b61242d5f80516020614ec18339815191525c6001600160a01b0316613496565b6118175761181763996caf6560e01b6115b3565b5f6001600160a01b038216612457575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015612499573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070c9190614d1d565b6001600160a01b0382165f80516020614ec18339815191525d807f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d5050565b60208301515f806001600160a01b038816330361251c575f915061260e565b608088161561260e575f61257289338a8a8a8a604051602401612543959493929190614d34565b60408051601f198184030181529190526020810180516001600160e01b03166315d7892d60e21b1790526129b0565b9050805160601461258d5761258d631e048e1d60e01b6115b3565b604088015162ffffff1662800000036125a857606081015191505b600889161561260c57604081015192505f6125c38460801d90565b905080600f0b5f1461260a575f85126125e0600f83900b87614d8d565b9550806125ef575f86126125f3565b5f86135b1561260857612608637d05b8eb60e11b6115b3565b505b505b505b955095509592505050565b5f8080808061262889886134a7565b93509350935093505f831115612656576001600160a01b0386165f9081526001602052604090208054840190555b33887f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f6126838760801d90565b61268d88600f0b90565b60408087015160a0880151606089015192516126f2959493908b90600f96870b81529490950b60208501526001600160a01b039290921660408401526001600160801b0316606083015260020b608082015262ffffff9190911660a082015260c00190565b60405180910390a35091979650505050505050565b5f806001600160a01b038916330361272357508490505f61281e565b5f61272e8460801d90565b90505f61273b85600f0b90565b905060408b16156127b5576127a8611e47338c8c8c8c8c60405160240161276796959493929190614db4565b60408051601f198184030181529190526020810180516001600160e01b031663b47b2fb160e01b17905260048e1615156001600160a01b038f169190613113565b6127b29082614e14565b90505b5f81600f0b5f1415806127cb575082600f0b5f14155b1561281657895160208b01515f13901515146127f6576001600160801b038316608083901b17612807565b6001600160801b038216608084901b175b90506128138982613154565b98505b889450925050505b97509795505050505050565b336001600160a01b038416811480159061286957506001600160a01b038085165f9081526003602090815260408083209385168352929052205460ff16155b156128dd576001600160a01b038085165f9081526005602090815260408083209385168352928152828220868352905220545f1981146128db576128ad8382614a1a565b6001600160a01b038087165f9081526005602090815260408083209387168352928152828220888352905220555b505b610881848484613b54565b6001600160a01b038281165f90815290841660205260408120805c9190612913600f85900b84614d8d565b915081815d50935093915050565b5f80516020614f218339815191525c600181039050805f80516020614f218339815191525d50565b5f80516020614f218339815191525c600181019050805f80516020614f218339815191525d50565b3d60405182815260206004820152816024820152815f604483013e602080601f8401040260440191508181fd5b5f5f80516020614ec18339815191525d565b60605f805f8451602086015f885af19050806129d6576129d663fb6a608160e01b612971565b6040519150601f19603f3d011682016040523d82523d5f602084013e602082511080612a24575060208301516001600160e01b031916612a17836020015190565b6001600160e01b03191614155b15612a3957612a39631e048e1d60e01b6115b3565b5092915050565b5f838302815f1985870982811083820303915050808411612a5f575f80fd5b805f03612a71575082900490506107b2565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60d01b62ffffff60d01b1662ffffff60d01b19919091161790565b8060020b8260020b12612b1657612b1663c4433ed560e01b8383613bbd565b620d89e719600283900b1215612b3757612b3763d5e2f7ab60e01b83612057565b620d89e8600282900b13156111f2576111f263035aeeff60e31b82612057565b600283900b5f908152600485016020526040812080548291906001600160801b0381169060801d612b8882886130ec565b6001600160801b03808216159084168015919091141596509094505f03612bd257885460a01c60020b60020b8860020b13612bd2576001808a0154908401556002808a0154908401555b5f86612be757612be28883614e14565b612bf1565b612bf18883614e41565b90508060801b6001600160801b0386161784555050505094509492505050565b600291820b910b80820715612c3e5760405163d4d8f3e681528260208201528160408201526044601c8201fd5b80820591508160081d5f528260205260405f20600160ff84161b815418815550505050565b600282810b5f81815260048601602052604080822085850b83529082208754929485949293919260a09290921c900b90811215612cb9578160010154836001015403945081600201548360020154039350612d0c565b8560020b8160020b12612ce5578260010154826001015403945082600201548260020154039350612d0c565b81600101548360010154896001015403039450816002015483600201548960020154030393505b505050935093915050565b83545f9081906001600160801b0316600f86900b8203612d5657806001600160801b03165f03612d5157612d51632bbfae4960e21b6115b3565b612d7c565b612d6081876130ec565b87546001600160801b0319166001600160801b03919091161787555b612d9a87600101548603826001600160801b0316600160801b612a40565b9250612dba87600201548503826001600160801b0316600160801b612a40565b6001880195909555505060029094015591929050565b60020b5f60ff82901d80830118620d89e8811115612df957612df96345c3193d60e11b84612057565b7001fffcb933bd6fad37aa2d162d1a5940016001821602600160801b186002821615612e35576ffff97272373d413259a46990580e213a0260801c5b6004821615612e54576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612e73576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612e92576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612eb1576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612ed0576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612eef576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612f0f576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f2f576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f4f576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f6f576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612f8f576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612faf576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612fcf576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612fef576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613010576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613030576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561304f576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561306c576b048a170391f7dc42444e8fa20260801c5b5f841315613078575f19045b63ffffffff0160201c9392505050565b5f8082600f0b126130af576130a86130a38585856001613bda565b613c9d565b5f036115ab565b6115ab6130a38585855f035f613bda565b5f8082600f0b126130db576130a86130a38585856001613cb6565b6115ab6130a38585855f035f613cb6565b6001600160801b038216600f82900b01608081901c1561070c576393dafdf15f526004601cfd5b5f8061311f85856129b0565b90508261312f575f9150506107b2565b805160401461314857613148631e048e1d60e01b6115b3565b60400151949350505050565b5f608082811d9084901d03600f83810b9085900b03611f2f611f2683611b6f565b5f73fffd8963efd1fc6a506488495d951d51639616826401000276a21983016001600160a01b031611156131b4576131b46318521d4960e21b83612149565b640100000000600160c01b03602083901b166001600160801b03811160071b81811c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061324757607f810383901c9150613251565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461345157886001600160a01b031661343682612dd0565b6001600160a01b0316111561344b5781613453565b80613453565b815b9998505050505050505050565b60a01b62ffffff60a01b1662ffffff60a01b19919091161790565b60b81b62ffffff60b81b1662ffffff60b81b19919091161790565b5f6001600160a01b0382161561070c565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a08101829052819081908554602086015160038801546001600160801b03165f8261350457610fff60c485901c1661350e565b610fff60b885901c165b60408a81015187525f60208801526001600160a01b0386169087015260a085901c60020b606087015261ffff1690508261354c578960020154613552565b89600101545b6080868101919091526001600160801b03831660a08701528901515f9062400000166135875760d085901c62ffffff16613599565b6135998a6080015162ffffff16613d02565b905081156135c757620f424062ffffff821661ffff84168181028381061515939004929092019101036135c9565b805b60408b01519097505f13905062ffffff8716620f42401480156135ea575080155b156135ff576135ff634b10312360e11b6115b3565b89604001515f0361361a575f80985098505050505050613b4b565b83156136985760608a01516001600160a01b03868116911610613659576136596001600160a01b0386165b60608c0151637c9c6e8f60e01b9190613d11565b6401000276a36001600160a01b03168a606001516001600160a01b031610156136935760608a015161369390639e4d7cc760e01b90612149565b613709565b60608a01516001600160a01b038681169116116136c1576136c16001600160a01b038616613645565b73fffd8963efd1fc6a506488495d951d5263988d266001600160a01b03168a606001516001600160a01b0316106137095760608a015161370990639e4d7cc760e01b90612149565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091525b8651158061376957508a606001516001600160a01b031687604001516001600160a01b0316145b613a545760408701516001600160a01b0316815260608701518b516137939160058f019188613d3a565b1515604083015260020b60208201819052620d89e719126137b957620d89e71960208201525b620d89e860020b816020015160020b126137d757620d89e860208201525b6137e48160200151612dd0565b6001600160a01b03908116606083810182905260408a0151908e0151613825939192911680821891811160ff8a1618919091021860a08a01518a518c613e23565b60c085015260a084015260808301526001600160a01b0316604088015281613889576138548160a00151613c9d565b875103875260c08101516080820151613870916130a391614a2d565b876020018181516138819190614e6e565b9052506138c4565b61389c8160c00151826080015101613c9d565b875101875260a08101516138af90613c9d565b876020018181516138c09190614d8d565b9052505b8215613900575f620f4240848360c0015184608001510102816138e9576138e9614e8d565b60c084018051929091049182900390529990990198505b60a08701516001600160801b03161561393f576139338160c00151600160801b8960a001516001600160801b0316612a40565b60808801805190910190525b80606001516001600160a01b031687604001516001600160a01b031603613a1957806040015115613a01575f8086613980578d60010154896080015161398b565b88608001518e600201545b915091505f6139d68f85602001518585600292830b5f90815260049094016020526040909320600181018054909203909155908101805490920390915554600160801b9004600f0b90565b905087156139e1575f035b6139ef8a60a00151826130ec565b6001600160801b031660a08b01525050505b602081015160ff8616900360020b6060880152613742565b805f01516001600160a01b031687604001516001600160a01b031614613a4f57613a468760400151613175565b60020b60608801525b613742565b613a8c8760400151613a7389606001518961346090919063ffffffff16565b6001600160a01b0319166001600160a01b039091161790565b8c5560a08701516001600160801b03858116911614613acc5760a087015160038d0180546001600160801b0319166001600160801b039092169190911790555b84613ae057608087015160028d0155613aeb565b608087015160018d01555b81151585151514613b1f57613b18613b068860200151611b6f565b611d72895f01518e6040015103611b6f565b9950613b44565b613b41613b34885f01518d6040015103611b6f565b611d728960200151611b6f565b99505b5050505050505b92959194509250565b6001600160a01b0383165f90815260046020908152604080832085845290915281208054839290613b86908490614a1a565b9091555050604080513381526020810183905283915f916001600160a01b038716915f80516020614ee183398151915291016117ca565b6040518381528260020b60048201528160020b6024820152604481fd5b5f836001600160a01b0316856001600160a01b03161115613bf9579293925b6001600160a01b038516613c135762bfc9215f526004601cfd5b600160601b600160e01b03606084901b166001600160a01b038686031683613c6657866001600160a01b0316613c538383896001600160a01b0316612a40565b81613c6057613c60614e8d565b04613c92565b613c92613c7d8383896001600160a01b0316613fa9565b886001600160a01b0316808204910615150190565b979650505050505050565b805f811215610a4157610a416393dafdf160e01b6115b3565b5f6001600160a01b038481169086160360ff81901d90810118600160601b6001600160801b038516613ce9818484612a40565b9350845f83858409111684019350505050949350505050565b62bfffff8116610a4181611a2c565b6040518381526001600160a01b03831660048201526001600160a01b0382166024820152604481fd5b5f80600284810b9086900b8181078313919005038315613db557600281900b60081d600181810b5f90815260208a905260409020545f1960ff85168381019390931b01908116801515955085613d9757888360ff16860302613daa565b88613da182613fd9565b840360ff168603025b965050505050613e19565b6001908101600281900b60081d80830b5f90815260208a905260409020545f1960ff841694851b011990811680151595509293919285613dff57888360ff0360ff16860102613e12565b8883613e0a83614069565b0360ff168601025b9650505050505b5094509492505050565b5f80808062ffffff85166001600160a01b03808a16908b1610158288128015613f1c575f613e5c8a5f0385620f424003620f4240612a40565b905082613e7557613e708d8d8d6001613cb6565b613e82565b613e828c8e8d6001613bda565b9650868110613eb6578b9750620f42408414613ead57613ea8878586620f424003613fa9565b613eaf565b865b9450613ef2565b613ec28d8c8386614104565b975082613edb57613ed68d898d6001613cb6565b613ee8565b613ee8888e8d6001613bda565b9650868a5f030394505b82613f0857613f038d898d5f613bda565b613f14565b613f14888e8d5f613cb6565b955050613f9a565b81613f3257613f2d8c8c8c5f613bda565b613f3e565b613f3e8b8d8c5f613cb6565b9450848910613f4f578a9650613f61565b889450613f5e8c8b8785614152565b96505b81613f7857613f738c888c6001613cb6565b613f85565b613f85878d8c6001613bda565b9550613f97868485620f424003613fa9565b93505b50505095509550955095915050565b5f613fb5848484612a40565b90508180613fc557613fc5614e8d565b838509156107b257600101806107b2575f80fd5b5f808211613fe5575f80fd5b507f0706060506020504060203020504030106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be831560081b6001600160801b03851160071b1784811c6001600160401b031060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b5f808211614075575f80fd5b507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b150316040581196001019091166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1790565b5f6001600160801b038416156001600160a01b03861615171561412e57634f2461b85f526004601cfd5b81614145576141408585856001614195565b611f2f565b611f2f8585856001614280565b5f6001600160801b038416156001600160a01b03861615171561417c57634f2461b85f526004601cfd5b8161418d576141408585855f614280565b611f2f8585855f5b5f8115614205575f6001600160a01b038411156141c9576141c484600160601b876001600160801b0316612a40565b6141e0565b6141e06001600160801b038616606086901b614ea1565b90506141fd6141f8826001600160a01b038916614a2d565b614362565b9150506115ab565b5f6001600160a01b038411156142325761422d84600160601b876001600160801b0316613fa9565b61424f565b61424f606085901b6001600160801b038716808204910615150190565b9050806001600160a01b0387161161426e57634323a5555f526004601cfd5b6001600160a01b0386160390506115ab565b5f825f0361428f5750836115ab565b600160601b600160e01b03606085901b168215614321576001600160a01b038616848102908582816142c3576142c3614e8d565b04036142f3578181018281106142f1576142e783896001600160a01b031683613fa9565b93505050506115ab565b505b506141fd818561430c6001600160a01b038a1683614ea1565b6143169190614a2d565b808204910615150190565b6001600160a01b0386168481029085820414818311166143485763f5c787f15f526004601cfd5b8082036142e76141f8846001600160a01b038b1684613fa9565b806001600160a01b0381168114610a4157610a416393dafdf160e01b6115b3565b6001600160a01b038116811461183a575f80fd5b5f80604083850312156143a8575f80fd5b82356143b381614383565b946020939093013593505050565b5f602082840312156143d1575f80fd5b81356001600160e01b0319811681146107b2575f80fd5b5f805f606084860312156143fa575f80fd5b833561440581614383565b95602085013595506040909401359392505050565b5f805f6060848603121561442c575f80fd5b833561443781614383565b9250602084013561444781614383565b929592945050506040919091013590565b5f60208284031215614468575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156144a5576144a561446f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156144d3576144d361446f565b604052919050565b803562ffffff81168114610a41575f80fd5b8035600281900b8114610a41575f80fd5b5f60a0828403121561450e575f80fd5b60405160a081016001600160401b03811182821017156145305761453061446f565b604052905080823561454181614383565b8152602083013561455181614383565b6020820152614562604084016144db565b6040820152614573606084016144ed565b6060820152608083013561458681614383565b6080919091015292915050565b5f8083601f8401126145a3575f80fd5b5081356001600160401b038111156145b9575f80fd5b6020830191508360208285010111156145d0575f80fd5b9250929050565b5f805f805f61010086880312156145ec575f80fd5b6145f687876144fe565b945060a0860135935060c0860135925060e08601356001600160401b0381111561461e575f80fd5b61462a88828901614593565b969995985093965092949392505050565b5f6020828403121561464b575f80fd5b81356107b281614383565b5f8060408385031215614667575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b818110156146ad57835183526020938401939092019160010161468f565b509095945050505050565b5f80602083850312156146c9575f80fd5b82356001600160401b038111156146de575f80fd5b6146ea85828601614593565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060c0838503121561473c575f80fd5b61474684846144fe565b915061475460a084016144db565b90509250929050565b80358015158114610a41575f80fd5b5f806040838503121561477d575f80fd5b823561478881614383565b91506147546020840161475d565b5f805f808486036101408112156147ab575f80fd5b6147b587876144fe565b94506080609f19820112156147c8575f80fd5b506147d1614483565b6147dd60a087016144ed565b81526147eb60c087016144ed565b602082015260e08601356040820152610100860135606082015292506101208501356001600160401b03811115614820575f80fd5b61482c87828801614593565b95989497509550505050565b5f805f8060e0858703121561484b575f80fd5b61485586866144fe565b935060a085013561486581614383565b925060c08501356001600160401b03811115614820575f80fd5b5f8060208385031215614890575f80fd5b82356001600160401b038111156148a5575f80fd5b8301601f810185136148b5575f80fd5b80356001600160401b038111156148ca575f80fd5b8560208260051b84010111156148de575f80fd5b6020919091019590945092505050565b5f80604083850312156148ff575f80fd5b823561490a81614383565b9150602083013561491a81614383565b809150509250929050565b5f805f8084860361012081121561493a575f80fd5b61494487876144fe565b94506060609f1982011215614957575f80fd5b50604051606081016001600160401b038111828210171561497a5761497a61446f565b60405261498960a0870161475d565b815260c0860135602082015260e08601356149a381614383565b604082015292506101008501356001600160401b03811115614820575f80fd5b5f805f80608085870312156149d6575f80fd5b84356149e181614383565b935060208501356149f181614383565b93969395505050506040820135916060013590565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561070c5761070c614a06565b8082018082111561070c5761070c614a06565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6115ab602083018486614a40565b5f60208284031215614a8b575f80fd5b81516001600160401b03811115614aa0575f80fd5b8201601f81018413614ab0575f80fd5b80516001600160401b03811115614ac957614ac961446f565b614adc601f8201601f19166020016144ab565b818152856020838501011115614af0575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f81600f0b60016001607f1b03198103614b2957614b29614a06565b5f0392915050565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b6001600160a01b0387168152614b8d6020820187614b31565b8460c08201528360e08201526101206101008201525f614bb261012083018486614a40565b98975050505050505050565b6001600160a01b0386168152614bd76020820186614b31565b8351600290810b60c08301526020850151900b60e0820152604084015161010082015260608401516101208201526101606101408201525f613c9261016083018486614a40565b6001600160a01b0387168152614c376020820187614b31565b8451600290810b60c08301526020860151900b60e082015260408501516101008201526060850151610120820152836101408201526101806101608201525f614bb261018083018486614a40565b6001600160a01b0386168152614c9e6020820186614b31565b6001600160a01b03841660c082015261010060e082018190525f90613c929083018486614a40565b60a0810161070c8284614b31565b6001600160a01b0387168152614ced6020820187614b31565b60018060a01b03851660c08201528360020b60e08201526101206101008201525f614bb261012083018486614a40565b5f60208284031215614d2d575f80fd5b5051919050565b6001600160a01b0386168152614d4d6020820186614b31565b8351151560c0820152602084015160e082015260408401516001600160a01b03166101008201526101406101208201525f613c9261014083018486614a40565b8082018281125f831280158216821582161715614dac57614dac614a06565b505092915050565b6001600160a01b0387168152614dcd6020820187614b31565b8451151560c0820152602085015160e082015260408501516001600160a01b0316610100820152836101208201526101606101408201525f614bb261016083018486614a40565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561070c5761070c614a06565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561070c5761070c614a06565b8181035f831280158383131683831282161715612a3957612a39614a06565b634e487b7160e01b5f52601260045260245ffd5b5f82614ebb57634e487b7160e01b5f52601260045260245ffd5b50049056fe27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b91b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859c090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab237d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0ba2646970667358221220c720af38850bace8901ec0c414e9cc6b7600fdc66c58c62bb119ab202e9502fe64736f6c634300081a003360a0604052348015600e575f80fd5b506040516116ad3803806116ad833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b6080516115e46100c95f395f818160790152818160f50152818161022d01528181610294015281816102c501528181610390015281816104fa01528181610550015281816105bf015281816106100152818161077a01526107ad01526115e45ff3fe60806040526004361061003e575f3560e01c80630a5b11e414610042578063481c6a75146100685780635a6bcfda146100b357806391dd7346146100c6575b5f80fd5b610055610050366004611035565b6100f2565b6040519081526020015b60405180910390f35b348015610073575f80fd5b5061009b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161005f565b6100556100c13660046110bb565b61020a565b3480156100d1575f80fd5b506100e56100e0366004611118565b610220565b60405161005f91906111b2565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166348c894916040518060c00160405280336001600160a01b03168152602001898152602001888152602001878152602001861515815260200185151581525060405160200161016c919061120e565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161019791906111b2565b5f604051808303815f875af11580156101b2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101d991908101906112aa565b8060200190518101906101ec919061131e565b9050478015610200576102005f3383610662565b5095945050505050565b5f6102188484845f806100f2565b949350505050565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610256575f80fd5b5f61026383850185611335565b90505f6102be610278836020015160a0902090565b6040840151805160208201516060909201516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693923092916106fc565b505090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635a6bcfda8460200151856040015186606001516040518463ffffffff1660e01b815260040161031f939291906113fc565b60408051808303815f875af115801561033a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035e919061144b565b5090505f6103ba610374856020015160a0902090565b6040860151805160208201516060909201516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693923092916106fc565b505090505f6103d485602001515f0151865f015130610753565b925050505f6103ef866020015160200151875f015130610753565b9250505082600f0b86604001516040015186600f0b61040e9190611481565b1461045f5760405162461bcd60e51b815260206004820152601a60248201527f6c6971756964697479206368616e676520696e636f7272656374000000000000604482015260640160405180910390fd5b5f86604001516040015112156104a7575f82138061047c57505f81135b610488576104886114a8565b5f82128061049557505f81125b156104a2576104a26114a8565b6104ea565b5f86604001516040015113156104ea575f8212806104c457505f81125b6104d0576104d06114a8565b5f8213806104dd57505f81135b156104ea576104ea6114a8565b5f821215610540578551610540907f000000000000000000000000000000000000000000000000000000000000000090610523856114bc565b60808a015160208b0151516001600160a01b0316939291906107df565b5f811215610598578551610598907f000000000000000000000000000000000000000000000000000000000000000090610579846114bc565b60808a01516020808c015101516001600160a01b0316939291906107df565b5f8213156105e757855160a08701516020880151516105e7926001600160a01b03909116917f000000000000000000000000000000000000000000000000000000000000000091908690610aab565b5f81131561063857855160a08701516020808901510151610638926001600160a01b03909116917f000000000000000000000000000000000000000000000000000000000000000091908590610aab565b60408051602081018690520160405160208183030381529060405296505050505050505b92915050565b5f6001600160a01b038416610695575f805f8085875af1905080610690576106906356cdd02560e11b610b7d565b6106f6565b60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806106f6576106f6632745a14f60e21b610b7d565b50505050565b60408051602681018390526006810184905260038101859052858152603a600c8201205f9282018390526020820183905290829052819081906107408a8a83610baa565b919c909b50909950975050505050505050565b5f80806107696001600160a01b03871686610c4d565b925061079e6001600160a01b0387167f0000000000000000000000000000000000000000000000000000000000000000610c4d565b91506107d46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168588610cdc565b905093509350939050565b801561087457836001600160a01b031663f5298aca8461080e886001600160a01b03166001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604481018590526064015b5f604051808303815f87803b158015610859575f80fd5b505af115801561086b573d5f803e3d5ffd5b50505050610aa4565b6001600160a01b0385166108eb57836001600160a01b03166311da60b4836040518263ffffffff1660e01b815260040160206040518083038185885af11580156108c0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108e5919061131e565b50610aa4565b604051632961046560e21b81526001600160a01b03868116600483015285169063a5841194906024015f604051808303815f87803b15801561092b575f80fd5b505af115801561093d573d5f803e3d5ffd5b505050506001600160a01b03831630146109cf576040516323b872dd60e01b81526001600160a01b0384811660048301528581166024830152604482018490528616906323b872dd906064016020604051808303815f875af11580156109a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c991906114d6565b50610a41565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905286169063a9059cbb906044016020604051808303815f875af1158015610a1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f91906114d6565b505b836001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610a7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa2919061131e565b505b5050505050565b80610aed57604051630b0d9c0960e01b81526001600160a01b038681166004830152848116602483015260448201849052851690630b0d9c0990606401610842565b836001600160a01b031663156e29f684610b16886001600160a01b03166001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604481018590526064015f604051808303815f87803b158015610b60575f80fd5b505af1158015610b72573d5f803e3d5ffd5b505050505050505050565b3d60405182815260206004820152816024820152815f604483013e602080601f8401040260440191508181fd5b5f805f80610bb88686610d73565b604051631afeb18d60e11b815260048101829052600360248201529091505f906001600160a01b038916906335fd631a906044015f60405180830381865afa158015610c06573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c2d91908101906114f1565b60208101516040820151606090920151909a919950975095505050505050565b5f6001600160a01b038316610c6d57506001600160a01b0381163161065c565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015610cb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd5919061131e565b905061065c565b5f806001600160a01b0384165f526001600160a01b03831660205260405f209050846001600160a01b031663f135baaa826040518263ffffffff1660e01b8152600401610d2b91815260200190565b602060405180830381865afa158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a919061131e565b95945050505050565b5f80610d7e84610dc3565b90505f610d8c60068361159b565b6040805160208101879052908101829052909150606001604051602081830303815290604052805190602001209250505092915050565b6040515f90610de2908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715610e3557610e35610dff565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610e6357610e63610dff565b604052919050565b6001600160a01b0381168114610e7f575f80fd5b50565b8035600281900b8114610e93575f80fd5b919050565b5f60a08284031215610ea8575f80fd5b60405160a081016001600160401b0381118282101715610eca57610eca610dff565b6040529050808235610edb81610e6b565b81526020830135610eeb81610e6b565b6020820152604083013562ffffff81168114610f05575f80fd5b6040820152610f1660608401610e82565b60608201526080830135610f2981610e6b565b6080919091015292915050565b5f60808284031215610f46575f80fd5b604051608081016001600160401b0381118282101715610f6857610f68610dff565b604052905080610f7783610e82565b8152610f8560208401610e82565b602082015260408301356040820152606083013560608201525092915050565b5f6001600160401b03821115610fbd57610fbd610dff565b50601f01601f191660200190565b5f82601f830112610fda575f80fd5b8135610fed610fe882610fa5565b610e3b565b818152846020838601011115611001575f80fd5b816020850160208301375f918101602001919091529392505050565b8015158114610e7f575f80fd5b8035610e938161101d565b5f805f805f610180868803121561104a575f80fd5b6110548787610e98565b94506110638760a08801610f36565b93506101208601356001600160401b0381111561107e575f80fd5b61108a88828901610fcb565b93505061014086013561109c8161101d565b91506101608601356110ad8161101d565b809150509295509295909350565b5f805f61014084860312156110ce575f80fd5b6110d88585610e98565b92506110e78560a08601610f36565b91506101208401356001600160401b03811115611102575f80fd5b61110e86828701610fcb565b9150509250925092565b5f8060208385031215611129575f80fd5b82356001600160401b0381111561113e575f80fd5b8301601f8101851361114e575f80fd5b80356001600160401b03811115611163575f80fd5b856020828401011115611174575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6111c46020830184611184565b9392505050565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b602080825282516001600160a01b0316828201528201515f9061123460408401826111cb565b506040838101518051600290810b60e08601526020820151900b610100850152908101516101208401526060908101516101408401528301516101a06101608401526112846101c0840182611184565b90506080840151151561018084015260a084015115156101a08401528091505092915050565b5f602082840312156112ba575f80fd5b81516001600160401b038111156112cf575f80fd5b8201601f810184136112df575f80fd5b80516112ed610fe882610fa5565b818152856020838501011115611301575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561132e575f80fd5b5051919050565b5f60208284031215611345575f80fd5b81356001600160401b0381111561135a575f80fd5b82016101a0818503121561136c575f80fd5b611374610e13565b813561137f81610e6b565b815261138e8560208401610e98565b60208201526113a08560c08401610f36565b60408201526101408201356001600160401b038111156113be575f80fd5b6113ca86828501610fcb565b6060830152506113dd610160830161102a565b60808201526113ef610180830161102a565b60a0820152949350505050565b61140681856111cb565b8251600290810b60a08301526020840151900b60c0820152604083015160e082015260608301516101008201526101406101208201525f610d6a610140830184611184565b5f806040838503121561145c575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f8312801582168215821617156114a0576114a061146d565b505092915050565b634e487b7160e01b5f52600160045260245ffd5b5f600160ff1b82016114d0576114d061146d565b505f0390565b5f602082840312156114e6575f80fd5b81516111c48161101d565b5f60208284031215611501575f80fd5b81516001600160401b03811115611516575f80fd5b8201601f81018413611526575f80fd5b80516001600160401b0381111561153f5761153f610dff565b8060051b61154f60208201610e3b565b9182526020818401810192908101908784111561156a575f80fd5b6020850194505b8385101561159057845180835260209586019590935090910190611571565b979650505050505050565b8082018082111561065c5761065c61146d56fea2646970667358221220022bb587431beddd1b3a2d4e57eee388a80ee14cf23bcb0c201ec0029fc9cb7a64736f6c634300081a003360a0604052348015600e575f80fd5b506040516117d43803806117d4833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b6080516117196100bb5f395f8181606e0152818160d7015281816101ee0152818161030001528181610888015281816108e10152818161095e015281816109b201528181610ac50152610af801526117195ff3fe608060405260043610610033575f3560e01c80632229d0b414610037578063481c6a751461005d57806391dd7346146100a8575b5f80fd5b61004a610045366004611286565b6100d4565b6040519081526020015b60405180910390f35b348015610068575f80fd5b506100907f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610054565b3480156100b3575f80fd5b506100c76100c23660046112f7565b6101e1565b6040516100549190611393565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166348c894916040518060a00160405280336001600160a01b031681526020018681526020018881526020018781526020018581525060405160200161014491906113ef565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016f9190611393565b5f604051808303815f875af115801561018a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101b19190810190611480565b8060200190518101906101c491906114f5565b90504780156101d8576101d85f3383610a04565b50949350505050565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610217575f80fd5b5f6102248385018561150c565b90505f61023c82604001515f0151835f015130610a9e565b925050505f610257836040015160200151845f015130610a9e565b92505050815f146102af5760405162461bcd60e51b815260206004820152601e60248201527f64656c74614265666f726530206973206e6f7420657175616c20746f2030000060448201526064015b60405180910390fd5b80156102fd5760405162461bcd60e51b815260206004820152601e60248201527f64656c74614265666f726531206973206e6f7420657175616c20746f2030000060448201526064016102a6565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f3cd914c8560400151866060015187608001516040518463ffffffff1660e01b815260040161035a939291906115c4565b6020604051808303815f875af1158015610376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039a91906114f5565b90505f6103b285604001515f0151865f015130610a9e565b925050505f6103cd866040015160200151875f015130610a9e565b9250505085606001515f01511561062f575f86606001516020015112156105125785606001516020015182121561047c5760405162461bcd60e51b815260206004820152604760248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e7453706064820152661958da599a595960ca1b608482015260a4016102a6565b816104878460801d90565b600f0b146104a75760405162461bcd60e51b81526004016102a69061160c565b5f81121561050d5760405162461bcd60e51b815260206004820152602d60248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201526c06f7220657175616c20746f203609c1b60648201526084016102a6565b610878565b5f8213156105785760405162461bcd60e51b815260206004820152602d60248201527f64656c7461416674657230206973206e6f74206c657373207468616e206f722060448201526c657175616c20746f207a65726f60981b60648201526084016102a6565b8061058384600f0b90565b600f0b146105a35760405162461bcd60e51b81526004016102a690611657565b85606001516020015181131561050d5760405162461bcd60e51b8152602060048201526044602482018190527f64656c7461416674657231206973206e6f74206c657373207468616e206f7220908201527f657175616c20746f20646174612e706172616d732e616d6f756e745370656369606482015263199a595960e21b608482015260a4016102a6565b5f866060015160200151121561075e578560600151602001518112156106cd5760405162461bcd60e51b815260206004820152604760248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e7453706064820152661958da599a595960ca1b608482015260a4016102a6565b806106d884600f0b90565b600f0b146106f85760405162461bcd60e51b81526004016102a690611657565b5f82121561050d5760405162461bcd60e51b815260206004820152602d60248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201526c06f7220657175616c20746f203609c1b60648201526084016102a6565b5f8113156107c15760405162461bcd60e51b815260206004820152602a60248201527f64656c7461416674657231206973206e6f74206c657373207468616e206f72206044820152690657175616c20746f20360b41b60648201526084016102a6565b816107cc8460801d90565b600f0b146107ec5760405162461bcd60e51b81526004016102a69061160c565b8560600151602001518213156108785760405162461bcd60e51b8152602060048201526044602482018190527f64656c7461416674657230206973206e6f74206c657373207468616e206f7220908201527f657175616c20746f20646174612e706172616d732e616d6f756e745370656369606482015263199a595960e21b608482015260a4016102a6565b5f8212156108d15785516108d1907f0000000000000000000000000000000000000000000000000000000000000000906108b1856116a2565b6020808b0151015160408b0151516001600160a01b031693929190610b2a565b5f811215610936578551610936907f00000000000000000000000000000000000000000000000000000000000000009061090a846116a2565b8960200151602001518a60400151602001516001600160a01b0316610b2a90949392919063ffffffff16565b5f821315610986578551602087015151604088015151610986926001600160a01b03909116917f000000000000000000000000000000000000000000000000000000000000000091908690610df6565b5f8113156109da578551602080880151516040890151909101516109da926001600160a01b03909116917f000000000000000000000000000000000000000000000000000000000000000091908590610df6565b60408051602081018590520160405160208183030381529060405296505050505050505b92915050565b5f6001600160a01b038416610a37575f805f8085875af1905080610a3257610a326356cdd02560e11b610ec8565b610a98565b60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f60408201525080610a9857610a98632745a14f60e21b610ec8565b50505050565b5f8080610ab46001600160a01b03871686610ef5565b9250610ae96001600160a01b0387167f0000000000000000000000000000000000000000000000000000000000000000610ef5565b9150610b1f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168588610f84565b905093509350939050565b8015610bbf57836001600160a01b031663f5298aca84610b59886001600160a01b03166001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604481018590526064015b5f604051808303815f87803b158015610ba4575f80fd5b505af1158015610bb6573d5f803e3d5ffd5b50505050610def565b6001600160a01b038516610c3657836001600160a01b03166311da60b4836040518263ffffffff1660e01b815260040160206040518083038185885af1158015610c0b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c3091906114f5565b50610def565b604051632961046560e21b81526001600160a01b03868116600483015285169063a5841194906024015f604051808303815f87803b158015610c76575f80fd5b505af1158015610c88573d5f803e3d5ffd5b505050506001600160a01b0383163014610d1a576040516323b872dd60e01b81526001600160a01b0384811660048301528581166024830152604482018490528616906323b872dd906064016020604051808303815f875af1158015610cf0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1491906116c8565b50610d8c565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905286169063a9059cbb906044016020604051808303815f875af1158015610d66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8a91906116c8565b505b836001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610dc9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ded91906114f5565b505b5050505050565b80610e3857604051630b0d9c0960e01b81526001600160a01b038681166004830152848116602483015260448201849052851690630b0d9c0990606401610b8d565b836001600160a01b031663156e29f684610e61886001600160a01b03166001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604481018590526064015f604051808303815f87803b158015610eab575f80fd5b505af1158015610ebd573d5f803e3d5ffd5b505050505050505050565b3d60405182815260206004820152816024820152815f604483013e602080601f8401040260440191508181fd5b5f6001600160a01b038316610f1557506001600160a01b038116316109fe565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015610f59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7d91906114f5565b90506109fe565b5f806001600160a01b0384165f526001600160a01b03831660205260405f209050846001600160a01b031663f135baaa826040518263ffffffff1660e01b8152600401610fd391815260200190565b602060405180830381865afa158015610fee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101291906114f5565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b60405160a0810167ffffffffffffffff811182821017156110525761105261101b565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156110815761108161101b565b604052919050565b6001600160a01b038116811461109d575f80fd5b50565b80356110ab81611089565b919050565b5f60a082840312156110c0575f80fd5b6110c861102f565b905081356110d581611089565b815260208201356110e581611089565b6020820152604082013562ffffff811681146110ff575f80fd5b60408201526060820135600281900b8114611118575f80fd5b6060820152611129608083016110a0565b608082015292915050565b801515811461109d575f80fd5b5f60608284031215611151575f80fd5b6040516060810167ffffffffffffffff811182821017156111745761117461101b565b604052905080823561118581611134565b815260208381013590820152604083013561119f81611089565b6040919091015292915050565b5f604082840312156111bc575f80fd5b6040805190810167ffffffffffffffff811182821017156111df576111df61101b565b60405290508082356111f081611134565b8152602083013561120081611134565b6020919091015292915050565b5f67ffffffffffffffff8211156112265761122661101b565b50601f01601f191660200190565b5f82601f830112611243575f80fd5b81356112566112518261120d565b611058565b81815284602083860101111561126a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80610160858703121561129a575f80fd5b6112a486866110b0565b93506112b38660a08701611141565b92506112c38661010087016111ac565b915061014085013567ffffffffffffffff8111156112df575f80fd5b6112eb87828801611234565b91505092959194509250565b5f8060208385031215611308575f80fd5b823567ffffffffffffffff81111561131e575f80fd5b8301601f8101851361132e575f80fd5b803567ffffffffffffffff811115611344575f80fd5b856020828401011115611355575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6113a56020830184611365565b9392505050565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b602080825282516001600160a01b0316828201528281015180511515604080850191909152910151151560608301528201515f9061143060808401826113ac565b506060830151805115156101208401526020810151610140840152604001516001600160a01b03166101608301526080830151610180808401526114786101a0840182611365565b949350505050565b5f60208284031215611490575f80fd5b815167ffffffffffffffff8111156114a6575f80fd5b8201601f810184136114b6575f80fd5b80516114c46112518261120d565b8181528560208385010111156114d8575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f60208284031215611505575f80fd5b5051919050565b5f6020828403121561151c575f80fd5b813567ffffffffffffffff811115611532575f80fd5b82016101808185031215611544575f80fd5b61154c61102f565b813561155781611089565b815261156685602084016111ac565b602082015261157885606084016110b0565b604082015261158b856101008401611141565b606082015261016082013567ffffffffffffffff8111156115aa575f80fd5b6115b686828501611234565b608083015250949350505050565b6115ce81856113ac565b8251151560a0820152602083015160c082015260408301516001600160a01b031660e08201526101206101008201525f611012610120830184611365565b6020808252602b908201527f64656c74612e616d6f756e74302829206973206e6f7420657175616c20746f2060408201526a064656c74614166746572360ac1b606082015260800190565b6020808252602b908201527f64656c74612e616d6f756e74312829206973206e6f7420657175616c20746f2060408201526a64656c746141667465723160a81b606082015260800190565b5f600160ff1b82016116c257634e487b7160e01b5f52601160045260245ffd5b505f0390565b5f602082840312156116d8575f80fd5b81516113a58161113456fea2646970667358221220ab101dfe4b4748d245c1716f79d45f12181b0ade83665d9ec819f86559f0b77264736f6c634300081a00336080604052348015600e575f80fd5b506105a08061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806332c961d91461005957806357eb1da714610081578063769323e314610089578063b08d3fe214610091578063e631bcbf146100d1575b5f80fd5b61006e610067366004610386565b60a0902090565b6040519081526020015b60405180910390f35b61006e600681565b61006e600481565b6100a461009f366004610423565b61011c565b604080516001600160801b039095168552600f9390930b6020850152918301526060820152608001610078565b6100e46100df36600461045e565b6101d2565b604080516001600160a01b03909516855260029390930b602085015262ffffff91821692840192909252166060820152608001610078565b5f805f805f61012b8787610284565b604051631afeb18d60e11b815260048101829052600360248201529091505f906001600160a01b038a16906335fd631a906044015f60405180830381865afa158015610179573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101a09190810190610488565b602081015160408201516060909201516001600160801b0382169c60809290921d9b5091995090975095505050505050565b5f805f805f6101e0866102d8565b604051631e2eaeaf60e01b8152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa158015610228573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024c9190610534565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b5f8061028f846102d8565b90505f61029d60048361054b565b60408051600287900b602082015290810182905290915060600160405160208183030381529060405280519060200120925050505b92915050565b6040515f906102f7908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561035157610351610314565b604052919050565b6001600160a01b038116811461036d575f80fd5b50565b8035600281900b8114610381575f80fd5b919050565b5f60a0828403128015610397575f80fd5b5060405160a0810167ffffffffffffffff811182821017156103bb576103bb610314565b60405282356103c981610359565b815260208301356103d981610359565b6020820152604083013562ffffff811681146103f3575f80fd5b604082015261040460608401610370565b6060820152608083013561041781610359565b60808201529392505050565b5f805f60608486031215610435575f80fd5b833561044081610359565b92506020840135915061045560408501610370565b90509250925092565b5f806040838503121561046f575f80fd5b823561047a81610359565b946020939093013593505050565b5f60208284031215610498575f80fd5b815167ffffffffffffffff8111156104ae575f80fd5b8201601f810184136104be575f80fd5b805167ffffffffffffffff8111156104d8576104d8610314565b8060051b6104e860208201610328565b91825260208184018101929081019087841115610503575f80fd5b6020850194505b838510156105295784518083526020958601959093509091019061050a565b979650505050505050565b5f60208284031215610544575f80fd5b5051919050565b808201808211156102d257634e487b7160e01b5f52601160045260245ffdfea26469706673582212200f59ae3b20597ee5b9c8afd86ef4272903aea11220ba5f5248dea7997a9f1cfe64736f6c634300081a003360e060405234801561000f575f80fd5b50604051610eea380380610eea83398101604081905261002e916101a1565b8282825f61003c84826102a2565b50600161004983826102a2565b5060ff81166080524660a05261005d61006c565b60c052506103cd945050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161009c919061035c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610127575f80fd5b81516001600160401b0381111561014057610140610104565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016e5761016e610104565b604052818152838201602001851015610185575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f606084860312156101b3575f80fd5b83516001600160401b038111156101c8575f80fd5b6101d486828701610118565b602086015190945090506001600160401b038111156101f1575f80fd5b6101fd86828701610118565b925050604084015160ff81168114610213575f80fd5b809150509250925092565b600181811c9082168061023257607f821691505b60208210810361025057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029d57805f5260205f20601f840160051c8101602085101561027b5750805b601f840160051c820191505b8181101561029a575f8155600101610287565b50505b505050565b81516001600160401b038111156102bb576102bb610104565b6102cf816102c9845461021e565b84610256565b6020601f821160018114610301575f83156102ea5750848201515b5f19600385901b1c1916600184901b17845561029a565b5f84815260208120601f198516915b828110156103305787850151825560209485019460019092019101610310565b508482101561034d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8083546103698161021e565b6001821680156103805760018114610395576103c2565b60ff19831686528115158202860193506103c2565b865f5260205f205f5b838110156103ba5781548882015260019091019060200161039e565b505081860193505b509195945050505050565b60805160a05160c051610af36103f75f395f61044201525f61040d01525f61013f0152610af35ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806340c10f191161008857806395d89b411161006357806395d89b41146101cc578063a9059cbb146101d4578063d505accf146101e7578063dd62ed3e146101fc575f80fd5b806340c10f191461017b57806370a082311461018e5780637ecebe00146101ad575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610127578063313ce5671461013a5780633644e51514610173575b5f80fd5b6100d7610226565b6040516100e4919061083f565b60405180910390f35b6101006100fb36600461088f565b6102b1565b60405190151581526020016100e4565b61011960025481565b6040519081526020016100e4565b6101006101353660046108b7565b61031d565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100e4565b61011961040a565b61010061018936600461088f565b610464565b61011961019c3660046108f1565b60036020525f908152604090205481565b6101196101bb3660046108f1565b60056020525f908152604090205481565b6100d7610478565b6101006101e236600461088f565b610485565b6101fa6101f5366004610911565b6104fb565b005b61011961020a36600461097e565b600460209081525f928352604080842090915290825290205481565b5f8054610232906109af565b80601f016020809104026020016040519081016040528092919081815260200182805461025e906109af565b80156102a95780601f10610280576101008083540402835291602001916102a9565b820191905f5260205f20905b81548152906001019060200180831161028c57829003601f168201915b505050505081565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061030b9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1981146103765761035283826109fb565b6001600160a01b0386165f9081526004602090815260408083203384529091529020555b6001600160a01b0385165f908152600360205260408120805485929061039d9084906109fb565b90915550506001600160a01b038085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103f79087815260200190565b60405180910390a3506001949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461043f5761043a61073e565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f61046f83836107d6565b50600192915050565b60018054610232906109af565b335f908152600360205260408120805483919083906104a59084906109fb565b90915550506001600160a01b0383165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061030b9086815260200190565b428410156105505760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f600161055b61040a565b6001600160a01b038a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f1981840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610663573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116158015906106995750876001600160a01b0316816001600160a01b0316145b6106d65760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610547565b6001600160a01b039081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161076e9190610a0e565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546107e79190610aaa565b90915550506001600160a01b0382165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461088a575f80fd5b919050565b5f80604083850312156108a0575f80fd5b6108a983610874565b946020939093013593505050565b5f805f606084860312156108c9575f80fd5b6108d284610874565b92506108e060208501610874565b929592945050506040919091013590565b5f60208284031215610901575f80fd5b61090a82610874565b9392505050565b5f805f805f805f60e0888a031215610927575f80fd5b61093088610874565b965061093e60208901610874565b95506040880135945060608801359350608088013560ff81168114610961575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f806040838503121561098f575f80fd5b61099883610874565b91506109a660208401610874565b90509250929050565b600181811c908216806109c357607f821691505b6020821081036109e157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610317576103176109e7565b5f8083545f8160011c90506001821680610a2957607f821691505b602082108103610a4757634e487b7160e01b5f52602260045260245ffd5b808015610a5b5760018114610a7057610a9e565b60ff1984168752821515830287019450610a9e565b5f888152602090205f5b84811015610a9657815489820152600190910190602001610a7a565b505082870194505b50929695505050505050565b80820180821115610317576103176109e756fea2646970667358221220f4620711d0f8649f80fed98a6eb335b7806c86e0ebaba0b9fa57daf20d6ed2f364736f6c634300081a00336080604052348015600e575f80fd5b50604051610521380380610521833981016040819052602b91607b565b5f80546001600160a01b039485166001600160a01b031991821617909155600180549390941692169190911790915560025560af565b80516001600160a01b03811681146076575f80fd5b919050565b5f805f60608486031215608c575f80fd5b6093846061565b9250609f602085016061565b9150604084015190509250925092565b610465806100bc5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806358dbbe811461005957806391b7f5ed14610089578063a035b1fe1461009e578063d004f0f7146100b5578063f5992699146100c8575b5f80fd5b60015461006c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009c6100973660046103c4565b6100da565b005b6100a760025481565b604051908152602001610080565b61009c6100c33660046103db565b610115565b5f5461006c906001600160a01b031681565b60028190556040518181527ff347ee99503bf19c028bd6b18f3c676e82a9bb5b2bb5225aebe0fd62fd6a0d199060200160405180910390a150565b5f805481906001600160a01b039081169085160361015257506001546002546001600160a01b039091169061014b90849061037e565b91506101c2565b6001546001600160a01b039081169085160361018557505f546002546001600160a01b039091169061014b908490610399565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b60448201526064015b60405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd906064016020604051808303815f875af1158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102369190610410565b6102745760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101b9565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0382169063a9059cbb906044016020604051808303815f875af11580156102be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e29190610410565b6103205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101b9565b604080516001600160a01b03808716825283166020820152908101849052606081018390523360808201527fb39c9bc43f811e1a7ce159c5f147458fdb80266bf23c17322013316e27e086d09060a00160405180910390a150505050565b5f6103928383670de0b6b3a76400006103a9565b9392505050565b5f61039283670de0b6b3a7640000845b5f825f1904841183021582026103bd575f80fd5b5091020490565b5f602082840312156103d4575f80fd5b5035919050565b5f80604083850312156103ec575f80fd5b82356001600160a01b0381168114610402575f80fd5b946020939093013593505050565b5f60208284031215610420575f80fd5b81518015158114610392575f80fdfea264697066735822122071f33bd4e906706fab2f1d579ad88e83e4a15cb735911cd69a3275ede2ed3ced64736f6c634300081a0033","sourceMap":"936:10725:53:-:0;;;1756:794;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1843:3;1827:20;;;;;:::i;:::-;508:25:57;;;496:2;481:18;1827:20:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1813:34:53;;;;;1866:40;;;;;:::i;:::-;-1:-1:-1;;;;;728:32:57;;;710:51;;698:2;683:18;1866:40:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1857:49:53;;;1946:11;;1929:29;;;;;:::i;:::-;-1:-1:-1;;;;;728:32:57;;;710:51;;698:2;683:18;1929:29:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1916:42:53;;;1978:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1968:23:53;;;2014:37;;2048:2;;2014:37;;;:::i;:::-;1110:2:57;1092:21;;;1149:1;1129:18;;;1122:29;-1:-1:-1;;;1182:3:57;1167:19;;1160:40;1238:3;1231:4;1216:20;;1209:33;;;1279:1;1258:19;;;1251:30;-1:-1:-1;;;1312:3:57;1297:19;;1290:33;1407:4;1395:17;;;-1:-1:-1;1375:18:57;;1368:45;1355:3;1340:19;2014:37:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2002:49:53;;;2073:37;;2107:2;;2073:37;;;:::i;:::-;1762:2:57;1744:21;;;1801:1;1781:18;;;1774:29;-1:-1:-1;;;1834:3:57;1819:19;;1812:40;1890:3;1883:4;1868:20;;1861:33;;;1931:1;1910:19;;;1903:30;-1:-1:-1;;;1964:3:57;1949:19;;1942:33;2059:4;2047:17;;;-1:-1:-1;2027:18:57;;2020:45;2007:3;1992:19;2073:37:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2061:49:53;;;;;;;2125:9;;:21;;;;2121:99;;;2188:9;;;2199;;;-1:-1:-1;;;;;2162:47:53;;;;;;;;;;2121:99;2263:9;;2283;;2295:12;2236:72;;;;;:::i;:::-;-1:-1:-1;;;;;2296:32:57;;;2278:51;;2365:32;;;;2360:2;2345:18;;2338:60;2429:2;2414:18;;2407:34;2266:2;2251:18;2236:72:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2230:78:53;;;;;2327:9;;:51;;-1:-1:-1;;;2327:51:53;;2350:4;2327:51;;;2653::57;2357:20:53;2720:18:57;;;2713:34;2327:14:53;;;;;2626:18:57;;2327:51:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2319:107;;;;-1:-1:-1;;;2319:107:53;;3242:2:57;2319:107:53;;;3224:21:57;3281:2;3261:18;;;3254:30;3320:34;3300:18;;;3293:62;-1:-1:-1;;;3371:18:57;;;3364:41;3422:19;;2319:107:53;;;;;;;;;2444:9;;:51;;-1:-1:-1;;;2444:51:53;;2467:4;2444:51;;;2653::57;2474:20:53;2720:18:57;;;2713:34;-1:-1:-1;;;;;2444:14:53;;;;;;2626:18:57;;2444:51:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2436:107;;;;-1:-1:-1;;;2436:107:53;;3654:2:57;2436:107:53;;;3636:21:57;3693:2;3673:18;;;3666:30;3732:34;3712:18;;;3705:62;-1:-1:-1;;;3783:18:57;;;3776:41;3834:19;;2436:107:53;3452:407:57;2436:107:53;1756:794;;936:10725;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:343:57:-;93:6;101;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;-1:-1:-1;;215:16:57;;321:2;306:18;;;300:25;215:16;;300:25;;-1:-1:-1;14:343:57:o;2758:277::-;2825:6;2878:2;2866:9;2857:7;2853:23;2849:32;2846:52;;;2894:1;2891;2884:12;2846:52;2926:9;2920:16;2979:5;2972:13;2965:21;2958:5;2955:32;2945:60;;3001:1;2998;2991:12;2945:60;3024:5;2758:277;-1:-1:-1;;;2758:277:57:o;3452:407::-;936:10725:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b50600436106100cb575f3560e01c8063542524dd1161008857806391b7f5ed1161006357806391b7f5ed1461029057806396f5e27c146102a3578063b0f479a1146102b6578063c7b8e15d146102dc575f80fd5b8063542524dd1461025d57806357eb1da7146102475780636af577411461027d575f80fd5b806301480703146100cf57806306ba06fa14610169578063100d3f741461017e57806314ee3677146101bb578063182148ef146101ce5780632ba31c5314610247575b5f80fd5b6100d76102e4565b604080518251600290810b82526020808501516001600160a01b03908116828501528585015181168486015260608087015181860152608080880151805184168288015293840151831660a0808801919091529684015162ffffff1660c08701529083015190930b60e08501529101518116610100830152919092015116610120820152610140015b60405180910390f35b61017c61017736600461187e565b6105b8565b005b61019161018c3660046118e1565b610a2c565b604080516001600160a01b0390951685526020850193909352918301526060820152608001610160565b61017c6101c9366004611950565b610b8f565b5f5460015460028054610207936001600160a01b03908116938082169362ffffff600160a01b83041693600160b81b909204900b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a001610160565b61024f600681565b604051908152602001610160565b610265611173565b6040516001600160a01b039091168152602001610160565b61017c61028b36600461197b565b611195565b61017c61029e366004611950565b611300565b61017c6102b1366004611a77565b611371565b7f0000000000000000000000000000000000000000000000000000000000000000610265565b6102656113ea565b6040805160c0810182525f80825260208083018290528284018290526060808401839052845160a080820187528482529281018490528086018490529081018390526080808201849052840152820181905291516332c961d960e01b815290919081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e631bcbf907f00000000000000000000000000000000000000000000000000000000000000009083906332c961d9906103b0908790600401611ae6565b602060405180830381865afa1580156103cb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103ef9190611afa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401608060405180830381865afa158015610436573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061045a9190611b11565b5050915091506040518060c001604052808260020b8152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561050e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105329190611afa565b81526040805160a0810182525f546001600160a01b03908116825260015480821660208481019190915262ffffff600160a01b83041684860152600160b81b909104600290810b606085015254821660808401528401919091527f0000000000000000000000000000000000000000000000000000000000000000169101529392505050565b5f831315610779576040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af115801561062a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061064e9190611b6d565b61069f5760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637930206661696c6564000000000000000060448201526064015b60405180910390fd5b6040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af1158015610709573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061072d9190611b6d565b6107795760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637931206661696c656400000000000000006044820152606401610696565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610805573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108299190611b6d565b6108755760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637930206661696c65640000006044820152606401610696565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610901573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109259190611b6d565b6109715760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637931206661696c65640000006044820152606401610696565b60408051608081018252600284810b825283900b60208201528082018590525f606082018190529151632d35e7ed60e11b815290916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691635a6bcfda916109e5918590600401611b8c565b6020604051808303815f875af1158015610a01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a259190611afa565b5050505050565b5f80808062ffffff85166001600160a01b03808a16908b1610158288128015610b02575f610a658a5f0385620f424003620f42406113fa565b905082610a7e57610a798d8d8d6001611497565b610a8b565b610a8b8c8e8d60016114e3565b9650868110610abf578b9750620f42408414610ab657610ab1878586620f4240036115a8565b610ab8565b865b9450610ad8565b809650610ace8d8c83866115d8565b9750868a5f030394505b82610aee57610ae98d898d5f6114e3565b610afa565b610afa888e8d5f611497565b955050610b80565b81610b1857610b138c8c8c5f6114e3565b610b24565b610b248b8d8c5f611497565b9450848910610b35578a9650610b47565b889450610b448c8b878561162f565b96505b81610b5e57610b598c888c6001611497565b610b6b565b610b6b878d8c60016114e3565b9550610b7d868485620f4240036115a8565b93505b50505095509550955095915050565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610c1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3f9190611b6d565b610c8b5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637930206661696c65640000006044820152606401610696565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610d17573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3b9190611b6d565b610d875760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637931206661696c65640000006044820152606401610696565b5f807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e631bcbf7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166332c961d95f6040518263ffffffff1660e01b8152600401610e259190611ae6565b602060405180830381865afa158015610e40573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e649190611afa565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401608060405180830381865afa158015610eab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecf9190611b11565b5050915091505f610f0a836001600160a01b0316670de0b6b3a7640000610ef69190611bf1565b846001600160a01b0316600160c01b6113fa565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f69573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8d9190611afa565b9050808211156110795760408051606081018252600180825260208201889052915f91908101610fc36401000276a36001611c27565b6001600160a01b039081169091526040805180820182525f80825260208201819052915163088a742d60e21b8152939450927f000000000000000000000000000000000000000000000000000000000000000090921691632229d0b4916110309186908690600401611c46565b6020604051808303815f875af115801561104c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110709190611afa565b50505050610a25565b80821015610a2557604080516060810182525f808252602082018890529182919081016110bb600173fffd8963efd1fc6a506488495d951d5263988d26611c08565b6001600160a01b039081169091526040805180820182525f80825260208201819052915163088a742d60e21b8152939450927f000000000000000000000000000000000000000000000000000000000000000090921691632229d0b4916111289186908690600401611c46565b6020604051808303815f875af1158015611144573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111689190611afa565b505050505050505050565b611192600173fffd8963efd1fc6a506488495d951d5263988d26611c08565b81565b6040805160a0810182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081168083527f000000000000000000000000000000000000000000000000000000000000000082166020840181905262ffffff8a811685870181905260028b810b60608801528a861660809097018790525f80546001600160a01b03199081169096178155600180546001600160b81b031916909517600160a01b9093029290921762ffffff60b81b1916600160b81b938d16939093029290921790925580549092169093179055915163695c5bf560e01b81527f00000000000000000000000000000000000000000000000000000000000000009092169163695c5bf5916112b89186908690600401611ca6565b6020604051808303815f875af11580156112d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112f89190611cfb565b505050505050565b6040516391b7f5ed60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391b7f5ed906024015f604051808303815f87803b15801561135f575f80fd5b505af1158015610a25573d5f803e3d5ffd5b60405163d004f0f760e01b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d004f0f7906044015f604051808303815f87803b1580156113d8575f80fd5b505af11580156112f8573d5f803e3d5ffd5b6111926401000276a36001611c27565b5f838302815f1985870982811083820303915050808411611419575f80fd5b805f0361142b57508290049050611490565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b5f6001600160a01b038481169086160360ff81901d90810118600160601b6001600160801b0385166114ca8184846113fa565b9350845f83858409111684019350505050949350505050565b5f836001600160a01b0316856001600160a01b03161115611502579293925b6001600160a01b03851661151c5762bfc9215f526004601cfd5b600160601b600160e01b03606084901b166001600160a01b03868603168361156f57866001600160a01b031661155c8383896001600160a01b03166113fa565b8161156957611569611d16565b0461159b565b61159b6115868383896001600160a01b03166115a8565b886001600160a01b0316808204910615150190565b925050505b949350505050565b5f6115b48484846113fa565b905081806115c4576115c4611d16565b838509156114905760010180611490575f80fd5b5f6001600160801b038416156001600160a01b03861615171561160257634f2461b85f526004601cfd5b81611619576116148585856001611672565b611626565b611626858585600161175d565b95945050505050565b5f6001600160801b038416156001600160a01b03861615171561165957634f2461b85f526004601cfd5b8161166a576116148585855f61175d565b6116268585855f5b5f81156116e2575f6001600160a01b038411156116a6576116a184600160601b876001600160801b03166113fa565b6116bd565b6116bd6001600160801b038616606086901b611d2a565b90506116da6116d5826001600160a01b038916611d49565b61183f565b9150506115a0565b5f6001600160a01b0384111561170f5761170a84600160601b876001600160801b03166115a8565b61172c565b61172c606085901b6001600160801b038716808204910615150190565b9050806001600160a01b0387161161174b57634323a5555f526004601cfd5b6001600160a01b0386160390506115a0565b5f825f0361176c5750836115a0565b600160601b600160e01b03606085901b1682156117fe576001600160a01b038616848102908582816117a0576117a0611d16565b04036117d0578181018281106117ce576117c483896001600160a01b0316836115a8565b93505050506115a0565b505b506116da81856117e96001600160a01b038a1683611d2a565b6117f39190611d49565b808204910615150190565b6001600160a01b0386168481029085820414818311166118255763f5c787f15f526004601cfd5b8082036117c46116d5846001600160a01b038b16846115a8565b806001600160a01b0381168114611860576118606393dafdf160e01b611865565b919050565b805f5260045ffd5b8060020b811461187b575f80fd5b50565b5f805f60608486031215611890575f80fd5b8335925060208401356118a28161186d565b915060408401356118b28161186d565b809150509250925092565b6001600160a01b038116811461187b575f80fd5b62ffffff8116811461187b575f80fd5b5f805f805f60a086880312156118f5575f80fd5b8535611900816118bd565b94506020860135611910816118bd565b935060408601356001600160801b038116811461192b575f80fd5b9250606086013591506080860135611942816118d1565b809150509295509295909350565b5f60208284031215611960575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f805f805f60a0868803121561198f575f80fd5b853561199a816118d1565b945060208601356119aa8161186d565b935060408601356119ba816118bd565b925060608601356119ca816118bd565b9150608086013567ffffffffffffffff8111156119e5575f80fd5b8601601f810188136119f5575f80fd5b803567ffffffffffffffff811115611a0f57611a0f611967565b604051601f8201601f19908116603f0116810167ffffffffffffffff81118282101715611a3e57611a3e611967565b6040528181528282016020018a1015611a55575f80fd5b816020840160208301375f602083830101528093505050509295509295909350565b5f8060408385031215611a88575f80fd5b8235611a93816118bd565b946020939093013593505050565b80546001600160a01b0390811683526001820154808216602085015260a081901c62ffffff16604085015260b81c600290810b60608501529091015416608090910152565b60a08101611af48284611aa1565b92915050565b5f60208284031215611b0a575f80fd5b5051919050565b5f805f8060808587031215611b24575f80fd5b8451611b2f816118bd565b6020860151909450611b408161186d565b6040860151909350611b51816118d1565b6060860151909250611b62816118d1565b939692955090935050565b5f60208284031215611b7d575f80fd5b81518015158114611490575f80fd5b611b968184611aa1565b8151600290810b60a08301526020830151900b60c0820152604082015160e082015260609091015161010082015261014061012082018190525f9082015261016001919050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417611af457611af4611bdd565b6001600160a01b038281168282160390811115611af457611af4611bdd565b6001600160a01b038181168382160190811115611af457611af4611bdd565b611c508185611aa1565b8251151560a082015260208084015160c08301526040909301516001600160a01b031660e082015281511515610100820152910151151561012082015261016061014082018190525f9082015261018001919050565b611cb08185611aa1565b60018060a01b03831660a082015260e060c08201525f82518060e0840152806020850161010085015e5f6101008285010152610100601f19601f830116840101915050949350505050565b5f60208284031215611d0b575f80fd5b81516114908161186d565b634e487b7160e01b5f52601260045260245ffd5b5f82611d4457634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115611af457611af4611bdd56fea2646970667358221220ac598dbc9802d34d8779520416b36bf01582f124c1671ffbabe2fc31888f9de064736f6c634300081a0033","sourceMap":"936:10725:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:422;;;:::i;:::-;;;;352:13:57;;349:1;338:28;;;320:47;;427:4;415:17;;;409:24;-1:-1:-1;;;;;405:50:57;;;383:20;;;376:80;504:17;;;498:24;494:50;;472:20;;;465:80;601:4;589:17;;;583:24;561:20;;;554:54;655:4;643:17;;;637:24;703:19;;699:45;;677:20;;;670:75;792:23;;;786:30;782:56;;443:3;761:19;;;754:85;;;;886:23;;;880:30;912:8;876:45;870:3;855:19;;848:74;979:23;;;973:30;959:45;;;953:3;938:19;;931:74;1052:23;;1046:30;1042:56;;1036:3;1021:19;;1014:85;1136:16;;;;1130:23;80:31;1212:6;1197:22;;68:44;307:3;292:19;2654:422:53;;;;;;;;5420:854;;;;;;:::i;:::-;;:::i;:::-;;8208:3451;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;3217:32:57;;;3199:51;;3281:2;3266:18;;3259:34;;;;3309:18;;;3302:34;3367:2;3352:18;;3345:34;3186:3;3171:19;8208:3451:53;2968:417:57;3275:1685:53;;;;;;:::i;:::-;;:::i;1230:22::-;;;;;;;;;;-1:-1:-1;;;;;1230:22:53;;;;;;;;;-1:-1:-1;;;1230:22:53;;;;-1:-1:-1;;;1230:22:53;;;;;;;;;;;;;-1:-1:-1;;;;;3966:32:57;;;3948:51;;4035:32;;;4030:2;4015:18;;4008:60;4116:8;4104:21;;;4084:18;;;4077:49;;;;4173:1;4162:21;4157:2;4142:18;;4135:49;4221:32;;;;4215:3;4200:19;;4193:61;3935:3;3920:19;1230:22:53;3620:640:57;1523:44:53;;1566:1;1523:44;;;;;4411:25:57;;;4399:2;4384:18;1523:44:53;4265:177:57;1385:69:53;;;:::i;:::-;;;-1:-1:-1;;;;;4611:32:57;;;4593:51;;4581:2;4566:18;1385:69:53;4447:203:57;4966:448:53;;;;;;:::i;:::-;;:::i;3082:76::-;;;;;;:::i;:::-;;:::i;3164:105::-;;;;;;:::i;:::-;;:::i;2556:92::-;2634:6;2556:92;;1310:69;;;:::i;2654:422::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2796:21:53;;-1:-1:-1;;;2796:21:53;;-1:-1:-1;;;;;;;;;;2766:7:53;:16;;;;2783:11;;2766:16;;2796:12;;:21;;-1:-1:-1;;2796:21:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2766:52;;-1:-1:-1;;;;;;2766:52:53;;;;;;;-1:-1:-1;;;;;8574:32:57;;;2766:52:53;;;8556:51:57;8623:18;;;8616:34;8529:18;;2766:52:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2727:91;;;;;;2836:233;;;;;;;;2870:4;2836:233;;;;;;2902:12;-1:-1:-1;;;;;2836:233:53;;;;;2945:11;-1:-1:-1;;;;;2836:233:53;;;;;2981:3;-1:-1:-1;;;;;2981:9:53;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2836:233;;;;;;;;;;3012:7;2836:233;-1:-1:-1;;;;;2836:233:53;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2836:233:53;;;;;;;-1:-1:-1;;;2836:233:53;;;;;;;;;;;;;;;;;;;;;;;;3050:7;2836:233;;;;2829:240;2654:422;-1:-1:-1;;;2654:422:53:o;5420:854::-;5537:1;5520:14;:18;5516:245;;;5562:54;;-1:-1:-1;;;5562:54:53;;5585:4;5562:54;;;8556:51:57;8623:18;;;8616:34;;;5562:9:53;-1:-1:-1;;;;;5562:14:53;;;;8529:18:57;;5562:54:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5554:91;;;;-1:-1:-1;;;5554:91:53;;10264:2:57;5554:91:53;;;10246:21:57;10303:2;10283:18;;;10276:30;10342:26;10322:18;;;10315:54;10386:18;;5554:91:53;;;;;;;;;5667:54;;-1:-1:-1;;;5667:54:53;;5690:4;5667:54;;;8556:51:57;8623:18;;;8616:34;;;5667:9:53;-1:-1:-1;;;;;5667:14:53;;;;8529:18:57;;5667:54:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5659:91;;;;-1:-1:-1;;;5659:91:53;;10617:2:57;5659:91:53;;;10599:21:57;10656:2;10636:18;;;10629:30;10695:26;10675:18;;;10668:54;10739:18;;5659:91:53;10415:348:57;5659:91:53;5779:53;;-1:-1:-1;;;5779:53:53;;-1:-1:-1;;;;;5805:6:53;8574:32:57;;5779:53:53;;;8556:51:57;-1:-1:-1;;8623:18:57;;;8616:34;5779:9:53;:17;;;;8529:18:57;;5779:53:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5771:95;;;;-1:-1:-1;;;5771:95:53;;10970:2:57;5771:95:53;;;10952:21:57;11009:2;10989:18;;;10982:30;11048:31;11028:18;;;11021:59;11097:18;;5771:95:53;10768:353:57;5771:95:53;5884:53;;-1:-1:-1;;;5884:53:53;;-1:-1:-1;;;;;5910:6:53;8574:32:57;;5884:53:53;;;8556:51:57;-1:-1:-1;;8623:18:57;;;8616:34;5884:9:53;:17;;;;8529:18:57;;5884:53:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5876:95;;;;-1:-1:-1;;;5876:95:53;;11328:2:57;5876:95:53;;;11310:21:57;11367:2;11347:18;;;11340:30;11406:31;11386:18;;;11379:59;11455:18;;5876:95:53;11126:353:57;5876:95:53;6033:180;;;;;;;;;;;;;;;;;;;;;;;;;;;5982:48;6033:180;;;;;;6224:43;;-1:-1:-1;;;6224:43:53;;6033:180;;-1:-1:-1;;;;;6224:6:53;:22;;;;:43;;6033:180;;6224:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5506:768;5420:854;;;:::o;8208:3451::-;8418:24;;;;8534:26;;;-1:-1:-1;;;;;8617:41:53;;;;;;;;8687:19;;;8721:2922;;;;8752:30;8805:81;8830:15;8829:16;;8863:8;1300:3;8848:23;1300:3;8805:15;:81::i;:::-;8752:134;;8915:10;:230;;9058:87;9088:19;9109:18;9129:9;9140:4;9058:29;:87::i;:::-;8915:230;;;8948:87;8978:18;8998:19;9019:9;9030:4;8948:29;:87::i;:::-;8904:241;;9193:8;9167:22;:34;9163:969;;9308:18;9289:37;;1300:3;9360:8;:24;:256;;9546:70;9572:8;9582;9607;1300:3;9592:23;9546:25;:70::i;:::-;9360:256;;;9411:8;9360:256;9348:268;;9163:969;;;9726:22;9715:33;;9789:153;9854:19;9875:9;9886:22;9910:10;9789:39;:153::i;:::-;9770:172;;10105:8;10086:15;10085:16;;10077:36;10065:48;;9163:969;10161:10;:228;;10303:86;10333:19;10354:16;10372:9;10383:5;10303:29;:86::i;:::-;10161:228;;;10194:86;10224:16;10242:19;10263:9;10274:5;10194:29;:86::i;:::-;10149:240;;8734:1670;8721:2922;;;10440:10;:232;;10584:88;10614:19;10635:18;10655:9;10666:5;10584:29;:88::i;:::-;10440:232;;;10473:88;10503:18;10523:19;10544:9;10555:5;10473:29;:88::i;:::-;10428:244;;10722:9;10702:15;10694:37;10690:516;;10839:18;10820:37;;10690:516;;;11011:15;10991:36;;11092:95;11133:19;11154:9;11165;11176:10;11092:40;:95::i;:::-;11049:138;;10690:516;11234:10;:226;;11375:85;11405:19;11426:16;11444:9;11455:4;11375:29;:85::i;:::-;11234:226;;;11267:85;11297:16;11315:19;11336:9;11347:4;11267:29;:85::i;:::-;11223:237;;11558:70;11584:8;11594;11619;1300:3;11604:23;11558:25;:70::i;:::-;11546:82;;8721:2922;8510:3143;;;8208:3451;;;;;;;;;;:::o;3275:1685::-;3337:57;;-1:-1:-1;;;3337:57:53;;-1:-1:-1;;;;;3363:10:53;8574:32:57;;3337:57:53;;;8556:51:57;-1:-1:-1;;8623:18:57;;;8616:34;3337:9:53;:17;;;;8529:18:57;;3337:57:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3329:99;;;;-1:-1:-1;;;3329:99:53;;10970:2:57;3329:99:53;;;10952:21:57;11009:2;10989:18;;;10982:30;11048:31;11028:18;;;11021:59;11097:18;;3329:99:53;10768:353:57;3329:99:53;3446:57;;-1:-1:-1;;;3446:57:53;;-1:-1:-1;;;;;3472:10:53;8574:32:57;;3446:57:53;;;8556:51:57;-1:-1:-1;;8623:18:57;;;8616:34;3446:9:53;:17;;;;8529:18:57;;3446:57:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3438:99;;;;-1:-1:-1;;;3438:99:53;;11328:2:57;3438:99:53;;;11310:21:57;11367:2;11347:18;;;11340:30;11406:31;11386:18;;;11379:59;11455:18;;3438:99:53;11126:353:57;3438:99:53;3549:20;3571:10;3587:7;-1:-1:-1;;;;;3587:16:53;;3604:11;3617:7;-1:-1:-1;;;;;3617:12:53;;3630:7;3617:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3587:52;;-1:-1:-1;;;;;;3587:52:53;;;;;;;-1:-1:-1;;;;;8574:32:57;;;3587:52:53;;;8556:51:57;8623:18;;;8616:34;8529:18;;3587:52:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3548:91;;;;;;3658:20;3681:80;3705:12;-1:-1:-1;;;;;3697:21:53;3721:6;3697:30;;;;:::i;:::-;3737:12;-1:-1:-1;;;;;3729:21:53;-1:-1:-1;;;3681:15:53;:80::i;:::-;3658:103;;3771:16;3790:3;-1:-1:-1;;;;;3790:9:53;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3771:30;;3831:8;3816:12;:23;3812:1142;;;3932:222;;;;;;;;3873:4;3932:222;;;;;;;;;3873:4;3855:15;;3932:222;;;1352:27;1586:10:40;1378:1:53;1352:27;:::i;:::-;-1:-1:-1;;;;;3932:222:53;;;;;;4233:70;;;;;;;;4169:45;4233:70;;;;;;;;;4318:50;;-1:-1:-1;;;4318:50:53;;3892:262;;-1:-1:-1;4233:70:53;4318:10;:15;;;;;;:50;;3892:262;;4233:70;;4318:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3841:539;;;3812:1142;;;4405:8;4390:12;:23;4386:568;;;4507:222;;;;;;;;4429:15;4507:222;;;;;;;;;4429:15;;;4507:222;;;1427:27;1453:1;1766:49:40;1427:27:53;:::i;:::-;-1:-1:-1;;;;;4507:222:53;;;;;;4808:70;;;;;;;;4744:45;4808:70;;;;;;;;;4893:50;;-1:-1:-1;;;4893:50:53;;4467:262;;-1:-1:-1;4808:70:53;4893:10;:15;;;;;;:50;;4467:262;;4808:70;;4893:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4415:539;;;3319:1641;;;;3275:1685;:::o;1385:69::-;1427:27;1453:1;1766:49:40;1427:27:53;:::i;:::-;1385:69;:::o;4966:448::-;5116:225;;;;;;;;5171:9;-1:-1:-1;;;;;5116:225:53;;;;;;5229:9;5116:225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5106:235:53;;-1:-1:-1;;;;;;5106:235:53;;;;;;;;-1:-1:-1;5106:235:53;;-1:-1:-1;;;;;;5106:235:53;;;;-1:-1:-1;;;5106:235:53;;;;;;;-1:-1:-1;;;;5106:235:53;-1:-1:-1;;;5106:235:53;;;;;;;;;;;;;;;;;;;;;;;;5352:55;;-1:-1:-1;;;5352:55:53;;:11;:22;;;;;;:55;;5384:12;;5398:8;;5352:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4966:448;;;;;:::o;3082:76::-;3132:19;;-1:-1:-1;;;3132:19:53;;;;;4411:25:57;;;3132:3:53;-1:-1:-1;;;;;3132:12:53;;;;4384:18:57;;3132:19:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3164:105;3235:27;;-1:-1:-1;;;3235:27:53;;-1:-1:-1;;;;;8574:32:57;;;3235:27:53;;;8556:51:57;8623:18;;;8616:34;;;3235:3:53;:8;;;;8529:18:57;;3235:27:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1310:69;1352:27;1586:10:40;1378:1:53;1352:27;:::i;741:4141:25:-;823:14;1212:5;;;823:14;-1:-1:-1;;1216:1:25;1212;1400:20;1473:5;1469:2;1466:13;1458:5;1454:2;1450:14;1446:34;1437:43;;;1633:5;1619:11;:19;1611:28;;;;;;1720:5;1729:1;1720:10;1716:177;;-1:-1:-1;1807:23:25;;;;-1:-1:-1;1865:13:25;;1716:177;2193:17;2293:11;2290:1;2287;2280:25;2701:12;2717:15;;;2716:31;;2869:22;;;;;3776:1;3757;:15;;3756:21;;4019:17;;;4015:21;;4008:28;4081:17;;;4077:21;;4070:28;4144:17;;;4140:21;;4133:28;4207:17;;;4203:21;;4196:28;4270:17;;;4266:21;;4259:28;4334:17;;;4330:21;;;4323:28;3313:12;;;;3309:23;;;3334:1;3305:31;2454:20;;;2443:32;;;3372:12;;;;2501:21;;;;3029:16;;;;3363:21;;;;4827:11;;;;;-1:-1:-1;;741:4141:25;;;;;;:::o;11602:1078:36:-;11753:15;-1:-1:-1;;;;;10731:50:36;;;10679;;;10675:107;10862:3;10858:14;;;11112:15;;;11102:26;-1:-1:-1;;;;;;;;12020:50:36;;12476:51;12020:50;11102:26;348:27:24;12476:15:36;:51::i;:::-;12466:61;;12655:7;12651:1;12637:11;12626:9;12614:10;12607:42;12604:49;12600:63;12591:7;12587:77;12576:88;;12562:112;;;11602:1078;;;;;;:::o;9411:1050::-;9562:7;9629:13;-1:-1:-1;;;;;9613:29:36;:13;-1:-1:-1;;;;;9613:29:36;;9609:98;;;9678:13;;9693;9609:98;-1:-1:-1;;;;;9853:13:36;9849:62;9839:205;;9945:10;9942:1;9935:21;10021:4;10015;10008:18;9839:205;-1:-1:-1;;;;;;;308:2:24;10093:45:36;;;;-1:-1:-1;;;;;10173:29:36;;;10152:50;10224:7;:220;;10431:13;-1:-1:-1;;;;;10374:70:36;:54;10390:10;10402;10414:13;-1:-1:-1;;;;;10374:54:36;:15;:54::i;:::-;:70;;;;;:::i;:::-;;10224:220;;;10250:105;10275:64;10301:10;10313;10325:13;-1:-1:-1;;;;;10275:64:36;:25;:64::i;:::-;10341:13;-1:-1:-1;;;;;10250:105:36;656:9:42;;;670;;667:16;;652:32;;491:223;10250:105:36;10217:227;;;;9411:1050;;;;;;;:::o;5164:296:25:-;5256:14;5315:25;5322:1;5325;5328:11;5315:6;:25::i;:::-;5306:34;;5371:11;5358:25;;;;;:::i;:::-;5368:1;5365;5358:25;:30;5354:90;;5416:8;;:12;5408:21;;;;;6473:909:36;6627:7;-1:-1:-1;;;;;6900:9:36;6896:50;6889:58;-1:-1:-1;;;;;6817:8:36;6813:57;6806:65;6786:175;6783:309;;;6990:10;6987:1;6980:21;7073:4;7067;7060:18;6783:309;7185:10;:190;;7299:76;7339:8;7349:9;7360:8;7370:4;7299:39;:76::i;:::-;7185:190;;;7210:74;7248:8;7258:9;7269:8;7279:4;7210:37;:74::i;:::-;7178:197;6473:909;-1:-1:-1;;;;;6473:909:36:o;7951:::-;8107:7;-1:-1:-1;;;;;8380:9:36;8376:50;8369:58;-1:-1:-1;;;;;8297:8:36;8293:57;8286:65;8266:175;8263:309;;;8470:10;8467:1;8460:21;8553:4;8547;8540:18;8263:309;8659:10;:194;;8777:76;8815:8;8825:9;8836;8847:5;8777:37;:76::i;8659:194::-;8684:78;8724:8;8734:9;8745;8756:5;4451:1450;4610:7;4791:3;4787:1108;;;4810:16;-1:-1:-1;;;;;4847:27:36;;;:172;;4967:52;4983:6;-1:-1:-1;;;5009:9:36;-1:-1:-1;;;;;4967:52:36;:15;:52::i;:::-;4847:172;;;4897:47;-1:-1:-1;;;;;4897:47:36;;308:2:24;4898:33:36;;;4897:47;:::i;:::-;4810:223;-1:-1:-1;5055:42:36;5056:28;4810:223;-1:-1:-1;;;;;5056:17:36;;:28;:::i;:::-;5055:40;:42::i;:::-;5048:49;;;;;4787:1108;5128:16;-1:-1:-1;;;;;5165:27:36;;;:205;;5308:62;5334:6;-1:-1:-1;;;5360:9:36;-1:-1:-1;;;;;5308:62:36;:25;:62::i;:::-;5165:205;;;5215:70;308:2:24;5240:33:36;;;-1:-1:-1;;;;;5215:70:36;;656:9:42;;;670;;667:16;;652:32;;491:223;5215:70:36;5128:256;;5596:8;-1:-1:-1;;;;;5541:8:36;5537:57;5534:71;5524:220;;5639:10;5636:1;5629:21;5721:4;5715;5708:18;5524:220;-1:-1:-1;;;;;5850:19:36;;;;-1:-1:-1;5835:35:36;;1548:2065;1705:7;1844:6;1854:1;1844:11;1840:32;;-1:-1:-1;1864:8:36;1857:15;;1840:32;-1:-1:-1;;;;;;;308:2:24;1903:45:36;;;;1959:1648;;;;-1:-1:-1;;;;;2028:17:36;;;;;;:6;:17;:6;2067:16;;;;:::i;:::-;;:28;2063:345;;2141:20;;;2187:25;;;2183:207;;2306:60;2332:10;2344:8;-1:-1:-1;;;;;2306:60:36;2354:11;2306:25;:60::i;:::-;2291:76;;;;;;;2183:207;2097:311;2063:345;-1:-1:-1;2501:70:36;2526:10;2564:6;2539:21;-1:-1:-1;;;;;2539:21:36;;2526:10;2539:21;:::i;:::-;2538:32;;;;:::i;:::-;656:9:42;;;670;;667:16;;652:32;;491:223;1959:1648:36;-1:-1:-1;;;;;2649:17:36;;;;;;3082:20;;;3079:83;3192:23;;;3046:195;3011:397;;3300:10;3297:1;3290:21;3381:4;3375;3368:18;3011:397;3465:20;;;3510:72;:60;3465:10;-1:-1:-1;;;;;3510:60:36;;3465:20;3510:25;:60::i;473:155:35:-;559:1;-1:-1:-1;;;;;575:6:35;;;;571:50;;583:38;-1:-1:-1;;;583:36:35;:38::i;:::-;473:155;;;:::o;606:163:22:-;716:8;713:1;706:19;748:4;745:1;738:15;1231:118:57;1318:5;1315:1;1304:20;1297:5;1294:31;1284:59;;1339:1;1336;1329:12;1284:59;1231:118;:::o;1354:499::-;1426:6;1434;1442;1495:2;1483:9;1474:7;1470:23;1466:32;1463:52;;;1511:1;1508;1501:12;1463:52;1556:23;;;-1:-1:-1;1655:2:57;1640:18;;1627:32;1668:31;1627:32;1668:31;:::i;:::-;1718:7;-1:-1:-1;1777:2:57;1762:18;;1749:32;1790:31;1749:32;1790:31;:::i;:::-;1840:7;1830:17;;;1354:499;;;;;:::o;1858:131::-;-1:-1:-1;;;;;1933:31:57;;1923:42;;1913:70;;1979:1;1976;1969:12;1994:119;2079:8;2072:5;2068:20;2061:5;2058:31;2048:59;;2103:1;2100;2093:12;2118:845;2211:6;2219;2227;2235;2243;2296:3;2284:9;2275:7;2271:23;2267:33;2264:53;;;2313:1;2310;2303:12;2264:53;2352:9;2339:23;2371:31;2396:5;2371:31;:::i;:::-;2421:5;-1:-1:-1;2478:2:57;2463:18;;2450:32;2491:33;2450:32;2491:33;:::i;:::-;2543:7;-1:-1:-1;2602:2:57;2587:18;;2574:32;-1:-1:-1;;;;;2637:48:57;;2625:61;;2615:89;;2700:1;2697;2690:12;2615:89;2723:7;-1:-1:-1;2803:2:57;2788:18;;2775:32;;-1:-1:-1;2885:3:57;2870:19;;2857:33;2899:32;2857:33;2899:32;:::i;:::-;2950:7;2940:17;;;2118:845;;;;;;;;:::o;3390:225::-;3448:6;3501:2;3489:9;3480:7;3476:23;3472:32;3469:52;;;3517:1;3514;3507:12;3469:52;-1:-1:-1;3562:23:57;;3390:225;-1:-1:-1;3390:225:57:o;4837:127::-;4898:10;4893:3;4889:20;4886:1;4879:31;4929:4;4926:1;4919:15;4953:4;4950:1;4943:15;4969:1513;5085:6;5093;5101;5109;5117;5170:3;5158:9;5149:7;5145:23;5141:33;5138:53;;;5187:1;5184;5177:12;5138:53;5226:9;5213:23;5245:30;5269:5;5245:30;:::i;:::-;5294:5;-1:-1:-1;5351:2:57;5336:18;;5323:32;5364:31;5323:32;5364:31;:::i;:::-;5414:7;-1:-1:-1;5473:2:57;5458:18;;5445:32;5486:33;5445:32;5486:33;:::i;:::-;5538:7;-1:-1:-1;5597:2:57;5582:18;;5569:32;5610:33;5569:32;5610:33;:::i;:::-;5662:7;-1:-1:-1;5720:3:57;5705:19;;5692:33;5748:18;5737:30;;5734:50;;;5780:1;5777;5770:12;5734:50;5803:22;;5856:4;5848:13;;5844:27;-1:-1:-1;5834:55:57;;5885:1;5882;5875:12;5834:55;5925:2;5912:16;5951:18;5943:6;5940:30;5937:56;;;5973:18;;:::i;:::-;6022:2;6016:9;6114:2;6076:17;;-1:-1:-1;;6072:31:57;;;6105:2;6068:40;6064:54;6052:67;;6149:18;6134:34;;6170:22;;;6131:62;6128:88;;;6196:18;;:::i;:::-;6232:2;6225:22;6256;;;6297:15;;;6314:2;6293:24;6290:37;-1:-1:-1;6287:57:57;;;6340:1;6337;6330:12;6287:57;6396:6;6391:2;6387;6383:11;6378:2;6370:6;6366:15;6353:50;6449:1;6444:2;6435:6;6427;6423:19;6419:28;6412:39;6470:6;6460:16;;;;;4969:1513;;;;;;;;:::o;6718:367::-;6786:6;6794;6847:2;6835:9;6826:7;6822:23;6818:32;6815:52;;;6863:1;6860;6853:12;6815:52;6902:9;6889:23;6921:31;6946:5;6921:31;:::i;:::-;6971:5;7049:2;7034:18;;;;7021:32;;-1:-1:-1;;;6718:367:57:o;7298:555::-;7383:12;;-1:-1:-1;;;;;7379:38:57;;;7367:51;;7414:1;7450:16;;7444:23;7499:35;;;7492:4;7483:14;;7476:59;7405:3;7571:19;;;7592:8;7567:34;7560:4;7551:14;;7544:58;7652:3;7648:19;7645:1;7634:34;;;7627:4;7618:14;;7611:58;7694:13;;;7688:20;7753:28;7806:4;7797:14;;;7790:57;7298:555::o;7858:254::-;8041:3;8026:19;;8054:52;8030:9;8088:6;8054:52;:::i;:::-;7858:254;;;;:::o;8117:212::-;8215:6;8268:2;8256:9;8247:7;8243:23;8239:32;8236:52;;;8284:1;8281;8274:12;8236:52;-1:-1:-1;8307:16:57;;8117:212;-1:-1:-1;8117:212:57:o;8661:646::-;8754:6;8762;8770;8778;8831:3;8819:9;8810:7;8806:23;8802:33;8799:53;;;8848:1;8845;8838:12;8799:53;8880:9;8874:16;8899:31;8924:5;8899:31;:::i;:::-;8999:2;8984:18;;8978:25;8949:5;;-1:-1:-1;9012:31:57;8978:25;9012:31;:::i;:::-;9114:2;9099:18;;9093:25;9062:7;;-1:-1:-1;9127:32:57;9093:25;9127:32;:::i;:::-;9230:2;9215:18;;9209:25;9178:7;;-1:-1:-1;9243:32:57;9209:25;9243:32;:::i;:::-;8661:646;;;;-1:-1:-1;8661:646:57;;-1:-1:-1;;8661:646:57:o;9780:277::-;9847:6;9900:2;9888:9;9879:7;9875:23;9871:32;9868:52;;;9916:1;9913;9906:12;9868:52;9948:9;9942:16;10001:5;9994:13;9987:21;9980:5;9977:32;9967:60;;10023:1;10020;10013:12;11484:807;11850:52;11892:9;11884:6;11850:52;:::i;:::-;11953:13;;11950:1;11939:28;;;11933:3;11918:19;;11911:57;12037:4;12025:17;;12019:24;12005:39;;11999:3;11984:19;;11977:68;12100:4;12088:17;;12082:24;12076:3;12061:19;;12054:53;12162:4;12150:17;;;12144:24;12138:3;12123:19;;12116:53;12206:3;12200;12185:19;;12178:32;;;-1:-1:-1;12226:19:57;;;12219:30;12281:3;12266:19;;11484:807;-1:-1:-1;11484:807:57:o;12519:127::-;12580:10;12575:3;12571:20;12568:1;12561:31;12611:4;12608:1;12601:15;12635:4;12632:1;12625:15;12651:168;12724:9;;;12755;;12772:15;;;12766:22;;12752:37;12742:71;;12793:18;;:::i;12824:198::-;-1:-1:-1;;;;;12924:27:57;;;12895;;;12891:61;;12964:29;;12961:55;;;12996:18;;:::i;13027:195::-;-1:-1:-1;;;;;13096:27:57;;;13125;;;13092:61;;13165:28;;13162:54;;;13196:18;;:::i;13227:970::-;13661:52;13703:9;13695:6;13661:52;:::i;:::-;13764:13;;13757:21;13750:29;13744:3;13729:19;;13722:58;13835:4;13823:17;;;13817:24;13811:3;13796:19;;13789:53;13901:4;13889:17;;;13883:24;-1:-1:-1;;;;;13879:50:57;13873:3;13858:19;;13851:79;13981:13;;13974:21;13967:29;13961:3;13946:19;;13939:58;14054:17;;14048:24;14041:32;14034:40;14028:3;14013:19;;14006:69;14112:3;14106;14091:19;;14084:32;;;-1:-1:-1;14132:19:57;;;14125:30;14187:3;14172:19;;13227:970;-1:-1:-1;13227:970:57:o;14202:669::-;14436:52;14478:9;14470:6;14436:52;:::i;:::-;14554:1;14550;14545:3;14541:11;14537:19;14529:6;14525:32;14519:3;14508:9;14504:19;14497:61;14595:3;14589;14578:9;14574:19;14567:32;14417:4;14628:6;14622:13;14672:6;14666:3;14655:9;14651:19;14644:35;14734:6;14727:4;14719:6;14715:17;14709:3;14698:9;14694:19;14688:53;14791:1;14785:3;14776:6;14765:9;14761:22;14757:32;14750:43;14861:3;14854:2;14850:7;14845:2;14837:6;14833:15;14829:29;14818:9;14814:45;14810:55;14802:63;;;14202:669;;;;;;:::o;14876:247::-;14944:6;14997:2;14985:9;14976:7;14972:23;14968:32;14965:52;;;15013:1;15010;15003:12;14965:52;15045:9;15039:16;15064:29;15087:5;15064:29;:::i;15128:127::-;15189:10;15184:3;15180:20;15177:1;15170:31;15220:4;15217:1;15210:15;15244:4;15241:1;15234:15;15260:217;15300:1;15326;15316:132;;15370:10;15365:3;15361:20;15358:1;15351:31;15405:4;15402:1;15395:15;15433:4;15430:1;15423:15;15316:132;-1:-1:-1;15462:9:57;;15260:217::o;15482:125::-;15547:9;;;15568:10;;;15565:36;;;15581:18;;:::i","linkReferences":{},"immutableReferences":{"11597":[{"start":890,"length":32},{"start":1157,"length":32},{"start":3514,"length":32},{"start":4735,"length":32}],"11600":[{"start":696,"length":32},{"start":1936,"length":32},{"start":2188,"length":32},{"start":2480,"length":32}],"11603":[{"start":2982,"length":32},{"start":3234,"length":32},{"start":4087,"length":32},{"start":4335,"length":32}],"11606":[{"start":1204,"length":32},{"start":3855,"length":32},{"start":4886,"length":32},{"start":5015,"length":32}],"11609":[{"start":849,"length":32},{"start":1422,"length":32},{"start":3467,"length":32},{"start":3547,"length":32}],"11612":[{"start":1500,"length":32},{"start":1983,"length":32},{"start":3029,"length":32},{"start":4513,"length":32}],"11615":[{"start":1723,"length":32},{"start":2235,"length":32},{"start":3281,"length":32},{"start":4560,"length":32}]}},"methodIdentifiers":{"MAX_PRICE_LIMIT()":"542524dd","MIN_PRICE_LIMIT()":"c7b8e15d","POOLS_SLOT()":"57eb1da7","POSITIONS_OFFSET()":"2ba31c53","addLiquidity(int256,int24,int24)":"06ba06fa","computeSwapStep(uint160,uint160,uint128,int256,uint24)":"100d3f74","constructSignal()":"01480703","equalizePrice(int256)":"14ee3677","getRouter()":"b0f479a1","poolKey()":"182148ef","setPool(uint24,int24,address,uint160,bytes)":"6af57741","setPrice(uint256)":"91b7f5ed","swapOnLex(address,uint256)":"96f5e27c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"MAX_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOLS_SLOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POSITIONS_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceCurrentX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceTargetX96\",\"type\":\"uint160\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"int256\",\"name\":\"amountRemaining\",\"type\":\"int256\"},{\"internalType\":\"uint24\",\"name\":\"feePips\",\"type\":\"uint24\"}],\"name\":\"computeSwapStep\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceNextX96\",\"type\":\"uint160\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"constructSignal\",\"outputs\":[{\"components\":[{\"internalType\":\"int24\",\"name\":\"currentTick\",\"type\":\"int24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lexPrice\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"pool\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"fetcher\",\"type\":\"address\"}],\"internalType\":\"struct ArenaController.Signal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"depth\",\"type\":\"int256\"}],\"name\":\"equalizePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolKey\",\"outputs\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"poolFee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"setPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swapOnLex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ArenaController.sol\":\"ArenaController\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/\",\":@openzeppelin/contracts/=lib/v4-core/lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/v4-core/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":v4-core/=lib/v4-core/src/\"]},\"sources\":{\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/v4-core/src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"lib/v4-core/src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"lib/v4-core/src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"lib/v4-core/src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"lib/v4-core/src/NoDelegateCall.sol\":{\"keccak256\":\"0x5c238701785d16c58a1598daec0f72a2aaf47d5d017b9dd7441cc8093b65b202\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://696cf79b74bc38e7316d94dfd8bdd9579a94f74121e9b65d2613eb59c106ea50\",\"dweb:/ipfs/QmRttHmshQJ5E7EGaeBC7yT4wyzthNXZQJn7sy2nJvb4dB\"]},\"lib/v4-core/src/PoolManager.sol\":{\"keccak256\":\"0xca5369a1683d06842268987fb6f46b05e6364a46cc856f72bb5c603826f47eac\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5ae5893222abc5dc5fa57bc05af40b60a96a1537bd3c1f3845257d6a3c2b5821\",\"dweb:/ipfs/QmZxQH8M3NVunurxDNJ5EZm2fy6Ws8CHJSezCQaoqzMPoq\"]},\"lib/v4-core/src/ProtocolFees.sol\":{\"keccak256\":\"0x2e7533e46dcab5508ed417ab33c2d0ca8c52a6b5f445dd90daf328173ada4449\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8403de6f2c89a665a3ff3566a917179a5bfb3e0ac9514f0438d82270a7f98c91\",\"dweb:/ipfs/QmTq9cjKTaXeCoSfCywpFwo7sNvuXM4wSMnebwX3hBuiRG\"]},\"lib/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"lib/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"lib/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa\",\"dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8\"]},\"lib/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0x4e07d93993f6ba033c8b5e5b0a3473659aeffe9af0cf8316a879a55ebd696d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50add8378d59b89b1dc106ea248641caaedd3ac45d62754babe55c526b87c9ad\",\"dweb:/ipfs/QmQUrvy8ZDDdTRTr17msqynVECP3rQFBVBUmFcpFvjAmQx\"]},\"lib/v4-core/src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6\",\"dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G\"]},\"lib/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f\",\"dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw\"]},\"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410\",\"dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8\"]},\"lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"lib/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x59e18adcff8917b0965a240d88b34d5d800e0efebd5f40c5594ddcf28a15949b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d358beebf8d5079520b6e138d744e5063ecbfbeae355c08af86a3b74afa71b09\",\"dweb:/ipfs/QmUXmAK9aoxnaeykq8MLXoRKP8yGTDyY3jPFMwHnqRxf46\"]},\"lib/v4-core/src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0xb1eb18c3794b67f4f710229df279d3a630a963194fbbeb51906198ec7145b98e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e5ea08b69754250cf04cc544785320f5c8fd8b9a65e5d9e0bc44aadadaa9ea0c\",\"dweb:/ipfs/QmWW1qfqGydoiSeDtVVQ53nV3FphuUgH1PFUC3uGaWzxWR\"]},\"lib/v4-core/src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7\",\"dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3\"]},\"lib/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x70a444afeb27564398dbdf7553651ee2cae14c03c923b6f8972040c8f460ebe3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d7b05390bac9b29188725c8a84edac43cd05571da27b33a0b1e36d9500ecaa6\",\"dweb:/ipfs/QmdYDLwTfFgePDEwFMUqGTj8SNNXXq4JQJnrgomJgcZFvP\"]},\"lib/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d\",\"dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT\"]},\"lib/v4-core/src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xf0a545fc5bbc271e8dbd191413dc03e8725d1f003df4d9d36ea7cdb73058c417\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5d1013d8b5c93024526f129b0a9271b35c578da09bcfe6c3240ff4d590ebc196\",\"dweb:/ipfs/QmX1GyF9jJhYGXst6PyK6HJvcfVQ69nNTnuBEBaEiAZPv7\"]},\"lib/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"lib/v4-core/src/libraries/Hooks.sol\":{\"keccak256\":\"0xfa031f4efc096e9c93bb094509321e1c08b5eb271f46554f858e74803c43ae66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cc33d5eb869ecacfb70d024f7b925d191d98553dbb921bd8188f97d51c9e111\",\"dweb:/ipfs/Qme5VCnaS5mXyqaWV5uiW5xcmTb56uCKBPFrLZp2dq41dQ\"]},\"lib/v4-core/src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896\",\"dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo\"]},\"lib/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc\",\"dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa\"]},\"lib/v4-core/src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"lib/v4-core/src/libraries/NonZeroDeltaCount.sol\":{\"keccak256\":\"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2\",\"dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC\"]},\"lib/v4-core/src/libraries/ParseBytes.sol\":{\"keccak256\":\"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8\",\"dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf\"]},\"lib/v4-core/src/libraries/Pool.sol\":{\"keccak256\":\"0x7a506727ae59f5b5487a0a16ec1d7038b7c2a4ee5f4a7fa7c444ec7df6ad5a7c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://befdd15aee06a7b2a3c64cb899220ec03a1ae8470ad17e19050bcca1ac5266a8\",\"dweb:/ipfs/QmWPfBgfp5VKnku9ZtKXwYycyKdAZuCj6778T2HFrfQ61H\"]},\"lib/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce\",\"dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu\"]},\"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0x2739e8f54707c6a0e23f9c61a0783dd18b107c3fc287b2827f1ab4b41f891902\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2e3b154410bbfcbe8808c6dfb74c4bbbac50a59e228cee59b34e169dbd34ee1a\",\"dweb:/ipfs/QmcRoM6T2F7FTHtGdD5aRiVthCon8oiWur661GCrk5FejP\"]},\"lib/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4\",\"dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM\"]},\"lib/v4-core/src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x1a5a8fd4a21cec19c0c253201e9b5534e8d810eb132bceee04af37fd78adb5db\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://afa2a5950c9057fd3c00a6f413fba91c4c7dab06d573f7349aaf8f806c0e1f31\",\"dweb:/ipfs/Qmb2m62xAPRBtxtx3sV7MAFw2vHWNm9m49ctPHmFX5hozt\"]},\"lib/v4-core/src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x67ead4d1ffe7e4fc381cef059c8d4941c7b4d581ef043fc8d3278d0829da414e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d12edd46a3ff2e19ea9b650507ea22e7714daa335a6b40f4d2f6d29c16431e4\",\"dweb:/ipfs/QmZn6dzXZgR3rGohZAvKzqYMgm5n9qTrpi1VhXizYhiquH\"]},\"lib/v4-core/src/libraries/SwapMath.sol\":{\"keccak256\":\"0xa8cedd0f63b2d8b6faac60455f499c79816f53fbd86f3bb0706fae426b2c231e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8d926c2df899b21811862d106d5e1d2b5bdf83c76ae6ff4216e7c9ce443d8e75\",\"dweb:/ipfs/QmTTVSCumUXZ4vf3R1GwfqJSTgLFyjueuxZkRH9U6dsTb3\"]},\"lib/v4-core/src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x23abd96aa808657304affd775666d7cc5fb0ab564f87d1b65fbf8dc5877d9cd6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c7686aefb704a3efe97cc0e8f180ed48f7667f5ae69d3754962f04352c66b79\",\"dweb:/ipfs/QmULiCBW9s2hB6SmnJTi2wiAwgkLXpZJcdVZm9f77zDNuc\"]},\"lib/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x64c668177d82bb185d902fb2190630ccb67babb6439422979692ac2f8dfb6dcd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e2714a025df18c22f20b358b7143e8a5c55cffb20c7de292be0376845a5f0408\",\"dweb:/ipfs/QmWaeCkxwkVuReFUSK2nDat1BB5DJ8BUowwGwmVyKpsrME\"]},\"lib/v4-core/src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x1bc28f30c176c7c598522da0d8907a90c4cd8ecce81775bb4deb3a9b78782f86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5c05fb51e59ef168ba884c4ea3627525dba9feea0de9ffa0587438f70fd095\",\"dweb:/ipfs/Qmbx3ntPDZ9VeGsAnVNSM5DKmhPg92yobh5ZHbvdGWtHUd\"]},\"lib/v4-core/src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xe9b87da934af38419d4b5f20cc09943dbb569425448fc23fdc5ec6aebbb63c84\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://29838c28905c34f9602a453759b55f5acc6aff02bf6d7a6afac5d1a245dd5db3\",\"dweb:/ipfs/QmfN5bhLFw1CsnnaJQNZd3bLpLufQcwt9ztaR71LA43UGY\"]},\"lib/v4-core/src/test/PoolModifyLiquidityTest.sol\":{\"keccak256\":\"0x4578759af55db566eee1d19c19a285710b1d301b511e37df4a1072c2d5a47ade\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aa6588f1f695efe625241fdbad07730611c8bec77d963698c6412775b7dd68a7\",\"dweb:/ipfs/QmeDGAKa9sR6Wk5ibyzt4YGa6tdtjmFPzJafMbBgkWRB9d\"]},\"lib/v4-core/src/test/PoolSwapTest.sol\":{\"keccak256\":\"0x389d2274a70c565c12c8fd7f0f5bdbee7532d842936243141c65cf1477c1a7e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cdaff983aa947444cece280d8485f524a778cf8843c3f8b96f60e4ad137aa8d3\",\"dweb:/ipfs/QmP7qbC3UZz723pTWuJh18qap1vYAHDY5UoJwGtvosWs9k\"]},\"lib/v4-core/src/test/PoolTestBase.sol\":{\"keccak256\":\"0x71db5a5215d858124dd2ccf73c4474421651f248e4c85d33455d95abced0a23c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fac0df901621d44a1b98ce4569616940ca6700e7829357bdf18509237b822072\",\"dweb:/ipfs/Qmf9sWokQvzmKfAY6Vd4QzyTyhikqCb8zUowrFPe9DRxs5\"]},\"lib/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"lib/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"lib/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0xc77e2d4d380be1887078b1d21e2381fe4e9138dce8c7efbf9050aa7d65d75d4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b85a1edba4be624be660d69badac1e3641d83190893839fa30260eef316d00c8\",\"dweb:/ipfs/QmPaEaeNkhy5F4X9dwzyDzVU3H67P5ZhpeijDS7wscaSd9\"]},\"lib/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f\",\"dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB\"]},\"lib/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf\",\"dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY\"]},\"lib/v4-core/src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]},\"lib/v4-core/test/utils/CurrencySettler.sol\":{\"keccak256\":\"0xf5d04aa76b3ac6ff75396661e75ec612035ebd73d23eb6f4e207dbd46392688e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67a67b94a2987309f06003374ddfc30ab8e81d9fec3b1585e93871eec6966d96\",\"dweb:/ipfs/QmYLzboZNfXoNufKX8UYMGhHVChqMK96vwFWjKeoWcfb24\"]},\"src/ArenaController.sol\":{\"keccak256\":\"0xd7ba9682c55b4d5dcf6d21e64724e05881b390c2be3292e1b5057092d3245347\",\"urls\":[\"bzz-raw://6311b47411a7347205d6700696559a7f55c77b42bdffd6ddf1cd12f09deb3f74\",\"dweb:/ipfs/QmagewXh9VXoBrQG32kzJfFo9Hhr3WcFrPvUwppb5Mofqc\"]},\"src/ArenaToken.sol\":{\"keccak256\":\"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a\",\"urls\":[\"bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105\",\"dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF\"]},\"src/Fetcher.sol\":{\"keccak256\":\"0x1895e5c0688650ca60371f208b62d9f64beea29bd7515b2600a1c8d5c73805df\",\"urls\":[\"bzz-raw://f9c904c9d032167f6d8fec1392c9a023f339a4aee9f75f06df6347a495af9d38\",\"dweb:/ipfs/QmYSaPzRawAnh2qD3JY5uvWypEueo5hSTQVyVFfX96msfb\"]},\"src/LiquidExchange.sol\":{\"keccak256\":\"0xc979e540abc8a2d1bc82f2c741beb4ea9037c7e69ab11a5a20ef11ab7b9cee22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5f08cb7b8685020a78fd9b84d740649dcbf9ba92057cc5914d829f275d396c5\",\"dweb:/ipfs/QmQKVvRCmSumaf2xtbLey6KdUyt9bfTLeq9gPGssisJi17\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"initialPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"POOLS_SLOT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"POSITIONS_OFFSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[{"internalType":"uint160","name":"sqrtPriceCurrentX96","type":"uint160"},{"internalType":"uint160","name":"sqrtPriceTargetX96","type":"uint160"},{"internalType":"uint128","name":"liquidity","type":"uint128"},{"internalType":"int256","name":"amountRemaining","type":"int256"},{"internalType":"uint24","name":"feePips","type":"uint24"}],"stateMutability":"pure","type":"function","name":"computeSwapStep","outputs":[{"internalType":"uint160","name":"sqrtPriceNextX96","type":"uint160"},{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"amountOut","type":"uint256"},{"internalType":"uint256","name":"feeAmount","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"constructSignal","outputs":[{"internalType":"struct ArenaController.Signal","name":"","type":"tuple","components":[{"internalType":"int24","name":"currentTick","type":"int24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"lexPrice","type":"uint256"},{"internalType":"struct PoolKey","name":"pool","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"address","name":"fetcher","type":"address"}]}]},{"inputs":[{"internalType":"int256","name":"depth","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"equalizePrice"},{"inputs":[],"stateMutability":"view","type":"function","name":"getRouter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"poolKey","outputs":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"inputs":[{"internalType":"uint24","name":"poolFee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setPool"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPrice"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapOnLex"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/","@openzeppelin/contracts/=lib/v4-core/lib/openzeppelin-contracts/contracts/","ds-test/=lib/solmate/lib/ds-test/src/","erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/v4-core/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/","solmate/=lib/solmate/src/","v4-core/=lib/v4-core/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ArenaController.sol":"ArenaController"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"lib/v4-core/src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"lib/v4-core/src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"lib/v4-core/src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"lib/v4-core/src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"lib/v4-core/src/NoDelegateCall.sol":{"keccak256":"0x5c238701785d16c58a1598daec0f72a2aaf47d5d017b9dd7441cc8093b65b202","urls":["bzz-raw://696cf79b74bc38e7316d94dfd8bdd9579a94f74121e9b65d2613eb59c106ea50","dweb:/ipfs/QmRttHmshQJ5E7EGaeBC7yT4wyzthNXZQJn7sy2nJvb4dB"],"license":"BUSL-1.1"},"lib/v4-core/src/PoolManager.sol":{"keccak256":"0xca5369a1683d06842268987fb6f46b05e6364a46cc856f72bb5c603826f47eac","urls":["bzz-raw://5ae5893222abc5dc5fa57bc05af40b60a96a1537bd3c1f3845257d6a3c2b5821","dweb:/ipfs/QmZxQH8M3NVunurxDNJ5EZm2fy6Ws8CHJSezCQaoqzMPoq"],"license":"BUSL-1.1"},"lib/v4-core/src/ProtocolFees.sol":{"keccak256":"0x2e7533e46dcab5508ed417ab33c2d0ca8c52a6b5f445dd90daf328173ada4449","urls":["bzz-raw://8403de6f2c89a665a3ff3566a917179a5bfb3e0ac9514f0438d82270a7f98c91","dweb:/ipfs/QmTq9cjKTaXeCoSfCywpFwo7sNvuXM4wSMnebwX3hBuiRG"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"lib/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"lib/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0","urls":["bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa","dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8"],"license":"MIT"},"lib/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0x4e07d93993f6ba033c8b5e5b0a3473659aeffe9af0cf8316a879a55ebd696d7a","urls":["bzz-raw://50add8378d59b89b1dc106ea248641caaedd3ac45d62754babe55c526b87c9ad","dweb:/ipfs/QmQUrvy8ZDDdTRTr17msqynVECP3rQFBVBUmFcpFvjAmQx"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFeeController.sol":{"keccak256":"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c","urls":["bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6","dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297","urls":["bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f","dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw"],"license":"MIT"},"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7","urls":["bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410","dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"lib/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x59e18adcff8917b0965a240d88b34d5d800e0efebd5f40c5594ddcf28a15949b","urls":["bzz-raw://d358beebf8d5079520b6e138d744e5063ecbfbeae355c08af86a3b74afa71b09","dweb:/ipfs/QmUXmAK9aoxnaeykq8MLXoRKP8yGTDyY3jPFMwHnqRxf46"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/CurrencyDelta.sol":{"keccak256":"0xb1eb18c3794b67f4f710229df279d3a630a963194fbbeb51906198ec7145b98e","urls":["bzz-raw://e5ea08b69754250cf04cc544785320f5c8fd8b9a65e5d9e0bc44aadadaa9ea0c","dweb:/ipfs/QmWW1qfqGydoiSeDtVVQ53nV3FphuUgH1PFUC3uGaWzxWR"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CurrencyReserves.sol":{"keccak256":"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6","urls":["bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7","dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x70a444afeb27564398dbdf7553651ee2cae14c03c923b6f8972040c8f460ebe3","urls":["bzz-raw://9d7b05390bac9b29188725c8a84edac43cd05571da27b33a0b1e36d9500ecaa6","dweb:/ipfs/QmdYDLwTfFgePDEwFMUqGTj8SNNXXq4JQJnrgomJgcZFvP"],"license":"MIT"},"lib/v4-core/src/libraries/FixedPoint128.sol":{"keccak256":"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835","urls":["bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d","dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/FixedPoint96.sol":{"keccak256":"0xf0a545fc5bbc271e8dbd191413dc03e8725d1f003df4d9d36ea7cdb73058c417","urls":["bzz-raw://5d1013d8b5c93024526f129b0a9271b35c578da09bcfe6c3240ff4d590ebc196","dweb:/ipfs/QmX1GyF9jJhYGXst6PyK6HJvcfVQ69nNTnuBEBaEiAZPv7"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"lib/v4-core/src/libraries/Hooks.sol":{"keccak256":"0xfa031f4efc096e9c93bb094509321e1c08b5eb271f46554f858e74803c43ae66","urls":["bzz-raw://7cc33d5eb869ecacfb70d024f7b925d191d98553dbb921bd8188f97d51c9e111","dweb:/ipfs/Qme5VCnaS5mXyqaWV5uiW5xcmTb56uCKBPFrLZp2dq41dQ"],"license":"MIT"},"lib/v4-core/src/libraries/LPFeeLibrary.sol":{"keccak256":"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece","urls":["bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896","dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/LiquidityMath.sol":{"keccak256":"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf","urls":["bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc","dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/NonZeroDeltaCount.sol":{"keccak256":"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586","urls":["bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2","dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ParseBytes.sol":{"keccak256":"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579","urls":["bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8","dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/Pool.sol":{"keccak256":"0x7a506727ae59f5b5487a0a16ec1d7038b7c2a4ee5f4a7fa7c444ec7df6ad5a7c","urls":["bzz-raw://befdd15aee06a7b2a3c64cb899220ec03a1ae8470ad17e19050bcca1ac5266a8","dweb:/ipfs/QmWPfBgfp5VKnku9ZtKXwYycyKdAZuCj6778T2HFrfQ61H"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/Position.sol":{"keccak256":"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80","urls":["bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce","dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0x2739e8f54707c6a0e23f9c61a0783dd18b107c3fc287b2827f1ab4b41f891902","urls":["bzz-raw://2e3b154410bbfcbe8808c6dfb74c4bbbac50a59e228cee59b34e169dbd34ee1a","dweb:/ipfs/QmcRoM6T2F7FTHtGdD5aRiVthCon8oiWur661GCrk5FejP"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60","urls":["bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4","dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/SqrtPriceMath.sol":{"keccak256":"0x1a5a8fd4a21cec19c0c253201e9b5534e8d810eb132bceee04af37fd78adb5db","urls":["bzz-raw://afa2a5950c9057fd3c00a6f413fba91c4c7dab06d573f7349aaf8f806c0e1f31","dweb:/ipfs/Qmb2m62xAPRBtxtx3sV7MAFw2vHWNm9m49ctPHmFX5hozt"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/StateLibrary.sol":{"keccak256":"0x67ead4d1ffe7e4fc381cef059c8d4941c7b4d581ef043fc8d3278d0829da414e","urls":["bzz-raw://0d12edd46a3ff2e19ea9b650507ea22e7714daa335a6b40f4d2f6d29c16431e4","dweb:/ipfs/QmZn6dzXZgR3rGohZAvKzqYMgm5n9qTrpi1VhXizYhiquH"],"license":"MIT"},"lib/v4-core/src/libraries/SwapMath.sol":{"keccak256":"0xa8cedd0f63b2d8b6faac60455f499c79816f53fbd86f3bb0706fae426b2c231e","urls":["bzz-raw://8d926c2df899b21811862d106d5e1d2b5bdf83c76ae6ff4216e7c9ce443d8e75","dweb:/ipfs/QmTTVSCumUXZ4vf3R1GwfqJSTgLFyjueuxZkRH9U6dsTb3"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/TickBitmap.sol":{"keccak256":"0x23abd96aa808657304affd775666d7cc5fb0ab564f87d1b65fbf8dc5877d9cd6","urls":["bzz-raw://4c7686aefb704a3efe97cc0e8f180ed48f7667f5ae69d3754962f04352c66b79","dweb:/ipfs/QmULiCBW9s2hB6SmnJTi2wiAwgkLXpZJcdVZm9f77zDNuc"],"license":"MIT"},"lib/v4-core/src/libraries/TickMath.sol":{"keccak256":"0x64c668177d82bb185d902fb2190630ccb67babb6439422979692ac2f8dfb6dcd","urls":["bzz-raw://e2714a025df18c22f20b358b7143e8a5c55cffb20c7de292be0376845a5f0408","dweb:/ipfs/QmWaeCkxwkVuReFUSK2nDat1BB5DJ8BUowwGwmVyKpsrME"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/TransientStateLibrary.sol":{"keccak256":"0x1bc28f30c176c7c598522da0d8907a90c4cd8ecce81775bb4deb3a9b78782f86","urls":["bzz-raw://fb5c05fb51e59ef168ba884c4ea3627525dba9feea0de9ffa0587438f70fd095","dweb:/ipfs/Qmbx3ntPDZ9VeGsAnVNSM5DKmhPg92yobh5ZHbvdGWtHUd"],"license":"MIT"},"lib/v4-core/src/libraries/UnsafeMath.sol":{"keccak256":"0xe9b87da934af38419d4b5f20cc09943dbb569425448fc23fdc5ec6aebbb63c84","urls":["bzz-raw://29838c28905c34f9602a453759b55f5acc6aff02bf6d7a6afac5d1a245dd5db3","dweb:/ipfs/QmfN5bhLFw1CsnnaJQNZd3bLpLufQcwt9ztaR71LA43UGY"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/test/PoolModifyLiquidityTest.sol":{"keccak256":"0x4578759af55db566eee1d19c19a285710b1d301b511e37df4a1072c2d5a47ade","urls":["bzz-raw://aa6588f1f695efe625241fdbad07730611c8bec77d963698c6412775b7dd68a7","dweb:/ipfs/QmeDGAKa9sR6Wk5ibyzt4YGa6tdtjmFPzJafMbBgkWRB9d"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolSwapTest.sol":{"keccak256":"0x389d2274a70c565c12c8fd7f0f5bdbee7532d842936243141c65cf1477c1a7e8","urls":["bzz-raw://cdaff983aa947444cece280d8485f524a778cf8843c3f8b96f60e4ad137aa8d3","dweb:/ipfs/QmP7qbC3UZz723pTWuJh18qap1vYAHDY5UoJwGtvosWs9k"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolTestBase.sol":{"keccak256":"0x71db5a5215d858124dd2ccf73c4474421651f248e4c85d33455d95abced0a23c","urls":["bzz-raw://fac0df901621d44a1b98ce4569616940ca6700e7829357bdf18509237b822072","dweb:/ipfs/Qmf9sWokQvzmKfAY6Vd4QzyTyhikqCb8zUowrFPe9DRxs5"],"license":"UNLICENSED"},"lib/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"lib/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"lib/v4-core/src/types/Currency.sol":{"keccak256":"0xc77e2d4d380be1887078b1d21e2381fe4e9138dce8c7efbf9050aa7d65d75d4c","urls":["bzz-raw://b85a1edba4be624be660d69badac1e3641d83190893839fa30260eef316d00c8","dweb:/ipfs/QmPaEaeNkhy5F4X9dwzyDzVU3H67P5ZhpeijDS7wscaSd9"],"license":"MIT"},"lib/v4-core/src/types/PoolId.sol":{"keccak256":"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8","urls":["bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f","dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB"],"license":"MIT"},"lib/v4-core/src/types/PoolKey.sol":{"keccak256":"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162","urls":["bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf","dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY"],"license":"MIT"},"lib/v4-core/src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"},"lib/v4-core/test/utils/CurrencySettler.sol":{"keccak256":"0xf5d04aa76b3ac6ff75396661e75ec612035ebd73d23eb6f4e207dbd46392688e","urls":["bzz-raw://67a67b94a2987309f06003374ddfc30ab8e81d9fec3b1585e93871eec6966d96","dweb:/ipfs/QmYLzboZNfXoNufKX8UYMGhHVChqMK96vwFWjKeoWcfb24"],"license":"MIT"},"src/ArenaController.sol":{"keccak256":"0xd7ba9682c55b4d5dcf6d21e64724e05881b390c2be3292e1b5057092d3245347","urls":["bzz-raw://6311b47411a7347205d6700696559a7f55c77b42bdffd6ddf1cd12f09deb3f74","dweb:/ipfs/QmagewXh9VXoBrQG32kzJfFo9Hhr3WcFrPvUwppb5Mofqc"],"license":null},"src/ArenaToken.sol":{"keccak256":"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a","urls":["bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105","dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF"],"license":null},"src/Fetcher.sol":{"keccak256":"0x1895e5c0688650ca60371f208b62d9f64beea29bd7515b2600a1c8d5c73805df","urls":["bzz-raw://f9c904c9d032167f6d8fec1392c9a023f339a4aee9f75f06df6347a495af9d38","dweb:/ipfs/QmYSaPzRawAnh2qD3JY5uvWypEueo5hSTQVyVFfX96msfb"],"license":null},"src/LiquidExchange.sol":{"keccak256":"0xc979e540abc8a2d1bc82f2c741beb4ea9037c7e69ab11a5a20ef11ab7b9cee22","urls":["bzz-raw://e5f08cb7b8685020a78fd9b84d740649dcbf9ba92057cc5914d829f275d396c5","dweb:/ipfs/QmQKVvRCmSumaf2xtbLey6KdUyt9bfTLeq9gPGssisJi17"],"license":"MIT"}},"version":1},"id":53} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[{"name":"fee","type":"uint256","internalType":"uint256"},{"name":"initialPrice","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"POOLS_SLOT","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"POSITIONS_OFFSET","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"addLiquidity","inputs":[{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"constructSignal","inputs":[],"outputs":[{"name":"","type":"tuple","internalType":"struct ArenaController.Signal","components":[{"name":"currentTick","type":"int24","internalType":"int24"},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"manager","type":"address","internalType":"address"},{"name":"lexPrice","type":"uint256","internalType":"uint256"},{"name":"pool","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"fetcher","type":"address","internalType":"address"}]}],"stateMutability":"view"},{"type":"function","name":"equalizePrice","inputs":[{"name":"depth","type":"int256","internalType":"int256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getRouter","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"poolKey","inputs":[],"outputs":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"stateMutability":"view"},{"type":"function","name":"setPool","inputs":[{"name":"poolFee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPrice","inputs":[{"name":"price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swapOnLex","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x610160604052348015610010575f80fd5b5060405161b59038038061b59083398101604081905261002f916104a6565b8160405161003c90610458565b908152602001604051809103905ff08015801561005b573d5f803e3d5ffd5b506001600160a01b0316608081905260405161007690610465565b6001600160a01b039091168152602001604051809103905ff08015801561009f573d5f803e3d5ffd5b506001600160a01b031660a0526080516040516100bb90610472565b6001600160a01b039091168152602001604051809103905ff0801580156100e4573d5f803e3d5ffd5b506001600160a01b031660c0526040516100fd9061047f565b604051809103905ff080158015610116573d5f803e3d5ffd5b506001600160a01b0316610100526040516012906101339061048c565b606080825260099082015268063757272656e6379360bc1b608082015260a06020820181905260029082015261063360f41b60c082015260ff909116604082015260e001604051809103905ff080158015610190573d5f803e3d5ffd5b506001600160a01b0316610120526040516012906101ad9061048c565b60608082526009908201526863757272656e63793160b81b608082015260a06020820181905260029082015261633160f01b60c082015260ff909116604082015260e001604051809103905ff08015801561020a573d5f803e3d5ffd5b506001600160a01b0390811661014081905261012051909116111561024657610140805161012080516001600160a01b03908116909352911690525b61012051610140518260405161025b90610499565b6001600160a01b0393841681529290911660208301526040820152606001604051809103905ff080158015610292573d5f803e3d5ffd5b506001600160a01b0390811660e052610120516040516340c10f1960e01b8152306004820152678ac7230489e8000060248201529116906340c10f19906044016020604051808303815f875af11580156102ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061031291906104c8565b6103775760405162461bcd60e51b815260206004820152602b60248201527f4d696e74696e672063757272656e63793020746f206c6971756964206578636860448201526a185b99d94819985a5b195960aa1b60648201526084015b60405180910390fd5b610140516040516340c10f1960e01b8152306004820152678ac7230489e8000060248201526001600160a01b03909116906340c10f19906044016020604051808303815f875af11580156103cd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103f191906104c8565b6104515760405162461bcd60e51b815260206004820152602b60248201527f4d696e74696e672063757272656e63793120746f206c6971756964206578636860448201526a185b99d94819985a5b195960aa1b606482015260840161036e565b50506104ee565b61502b80611d1d83390190565b6116ad80616d4883390190565b6117d4806183f583390190565b6105bc80619bc983390190565b610eea8061a18583390190565b6105218061b06f83390190565b5f80604083850312156104b7575f80fd5b505080516020909101519092909150565b5f602082840312156104d8575f80fd5b815180151581146104e7575f80fd5b9392505050565b60805160a05160c05160e05161010051610120516101405161174b6105d25f395f81816106640152818161086401528181610b17015261101401525f81816105850152818161076801528181610a1b0152610fe501525f81816102fa0152818161053701528181610bd00152610c2001525f818161045d01528181610d530152818161115a01526111db01525f81816109ec01528181610ae801528181610e3b0152610f3301525f81816102610152818161073901528181610835015261095901525f81816103230152818161042e01528181610bff01526110c3015261174b5ff3fe608060405234801561000f575f80fd5b50600436106100b1575f3560e01c806357eb1da71161006e57806357eb1da7146101f05780636af577411461022657806391b7f5ed1461023957806396f5e27c1461024c578063b0f479a11461025f578063c7b8e15d14610285575f80fd5b806301480703146100b557806306ba06fa1461014f57806314ee367714610164578063182148ef146101775780632ba31c53146101f0578063542524dd14610206575b5f80fd5b6100bd61028d565b604080518251600290810b82526020808501516001600160a01b03908116828501528585015181168486015260608087015181860152608080880151805184168288015293840151831660a0808801919091529684015162ffffff1660c08701529083015190930b60e08501529101518116610100830152919092015116610120820152610140015b60405180910390f35b61016261015d3660046112ec565b610561565b005b61016261017236600461132b565b6109d5565b5f54600154600280546101b0936001600160a01b03908116938082169362ffffff600160a01b83041693600160b81b909204900b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a001610146565b6101f8600681565b604051908152602001610146565b61020e610fb7565b6040516001600160a01b039091168152602001610146565b61016261023436600461137a565b610fd9565b61016261024736600461132b565b611144565b61016261025a366004611476565b6111b5565b7f000000000000000000000000000000000000000000000000000000000000000061020e565b61020e61122e565b6040805160c0810182525f80825260208083018290528284018290526060808401839052845160a080820187528482529281018490528086018490529081018390526080808201849052840152820181905291516332c961d960e01b815290919081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e631bcbf907f00000000000000000000000000000000000000000000000000000000000000009083906332c961d9906103599087906004016114e5565b602060405180830381865afa158015610374573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039891906114f9565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401608060405180830381865afa1580156103df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104039190611510565b5050915091506040518060c001604052808260020b8152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104db91906114f9565b81526040805160a0810182525f546001600160a01b03908116825260015480821660208481019190915262ffffff600160a01b83041684860152600160b81b909104600290810b606085015254821660808401528401919091527f0000000000000000000000000000000000000000000000000000000000000000169101529392505050565b5f831315610722576040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af11580156105d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f7919061156c565b6106485760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637930206661696c6564000000000000000060448201526064015b60405180910390fd5b6040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af11580156106b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d6919061156c565b6107225760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637931206661696c65640000000000000000604482015260640161063f565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af11580156107ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d2919061156c565b61081e5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637930206661696c6564000000604482015260640161063f565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af11580156108aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ce919061156c565b61091a5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637931206661696c6564000000604482015260640161063f565b60408051608081018252600284810b825283900b60208201528082018590525f606082018190529151632d35e7ed60e11b815290916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691635a6bcfda9161098e91859060040161158b565b6020604051808303815f875af11580156109aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b5050505050565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610a61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a85919061156c565b610ad15760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637930206661696c6564000000604482015260640161063f565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610b5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b81919061156c565b610bcd5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637931206661696c6564000000604482015260640161063f565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e631bcbf7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166332c961d95f6040518263ffffffff1660e01b8152600401610c6a91906114e5565b602060405180830381865afa158015610c85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906114f9565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401608060405180830381865afa158015610cf0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d149190611510565b50505090505f610d4e826001600160a01b0316670de0b6b3a7640000610d3a91906115f0565b836001600160a01b0316600160c01b61123e565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd191906114f9565b905080821115610ebd5760408051606081018252600180825260208201879052915f91908101610e076401000276a36001611626565b6001600160a01b039081169091526040805180820182525f80825260208201819052915163088a742d60e21b8152939450927f000000000000000000000000000000000000000000000000000000000000000090921691632229d0b491610e749186908690600401611645565b6020604051808303815f875af1158015610e90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb491906114f9565b50505050610fb1565b80821015610fb157604080516060810182525f80825260208201879052918291908101610eff600173fffd8963efd1fc6a506488495d951d5263988d26611607565b6001600160a01b039081169091526040805180820182525f80825260208201819052915163088a742d60e21b8152939450927f000000000000000000000000000000000000000000000000000000000000000090921691632229d0b491610f6c9186908690600401611645565b6020604051808303815f875af1158015610f88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fac91906114f9565b505050505b50505050565b610fd6600173fffd8963efd1fc6a506488495d951d5263988d26611607565b81565b6040805160a0810182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081168083527f000000000000000000000000000000000000000000000000000000000000000082166020840181905262ffffff8a811685870181905260028b810b60608801528a861660809097018790525f80546001600160a01b03199081169096178155600180546001600160b81b031916909517600160a01b9093029290921762ffffff60b81b1916600160b81b938d16939093029290921790925580549092169093179055915163695c5bf560e01b81527f00000000000000000000000000000000000000000000000000000000000000009092169163695c5bf5916110fc91869086906004016116a5565b6020604051808303815f875af1158015611118573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113c91906116fa565b505050505050565b6040516391b7f5ed60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391b7f5ed906024015f604051808303815f87803b1580156111a3575f80fd5b505af11580156109ce573d5f803e3d5ffd5b60405163d004f0f760e01b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d004f0f7906044015f604051808303815f87803b15801561121c575f80fd5b505af115801561113c573d5f803e3d5ffd5b610fd66401000276a36001611626565b5f838302815f198587098281108382030391505080841161125d575f80fd5b805f0361126f575082900490506112d4565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b8060020b81146112e9575f80fd5b50565b5f805f606084860312156112fe575f80fd5b833592506020840135611310816112db565b91506040840135611320816112db565b809150509250925092565b5f6020828403121561133b575f80fd5b5035919050565b62ffffff811681146112e9575f80fd5b6001600160a01b03811681146112e9575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f805f60a0868803121561138e575f80fd5b853561139981611342565b945060208601356113a9816112db565b935060408601356113b981611352565b925060608601356113c981611352565b9150608086013567ffffffffffffffff8111156113e4575f80fd5b8601601f810188136113f4575f80fd5b803567ffffffffffffffff81111561140e5761140e611366565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561143d5761143d611366565b6040528181528282016020018a1015611454575f80fd5b816020840160208301375f602083830101528093505050509295509295909350565b5f8060408385031215611487575f80fd5b823561149281611352565b946020939093013593505050565b80546001600160a01b0390811683526001820154808216602085015260a081901c62ffffff16604085015260b81c600290810b60608501529091015416608090910152565b60a081016114f382846114a0565b92915050565b5f60208284031215611509575f80fd5b5051919050565b5f805f8060808587031215611523575f80fd5b845161152e81611352565b602086015190945061153f816112db565b604086015190935061155081611342565b606086015190925061156181611342565b939692955090935050565b5f6020828403121561157c575f80fd5b815180151581146112d4575f80fd5b61159581846114a0565b8151600290810b60a08301526020830151900b60c0820152604082015160e082015260609091015161010082015261014061012082018190525f9082015261016001919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176114f3576114f36115dc565b6001600160a01b0382811682821603908111156114f3576114f36115dc565b6001600160a01b0381811683821601908111156114f3576114f36115dc565b61164f81856114a0565b8251151560a082015260208084015160c08301526040909301516001600160a01b031660e082015281511515610100820152910151151561012082015261016061014082018190525f9082015261018001919050565b6116af81856114a0565b60018060a01b03831660a082015260e060c08201525f82518060e0840152806020850161010085015e5f6101008285010152610100601f19601f830116840101915050949350505050565b5f6020828403121561170a575f80fd5b81516112d4816112db56fea26469706673582212202f1e8b55b9f8b43644f835f5d44698c0c0e32271998428e356f0147397e5da4c64736f6c634300081a003360c0604052348015600e575f80fd5b5060405161502b38038061502b833981016040819052602b916077565b5f80546001600160a01b031916339081178255604051839282917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350608052503060a052608d565b5f602082840312156086575f80fd5b5051919050565b60805160a051614f766100b55f395f6117e201525f818161220b01526122490152614f765ff3fe6080604052600436106101fb575f3560e01c80635a6bcfda11610113578063a58411941161009d578063f135baaa1161006d578063f135baaa14610641578063f2fde38b14610660578063f3cd914c1461067f578063f5298aca1461069e578063fe99049a146106bd575f80fd5b8063a5841194146105ab578063b6363cf2146105ca578063dbd035ff14610603578063f02de3b214610622575f80fd5b806380f0b44c116100e357806380f0b44c146104ed5780638161b8741461050c5780638da5cb5b1461052b57806397e8cd4e146105615780639bf6645f1461058c575f80fd5b80635a6bcfda1461046657806360460f061461049a578063695c5bf5146104af5780637e87ce7d146104ce575f80fd5b8063234266d711610194578063426a849311610164578063426a8493146103a157806348c89491146103c057806352759651146103ec578063558a72971461040b578063598af9e71461042a575f80fd5b8063234266d7146103245780632d7713891461034357806335fd631a146103625780633dd45adb1461038e575f80fd5b80630b0d9c09116101cf5780630b0d9c09146102bd57806311da60b4146102de578063156e29f6146102e65780631e2eaeaf14610305575f80fd5b8062fdd58e146101ff57806301ffc9a71461024857806307eff0dd14610277578063095bcdb61461029e575b5f80fd5b34801561020a575f80fd5b50610235610219366004614397565b600460209081525f928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b506102676102623660046143c1565b6106dc565b604051901515815260200161023f565b348015610282575f80fd5b5061028b600181565b60405160029190910b815260200161023f565b3480156102a9575f80fd5b506102676102b83660046143e8565b610712565b3480156102c8575f80fd5b506102dc6102d736600461441a565b6107b9565b005b61023561080a565b3480156102f1575f80fd5b506102dc6103003660046143e8565b61083c565b348015610310575f80fd5b5061023561031f366004614458565b610887565b34801561032f575f80fd5b5061023561033e3660046145d7565b610891565b34801561034e575f80fd5b506102dc61035d36600461463b565b610941565b34801561036d575f80fd5b5061038161037c366004614656565b6109d7565b60405161023f9190614676565b61023561039c36600461463b565b610a14565b3480156103ac575f80fd5b506102676103bb3660046143e8565b610a46565b3480156103cb575f80fd5b506103df6103da3660046146b8565b610aaa565b60405161023f91906146f6565b3480156103f7575f80fd5b506102dc61040636600461472b565b610b6d565b348015610416575f80fd5b5061026761042536600461476c565b610bdc565b348015610435575f80fd5b5061023561044436600461441a565b600560209081525f938452604080852082529284528284209052825290205481565b348015610471575f80fd5b50610485610480366004614796565b610c4b565b6040805192835260208301919091520161023f565b3480156104a5575f80fd5b5061028b617fff81565b3480156104ba575f80fd5b5061028b6104c9366004614838565b610dde565b3480156104d9575f80fd5b506102dc6104e836600461472b565b610fcd565b3480156104f8575f80fd5b506102dc610507366004614397565b61107f565b348015610517575f80fd5b5061023561052636600461441a565b6110f2565b348015610536575f80fd5b505f54610549906001600160a01b031681565b6040516001600160a01b03909116815260200161023f565b34801561056c575f80fd5b5061023561057b36600461463b565b60016020525f908152604090205481565b348015610597575f80fd5b506103816105a636600461487f565b611181565b3480156105b6575f80fd5b506102dc6105c536600461463b565b6111ba565b3480156105d5575f80fd5b506102676105e43660046148ee565b600360209081525f928352604080842090915290825290205460ff1681565b34801561060e575f80fd5b5061038161061d36600461487f565b6111f6565b34801561062d575f80fd5b50600254610549906001600160a01b031681565b34801561064c575f80fd5b5061023561065b366004614458565b61122d565b34801561066b575f80fd5b506102dc61067a36600461463b565b611237565b34801561068a575f80fd5b50610235610699366004614925565b6112c9565b3480156106a9575f80fd5b506102dc6106b83660046143e8565b61140f565b3480156106c8575f80fd5b506102676106d73660046149c3565b611454565b5f6301ffc9a760e01b6001600160e01b03198316148061070c5750630f632fb360e01b6001600160e01b03198316145b92915050565b335f90815260046020908152604080832085845290915281208054839190839061073d908490614a1a565b90915550506001600160a01b0384165f90815260046020908152604080832086845290915281208054849290610774908490614a2d565b909155505060408051338082526020820185905285926001600160a01b038816925f80516020614ee183398151915291015b60405180910390a45060015b9392505050565b5f80516020614f018339815191525c6107dc576107dc6354e3ca0d60e01b6115b3565b6107f1836107e9836115bb565b5f03336115db565b6108056001600160a01b038416838361162e565b505050565b5f5f80516020614f018339815191525c61082e5761082e6354e3ca0d60e01b6115b3565b610837336116c2565b905090565b5f80516020614f018339815191525c61085f5761085f6354e3ca0d60e01b6115b3565b8161086d816107e9846115bb565b610881846001600160a01b03831684611765565b50505050565b5f81545f5260205ff35b5f5f80516020614f018339815191525c6108b5576108b56354e3ca0d60e01b6115b3565b6108bd6117d7565b5f6108dc6108cc8860a0902090565b5f90815260066020526040902090565b90506108e781611819565b6080870151610903906001600160a01b0316888888888861183d565b61090e8187876118ba565b915061091b87833361196d565b6080870151610937906001600160a01b03168888888888611995565b5095945050505050565b5f546001600160a01b0316331461098e5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b600280546001600160a01b0319166001600160a01b0383169081179091556040517fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc905f90a250565b6060604051808360051b6020835284602084015260408301925080830190505b855483526020830192506001860195508083106109f75781810382f35b5f5f80516020614f018339815191525c610a3857610a386354e3ca0d60e01b6115b3565b61070c826116c2565b919050565b335f8181526005602090815260408083206001600160a01b03881680855290835281842087855290925280832085905551919285927fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a7906107a69087815260200190565b60605f80516020614f018339815191525c15610ad057610ad06328486b6360e11b6115b3565b610ad8611a07565b6040516348eeb9a360e11b815233906391dd734690610afd9086908690600401614a68565b5f604051808303815f875af1158015610b18573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b3f9190810190614a7b565b90505f80516020614f218339815191525c15610b6557610b65635212cba160e01b6115b3565b61070c611a1a565b604082015162ffffff1662800000141580610b9e575081608001516001600160a01b0316336001600160a01b031614155b15610bb357610bb36330d2164160e01b6115b3565b610bc18162ffffff16611a2c565b60a082205f8181526006602052604090206108059083611a52565b335f8181526003602090815260408083206001600160a01b038716808552908352818420805460ff191687151590811790915591519182529293917fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa267910160405180910390a350600192915050565b5f805f80516020614f018339815191525c610c7057610c706354e3ca0d60e01b6115b3565b610c786117d7565b60a086205f818152600660205260409020610c9281611819565b6080880151610cad906001600160a01b031689898989611a6d565b5f610d146040518060c00160405280336001600160a01b031681526020018a5f015160020b81526020018a6020015160020b8152602001610cf18b60400151611b6f565b600f0b81526060808d015160020b60208301528b01516040909101528390611b8b565b94509050610d228185611f05565b9450336001600160a01b0316837f541c041c2cce48e614b3de043c9280f06b6164c0a1741649e2de3c3d375f79748a5f01518b602001518c60400151604051610d8693929190600293840b81529190920b6020820152604081019190915260600190565b60405180910390a360808901515f90610dac906001600160a01b03168b8b898c8c611f38565b90965090508015610dc657610dc68a828c6080015161196d565b610dd18a873361196d565b5050505094509492505050565b5f610de76117d7565b6060850151617fff60029190910b1315610e12576060850151610e12906316e0049f60e31b90612057565b600160020b856060015160020b1215610e3c576060850151610e3c90631d3d20b160e31b90612057565b845160208601516001600160a01b03908116911610610e6e5784516020860151610e6e916306e6c98360e41b91612066565b610e92856040015186608001516001600160a01b031661208890919063ffffffff16565b610ead576080850151610ead90630732d7b560e51b90612149565b5f610ec0866040015162ffffff1661215e565b6080870151909150610ede906001600160a01b031687878787612183565b60a086205f610eec886121f4565b5f848152600660205260409020909250610f099150888386612326565b6080890151909450610f28906001600160a01b03168989878a8a612385565b87602001516001600160a01b0316885f01516001600160a01b0316837fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d64388b604001518c606001518d608001518d8b604051610fba95949392919062ffffff959095168552600293840b60208601526001600160a01b03928316604086015291166060840152900b608082015260a00190565b60405180910390a4505050949350505050565b6002546001600160a01b03163314610fef57610fef6348f5c3ed60e01b6115b3565b6103e9610fff821610623e900062fff0008316101661101e5761101e63a7abe2f760e01b62ffffff8316612149565b60a082206110408261103a835f90815260066020526040902090565b906123f8565b60405162ffffff8316815281907fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f99060200160405180910390a2505050565b5f80516020614f018339815191525c6110a2576110a26354e3ca0d60e01b6115b3565b335f9081526001600160a01b038316602052604081205c906110c3836115bb565b90508181600f0b146110df576110df63bda73abf60e01b6115b3565b610881846110ec83614b0d565b336115db565b6002545f906001600160a01b03163314611116576111166348f5c3ed60e01b6115b3565b8115611122578161113b565b6001600160a01b0383165f908152600160205260409020545b6001600160a01b0384165f90815260016020526040812080549293508392909190611167908490614a1a565b909155506107b290506001600160a01b038416858361162e565b606060405180602082528360208301526040820191508360051b8201855b80355c84526020938401930181841061119f575b5081810382f35b6111c261240d565b6001600160a01b0381166111d35750565b5f6111e6826001600160a01b0316612441565b90506111f282826124bd565b5050565b606060405180602082528360208301526040820191508360051b8201855b803554845260209384019301818410156111b357611214565b5f815c5f5260205ff35b5f546001600160a01b0316331461127f5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610985565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f5f80516020614f018339815191525c6112ed576112ed6354e3ca0d60e01b6115b3565b6112f56117d7565b83602001515f036113105761131063be8b850760e01b6115b3565b60a085205f81815260066020526040902061132a81611819565b60808701515f908190819061134b906001600160a01b03168b8b8b8b6124fd565b8093508195508294505050506113ba84866040518060a001604052808e6060015160020b81526020018d5f0151151581526020018681526020018d604001516001600160a01b031681526020018562ffffff168152508c5f01516113b3578d60200151612619565b8d51612619565b60808b01519096505f92506113de91506001600160a01b03168a8a888b8b88612707565b909550905080156113f8576113f889828b6080015161196d565b61140389863361196d565b50505050949350505050565b5f80516020614f018339815191525c611432576114326354e3ca0d60e01b6115b3565b81611440816110ec846115bb565b610881846001600160a01b0383168461282a565b5f336001600160a01b0386161480159061149157506001600160a01b0385165f90815260036020908152604080832033845290915290205460ff16155b15611501576001600160a01b0385165f90815260056020908152604080832033845282528083208684529091529020545f1981146114ff576114d38382614a1a565b6001600160a01b0387165f90815260056020908152604080832033845282528083208884529091529020555b505b6001600160a01b0385165f90815260046020908152604080832086845290915281208054849290611533908490614a1a565b90915550506001600160a01b0384165f9081526004602090815260408083208684529091528120805484929061156a908490614a2d565b9091555050604080513381526020810184905284916001600160a01b0380881692908916915f80516020614ee1833981519152910160405180910390a45060015b949350505050565b805f5260045ffd5b5f6001607f1b82106115d7576115d76393dafdf160e01b6115b3565b5090565b81600f0b5f036115ea57505050565b5f806116006001600160a01b03861684866128e8565b91509150805f0361161857611613612921565b611627565b815f0361162757611627612949565b5050505050565b5f6001600160a01b038416611661575f805f8085875af190508061165c5761165c6356cdd02560e11b612971565b610881565b60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f6040820152508061088157610881632745a14f60e21b612971565b5f5f80516020614ec18339815191525c6001600160a01b0381166116e85734915061174c565b34156116fe576116fe6319d245cf60e01b6115b3565b7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c5f6117336001600160a01b038416612441565b905061173f8282614a1a565b935061174961299e565b50505b61175f81611759846115bb565b856115db565b50919050565b6001600160a01b0383165f90815260046020908152604080832085845290915281208054839290611797908490614a2d565b9091555050604080513381526020810183905283916001600160a01b038616915f915f80516020614ee183398151915291015b60405180910390a4505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611817576118176306c4a1c760e11b6115b3565b565b80546001600160a01b03165f0361183a5761183a63486aa30760e01b6115b3565b50565b85336001600160a01b038216146118b15760208716156118b1576118af33878787878760405160240161187596959493929190614b74565b60408051601f198184030181529190526020810180516001600160e01b0316635b54587d60e11b1790526001600160a01b038916906129b0565b505b50505050505050565b60038301545f906001600160801b03168082036118e1576118e163a74f97ab60e01b6115b3565b61190f6118ed856115bb565b5f036118f8856115bb565b5f0360809190911b6001600160801b039091161790565b9150831561193b5761192f84600160801b836001600160801b0316612a40565b60018601805490910190555b82156119655761195983600160801b836001600160801b0316612a40565b60028601805490910190555b509392505050565b82516119839061197d8460801d90565b836115db565b610805836020015161197d84600f0b90565b85336001600160a01b038216146118b15760108716156118b1576118af3387878787876040516024016119cd96959493929190614b74565b60408051601f198184030181529190526020810180516001600160e01b031663e1b4af6960e01b1790526001600160a01b038916906129b0565b60015f80516020614f018339815191525d565b5f5f80516020614f018339815191525d565b620f424062ffffff8216111561183a5761183a631400211360e01b62ffffff8316612149565b611a5b82611819565b8154611a679082612adc565b90915550565b84336001600160a01b03821614611b67575f8460400151138015611a945750610800861615155b15611af557611aef3386868686604051602401611ab5959493929190614bbe565b60408051601f198184030181529190526020810180516001600160e01b031663259982e560e01b1790526001600160a01b038816906129b0565b50611b67565b5f846040015113158015611b0c5750610200861615155b15611b67576118b13386868686604051602401611b2d959493929190614bbe565b60408051601f198184030181529190526020810180516001600160e01b031663021d0ee760e41b1790526001600160a01b038816906129b0565b505050505050565b80600f81900b8114610a4157610a416393dafdf160e01b6115b3565b6060810151602082015160408301515f9283929091611baa8282612af7565b604080516080810182525f80825260208201819052918101829052606081019190915283600f0b5f14611cef57611be38884865f612b57565b6001600160801b0316602083015215158152611c028883866001612b57565b6001600160801b03166060830152151560408201525f600f85900b12611cb4575f611c52886080015160020b620d89e7198190058102620d89e8829005820203056001016001600160801b030490565b9050806001600160801b031682602001516001600160801b03161115611c8357611c8363b8e3c38560e01b85612057565b806001600160801b031682606001516001600160801b03161115611cb257611cb263b8e3c38560e01b84612057565b505b805115611cd0576080870151611cd09060058a01908590612c11565b806040015115611cef576080870151611cef9060058a01908490612c11565b5f80611cfc8a8686612c63565b8a5160a08c015160408051602681019290925260068083018a9052600383018b9052928252603a600c8301205f838301819052602080850182905293819052908152928f01909152812092945090925080611d59838a8787612d17565b91509150611d85611d69836115bb565b611d72836115bb565b6001600160801b031660809190911b1790565b995050505050505f84600f0b1215611dee57805115611dc157600283810b5f90815260048a016020526040812081815560018101829055909101555b806040015115611dee57600282810b5f90815260048a016020526040812081815560018101829055909101555b5082600f0b5f14611efb5786545f80611e0a8360a01c60020b90565b6001600160a01b038416915091508460020b8260020b1215611e5957611e52611e4c611e47611e3888612dd0565b611e4188612dd0565b8a613088565b611b6f565b60801b90565b9750611ef7565b8360020b8260020b1215611ed257611e90611e7a611e4783611e4188612dd0565b611d72611e47611e8989612dd0565b858b6130c0565b60038b0154909850611eab906001600160801b0316876130ec565b60038b0180546001600160801b0319166001600160801b0392909216919091179055611ef7565b611ef45f611d72611e47611ee589612dd0565b611eee89612dd0565b8b6130c0565b97505b5050505b5050509250929050565b5f608082811d9084901d01600f83810b9085900b01611f2f611f2683611b6f565b611d7283611b6f565b95945050505050565b5f806001600160a01b0388163303611f5457508390505f61204c565b8491505f86604001511315611fe057610400881615611fdb57611fcc338888888888604051602401611f8b96959493929190614c1e565b60408051601f198184030181529190526020810180516001600160e01b0316625a2a8160e81b17905260028a1615155b6001600160a01b038b169190613113565b9050611fd88282613154565b91505b61204c565b61010088161561204c5761203d33888888888860405160240161200896959493929190614c1e565b60408051601f198184030181529190526020810180516001600160e01b03166346d95b2960e11b17905260018a161515611fbb565b90506120498282613154565b91505b965096945050505050565b815f528060020b60045260245ffd5b825f526001600160a01b0382166004526001600160a01b03811660245260445ffd5b5f6080831615801561209c57506008831615155b156120a857505f61070c565b604083161580156120bb57506004831615155b156120c757505f61070c565b61040083161580156120db57506002831615155b156120e757505f61070c565b61010083161580156120fb57506001831615155b1561210757505f61070c565b6001600160a01b0383161561213857613fff831615158061213357506280000062ffffff8316146107b2565b6107b2565b5062ffffff16628000001415919050565b815f526001600160a01b03811660045260245ffd5b5f6280000062ffffff83160361217557505f919050565b6115d78262ffffff16611a2c565b84336001600160a01b03821614611b6757612000861615611b67576118b133868686866040516024016121ba959493929190614c85565b60408051601f198184030181529190526020810180516001600160e01b03166301a206c160e51b1790526001600160a01b038816906129b0565b6002545f9081906001600160a01b031615612321577f00000000000000000000000000000000000000000000000000000000000000005a101561224157612241630f724b8160e11b6115b3565b6002546040517f0000000000000000000000000000000000000000000000000000000000000000916001600160a01b0316905f90612283908790602401614cc6565b60408051601f198184030181529190526020810180516001600160e01b031663553bfc3760e01b17815281519192505f918291829190828789f13d60201416955085156122da576040513d5f823e805191505f8152505b8580156122eb57508062ffffff1681145b801561230857506103e9610fff821610623e900062fff000831610165b612313575f80612317565b6001815b9096509450505050505b915091565b83545f906001600160a01b03161561234857612348637983c05160e01b6115b3565b61235184613175565b905061237a826123748561236e6001600160a01b03891686613460565b9061347b565b90612adc565b909455509192915050565b85336001600160a01b038216146118b1576110008716156118b1576118af3387878787876040516024016123be96959493929190614cd4565b60408051601f198184030181529190526020810180516001600160e01b031663a910f80f60e01b1790526001600160a01b038916906129b0565b61240182611819565b8154611a67908261347b565b61242d5f80516020614ec18339815191525c6001600160a01b0316613496565b6118175761181763996caf6560e01b6115b3565b5f6001600160a01b038216612457575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015612499573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061070c9190614d1d565b6001600160a01b0382165f80516020614ec18339815191525d807f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d5050565b60208301515f806001600160a01b038816330361251c575f915061260e565b608088161561260e575f61257289338a8a8a8a604051602401612543959493929190614d34565b60408051601f198184030181529190526020810180516001600160e01b03166315d7892d60e21b1790526129b0565b9050805160601461258d5761258d631e048e1d60e01b6115b3565b604088015162ffffff1662800000036125a857606081015191505b600889161561260c57604081015192505f6125c38460801d90565b905080600f0b5f1461260a575f85126125e0600f83900b87614d8d565b9550806125ef575f86126125f3565b5f86135b1561260857612608637d05b8eb60e11b6115b3565b505b505b505b955095509592505050565b5f8080808061262889886134a7565b93509350935093505f831115612656576001600160a01b0386165f9081526001602052604090208054840190555b33887f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f6126838760801d90565b61268d88600f0b90565b60408087015160a0880151606089015192516126f2959493908b90600f96870b81529490950b60208501526001600160a01b039290921660408401526001600160801b0316606083015260020b608082015262ffffff9190911660a082015260c00190565b60405180910390a35091979650505050505050565b5f806001600160a01b038916330361272357508490505f61281e565b5f61272e8460801d90565b90505f61273b85600f0b90565b905060408b16156127b5576127a8611e47338c8c8c8c8c60405160240161276796959493929190614db4565b60408051601f198184030181529190526020810180516001600160e01b031663b47b2fb160e01b17905260048e1615156001600160a01b038f169190613113565b6127b29082614e14565b90505b5f81600f0b5f1415806127cb575082600f0b5f14155b1561281657895160208b01515f13901515146127f6576001600160801b038316608083901b17612807565b6001600160801b038216608084901b175b90506128138982613154565b98505b889450925050505b97509795505050505050565b336001600160a01b038416811480159061286957506001600160a01b038085165f9081526003602090815260408083209385168352929052205460ff16155b156128dd576001600160a01b038085165f9081526005602090815260408083209385168352928152828220868352905220545f1981146128db576128ad8382614a1a565b6001600160a01b038087165f9081526005602090815260408083209387168352928152828220888352905220555b505b610881848484613b54565b6001600160a01b038281165f90815290841660205260408120805c9190612913600f85900b84614d8d565b915081815d50935093915050565b5f80516020614f218339815191525c600181039050805f80516020614f218339815191525d50565b5f80516020614f218339815191525c600181019050805f80516020614f218339815191525d50565b3d60405182815260206004820152816024820152815f604483013e602080601f8401040260440191508181fd5b5f5f80516020614ec18339815191525d565b60605f805f8451602086015f885af19050806129d6576129d663fb6a608160e01b612971565b6040519150601f19603f3d011682016040523d82523d5f602084013e602082511080612a24575060208301516001600160e01b031916612a17836020015190565b6001600160e01b03191614155b15612a3957612a39631e048e1d60e01b6115b3565b5092915050565b5f838302815f1985870982811083820303915050808411612a5f575f80fd5b805f03612a71575082900490506107b2565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60d01b62ffffff60d01b1662ffffff60d01b19919091161790565b8060020b8260020b12612b1657612b1663c4433ed560e01b8383613bbd565b620d89e719600283900b1215612b3757612b3763d5e2f7ab60e01b83612057565b620d89e8600282900b13156111f2576111f263035aeeff60e31b82612057565b600283900b5f908152600485016020526040812080548291906001600160801b0381169060801d612b8882886130ec565b6001600160801b03808216159084168015919091141596509094505f03612bd257885460a01c60020b60020b8860020b13612bd2576001808a0154908401556002808a0154908401555b5f86612be757612be28883614e14565b612bf1565b612bf18883614e41565b90508060801b6001600160801b0386161784555050505094509492505050565b600291820b910b80820715612c3e5760405163d4d8f3e681528260208201528160408201526044601c8201fd5b80820591508160081d5f528260205260405f20600160ff84161b815418815550505050565b600282810b5f81815260048601602052604080822085850b83529082208754929485949293919260a09290921c900b90811215612cb9578160010154836001015403945081600201548360020154039350612d0c565b8560020b8160020b12612ce5578260010154826001015403945082600201548260020154039350612d0c565b81600101548360010154896001015403039450816002015483600201548960020154030393505b505050935093915050565b83545f9081906001600160801b0316600f86900b8203612d5657806001600160801b03165f03612d5157612d51632bbfae4960e21b6115b3565b612d7c565b612d6081876130ec565b87546001600160801b0319166001600160801b03919091161787555b612d9a87600101548603826001600160801b0316600160801b612a40565b9250612dba87600201548503826001600160801b0316600160801b612a40565b6001880195909555505060029094015591929050565b60020b5f60ff82901d80830118620d89e8811115612df957612df96345c3193d60e11b84612057565b7001fffcb933bd6fad37aa2d162d1a5940016001821602600160801b186002821615612e35576ffff97272373d413259a46990580e213a0260801c5b6004821615612e54576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615612e73576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615612e92576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615612eb1576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615612ed0576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615612eef576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615612f0f576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615612f2f576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615612f4f576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615612f6f576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615612f8f576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615612faf576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615612fcf576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615612fef576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615613010576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615613030576e5d6af8dedb81196699c329225ee6040260801c5b6204000082161561304f576d2216e584f5fa1ea926041bedfe980260801c5b6208000082161561306c576b048a170391f7dc42444e8fa20260801c5b5f841315613078575f19045b63ffffffff0160201c9392505050565b5f8082600f0b126130af576130a86130a38585856001613bda565b613c9d565b5f036115ab565b6115ab6130a38585855f035f613bda565b5f8082600f0b126130db576130a86130a38585856001613cb6565b6115ab6130a38585855f035f613cb6565b6001600160801b038216600f82900b01608081901c1561070c576393dafdf15f526004601cfd5b5f8061311f85856129b0565b90508261312f575f9150506107b2565b805160401461314857613148631e048e1d60e01b6115b3565b60400151949350505050565b5f608082811d9084901d03600f83810b9085900b03611f2f611f2683611b6f565b5f73fffd8963efd1fc6a506488495d951d51639616826401000276a21983016001600160a01b031611156131b4576131b46318521d4960e21b83612149565b640100000000600160c01b03602083901b166001600160801b03811160071b81811c6001600160401b03811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061324757607f810383901c9150613251565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461345157886001600160a01b031661343682612dd0565b6001600160a01b0316111561344b5781613453565b80613453565b815b9998505050505050505050565b60a01b62ffffff60a01b1662ffffff60a01b19919091161790565b60b81b62ffffff60b81b1662ffffff60b81b19919091161790565b5f6001600160a01b0382161561070c565b6040805160c0810182525f80825260208201819052918101829052606081018290526080810182905260a08101829052819081908554602086015160038801546001600160801b03165f8261350457610fff60c485901c1661350e565b610fff60b885901c165b60408a81015187525f60208801526001600160a01b0386169087015260a085901c60020b606087015261ffff1690508261354c578960020154613552565b89600101545b6080868101919091526001600160801b03831660a08701528901515f9062400000166135875760d085901c62ffffff16613599565b6135998a6080015162ffffff16613d02565b905081156135c757620f424062ffffff821661ffff84168181028381061515939004929092019101036135c9565b805b60408b01519097505f13905062ffffff8716620f42401480156135ea575080155b156135ff576135ff634b10312360e11b6115b3565b89604001515f0361361a575f80985098505050505050613b4b565b83156136985760608a01516001600160a01b03868116911610613659576136596001600160a01b0386165b60608c0151637c9c6e8f60e01b9190613d11565b6401000276a36001600160a01b03168a606001516001600160a01b031610156136935760608a015161369390639e4d7cc760e01b90612149565b613709565b60608a01516001600160a01b038681169116116136c1576136c16001600160a01b038616613645565b73fffd8963efd1fc6a506488495d951d5263988d266001600160a01b03168a606001516001600160a01b0316106137095760608a015161370990639e4d7cc760e01b90612149565b6040805160e0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c08101919091525b8651158061376957508a606001516001600160a01b031687604001516001600160a01b0316145b613a545760408701516001600160a01b0316815260608701518b516137939160058f019188613d3a565b1515604083015260020b60208201819052620d89e719126137b957620d89e71960208201525b620d89e860020b816020015160020b126137d757620d89e860208201525b6137e48160200151612dd0565b6001600160a01b03908116606083810182905260408a0151908e0151613825939192911680821891811160ff8a1618919091021860a08a01518a518c613e23565b60c085015260a084015260808301526001600160a01b0316604088015281613889576138548160a00151613c9d565b875103875260c08101516080820151613870916130a391614a2d565b876020018181516138819190614e6e565b9052506138c4565b61389c8160c00151826080015101613c9d565b875101875260a08101516138af90613c9d565b876020018181516138c09190614d8d565b9052505b8215613900575f620f4240848360c0015184608001510102816138e9576138e9614e8d565b60c084018051929091049182900390529990990198505b60a08701516001600160801b03161561393f576139338160c00151600160801b8960a001516001600160801b0316612a40565b60808801805190910190525b80606001516001600160a01b031687604001516001600160a01b031603613a1957806040015115613a01575f8086613980578d60010154896080015161398b565b88608001518e600201545b915091505f6139d68f85602001518585600292830b5f90815260049094016020526040909320600181018054909203909155908101805490920390915554600160801b9004600f0b90565b905087156139e1575f035b6139ef8a60a00151826130ec565b6001600160801b031660a08b01525050505b602081015160ff8616900360020b6060880152613742565b805f01516001600160a01b031687604001516001600160a01b031614613a4f57613a468760400151613175565b60020b60608801525b613742565b613a8c8760400151613a7389606001518961346090919063ffffffff16565b6001600160a01b0319166001600160a01b039091161790565b8c5560a08701516001600160801b03858116911614613acc5760a087015160038d0180546001600160801b0319166001600160801b039092169190911790555b84613ae057608087015160028d0155613aeb565b608087015160018d01555b81151585151514613b1f57613b18613b068860200151611b6f565b611d72895f01518e6040015103611b6f565b9950613b44565b613b41613b34885f01518d6040015103611b6f565b611d728960200151611b6f565b99505b5050505050505b92959194509250565b6001600160a01b0383165f90815260046020908152604080832085845290915281208054839290613b86908490614a1a565b9091555050604080513381526020810183905283915f916001600160a01b038716915f80516020614ee183398151915291016117ca565b6040518381528260020b60048201528160020b6024820152604481fd5b5f836001600160a01b0316856001600160a01b03161115613bf9579293925b6001600160a01b038516613c135762bfc9215f526004601cfd5b600160601b600160e01b03606084901b166001600160a01b038686031683613c6657866001600160a01b0316613c538383896001600160a01b0316612a40565b81613c6057613c60614e8d565b04613c92565b613c92613c7d8383896001600160a01b0316613fa9565b886001600160a01b0316808204910615150190565b979650505050505050565b805f811215610a4157610a416393dafdf160e01b6115b3565b5f6001600160a01b038481169086160360ff81901d90810118600160601b6001600160801b038516613ce9818484612a40565b9350845f83858409111684019350505050949350505050565b62bfffff8116610a4181611a2c565b6040518381526001600160a01b03831660048201526001600160a01b0382166024820152604481fd5b5f80600284810b9086900b8181078313919005038315613db557600281900b60081d600181810b5f90815260208a905260409020545f1960ff85168381019390931b01908116801515955085613d9757888360ff16860302613daa565b88613da182613fd9565b840360ff168603025b965050505050613e19565b6001908101600281900b60081d80830b5f90815260208a905260409020545f1960ff841694851b011990811680151595509293919285613dff57888360ff0360ff16860102613e12565b8883613e0a83614069565b0360ff168601025b9650505050505b5094509492505050565b5f80808062ffffff85166001600160a01b03808a16908b1610158288128015613f1c575f613e5c8a5f0385620f424003620f4240612a40565b905082613e7557613e708d8d8d6001613cb6565b613e82565b613e828c8e8d6001613bda565b9650868110613eb6578b9750620f42408414613ead57613ea8878586620f424003613fa9565b613eaf565b865b9450613ef2565b613ec28d8c8386614104565b975082613edb57613ed68d898d6001613cb6565b613ee8565b613ee8888e8d6001613bda565b9650868a5f030394505b82613f0857613f038d898d5f613bda565b613f14565b613f14888e8d5f613cb6565b955050613f9a565b81613f3257613f2d8c8c8c5f613bda565b613f3e565b613f3e8b8d8c5f613cb6565b9450848910613f4f578a9650613f61565b889450613f5e8c8b8785614152565b96505b81613f7857613f738c888c6001613cb6565b613f85565b613f85878d8c6001613bda565b9550613f97868485620f424003613fa9565b93505b50505095509550955095915050565b5f613fb5848484612a40565b90508180613fc557613fc5614e8d565b838509156107b257600101806107b2575f80fd5b5f808211613fe5575f80fd5b507f0706060506020504060203020504030106050205030304010505030400000000601f6f8421084210842108cc6318c6db6d54be831560081b6001600160801b03851160071b1784811c6001600160401b031060061b1784811c63ffffffff1060051b1784811c61ffff1060041b1784811c60ff1060031b1793841c1c161a1790565b5f808211614075575f80fd5b507e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b150316040581196001019091166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c1690811c63d76453e004601f169190911a1790565b5f6001600160801b038416156001600160a01b03861615171561412e57634f2461b85f526004601cfd5b81614145576141408585856001614195565b611f2f565b611f2f8585856001614280565b5f6001600160801b038416156001600160a01b03861615171561417c57634f2461b85f526004601cfd5b8161418d576141408585855f614280565b611f2f8585855f5b5f8115614205575f6001600160a01b038411156141c9576141c484600160601b876001600160801b0316612a40565b6141e0565b6141e06001600160801b038616606086901b614ea1565b90506141fd6141f8826001600160a01b038916614a2d565b614362565b9150506115ab565b5f6001600160a01b038411156142325761422d84600160601b876001600160801b0316613fa9565b61424f565b61424f606085901b6001600160801b038716808204910615150190565b9050806001600160a01b0387161161426e57634323a5555f526004601cfd5b6001600160a01b0386160390506115ab565b5f825f0361428f5750836115ab565b600160601b600160e01b03606085901b168215614321576001600160a01b038616848102908582816142c3576142c3614e8d565b04036142f3578181018281106142f1576142e783896001600160a01b031683613fa9565b93505050506115ab565b505b506141fd818561430c6001600160a01b038a1683614ea1565b6143169190614a2d565b808204910615150190565b6001600160a01b0386168481029085820414818311166143485763f5c787f15f526004601cfd5b8082036142e76141f8846001600160a01b038b1684613fa9565b806001600160a01b0381168114610a4157610a416393dafdf160e01b6115b3565b6001600160a01b038116811461183a575f80fd5b5f80604083850312156143a8575f80fd5b82356143b381614383565b946020939093013593505050565b5f602082840312156143d1575f80fd5b81356001600160e01b0319811681146107b2575f80fd5b5f805f606084860312156143fa575f80fd5b833561440581614383565b95602085013595506040909401359392505050565b5f805f6060848603121561442c575f80fd5b833561443781614383565b9250602084013561444781614383565b929592945050506040919091013590565b5f60208284031215614468575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b03811182821017156144a5576144a561446f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156144d3576144d361446f565b604052919050565b803562ffffff81168114610a41575f80fd5b8035600281900b8114610a41575f80fd5b5f60a0828403121561450e575f80fd5b60405160a081016001600160401b03811182821017156145305761453061446f565b604052905080823561454181614383565b8152602083013561455181614383565b6020820152614562604084016144db565b6040820152614573606084016144ed565b6060820152608083013561458681614383565b6080919091015292915050565b5f8083601f8401126145a3575f80fd5b5081356001600160401b038111156145b9575f80fd5b6020830191508360208285010111156145d0575f80fd5b9250929050565b5f805f805f61010086880312156145ec575f80fd5b6145f687876144fe565b945060a0860135935060c0860135925060e08601356001600160401b0381111561461e575f80fd5b61462a88828901614593565b969995985093965092949392505050565b5f6020828403121561464b575f80fd5b81356107b281614383565b5f8060408385031215614667575f80fd5b50508035926020909101359150565b602080825282518282018190525f918401906040840190835b818110156146ad57835183526020938401939092019160010161468f565b509095945050505050565b5f80602083850312156146c9575f80fd5b82356001600160401b038111156146de575f80fd5b6146ea85828601614593565b90969095509350505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060c0838503121561473c575f80fd5b61474684846144fe565b915061475460a084016144db565b90509250929050565b80358015158114610a41575f80fd5b5f806040838503121561477d575f80fd5b823561478881614383565b91506147546020840161475d565b5f805f808486036101408112156147ab575f80fd5b6147b587876144fe565b94506080609f19820112156147c8575f80fd5b506147d1614483565b6147dd60a087016144ed565b81526147eb60c087016144ed565b602082015260e08601356040820152610100860135606082015292506101208501356001600160401b03811115614820575f80fd5b61482c87828801614593565b95989497509550505050565b5f805f8060e0858703121561484b575f80fd5b61485586866144fe565b935060a085013561486581614383565b925060c08501356001600160401b03811115614820575f80fd5b5f8060208385031215614890575f80fd5b82356001600160401b038111156148a5575f80fd5b8301601f810185136148b5575f80fd5b80356001600160401b038111156148ca575f80fd5b8560208260051b84010111156148de575f80fd5b6020919091019590945092505050565b5f80604083850312156148ff575f80fd5b823561490a81614383565b9150602083013561491a81614383565b809150509250929050565b5f805f8084860361012081121561493a575f80fd5b61494487876144fe565b94506060609f1982011215614957575f80fd5b50604051606081016001600160401b038111828210171561497a5761497a61446f565b60405261498960a0870161475d565b815260c0860135602082015260e08601356149a381614383565b604082015292506101008501356001600160401b03811115614820575f80fd5b5f805f80608085870312156149d6575f80fd5b84356149e181614383565b935060208501356149f181614383565b93969395505050506040820135916060013590565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561070c5761070c614a06565b8082018082111561070c5761070c614a06565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b602081525f6115ab602083018486614a40565b5f60208284031215614a8b575f80fd5b81516001600160401b03811115614aa0575f80fd5b8201601f81018413614ab0575f80fd5b80516001600160401b03811115614ac957614ac961446f565b614adc601f8201601f19166020016144ab565b818152856020838501011115614af0575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f81600f0b60016001607f1b03198103614b2957614b29614a06565b5f0392915050565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b6001600160a01b0387168152614b8d6020820187614b31565b8460c08201528360e08201526101206101008201525f614bb261012083018486614a40565b98975050505050505050565b6001600160a01b0386168152614bd76020820186614b31565b8351600290810b60c08301526020850151900b60e0820152604084015161010082015260608401516101208201526101606101408201525f613c9261016083018486614a40565b6001600160a01b0387168152614c376020820187614b31565b8451600290810b60c08301526020860151900b60e082015260408501516101008201526060850151610120820152836101408201526101806101608201525f614bb261018083018486614a40565b6001600160a01b0386168152614c9e6020820186614b31565b6001600160a01b03841660c082015261010060e082018190525f90613c929083018486614a40565b60a0810161070c8284614b31565b6001600160a01b0387168152614ced6020820187614b31565b60018060a01b03851660c08201528360020b60e08201526101206101008201525f614bb261012083018486614a40565b5f60208284031215614d2d575f80fd5b5051919050565b6001600160a01b0386168152614d4d6020820186614b31565b8351151560c0820152602084015160e082015260408401516001600160a01b03166101008201526101406101208201525f613c9261014083018486614a40565b8082018281125f831280158216821582161715614dac57614dac614a06565b505092915050565b6001600160a01b0387168152614dcd6020820187614b31565b8451151560c0820152602085015160e082015260408501516001600160a01b0316610100820152836101208201526101606101408201525f614bb261016083018486614a40565b600f81810b9083900b0160016001607f1b03811360016001607f1b03198212171561070c5761070c614a06565b600f82810b9082900b0360016001607f1b0319811260016001607f1b038213171561070c5761070c614a06565b8181035f831280158383131683831282161715612a3957612a39614a06565b634e487b7160e01b5f52601260045260245ffd5b5f82614ebb57634e487b7160e01b5f52601260045260245ffd5b50049056fe27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b91b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac728859c090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab237d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0ba2646970667358221220c720af38850bace8901ec0c414e9cc6b7600fdc66c58c62bb119ab202e9502fe64736f6c634300081a003360a0604052348015600e575f80fd5b506040516116ad3803806116ad833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b6080516115e46100c95f395f818160790152818160f50152818161022d01528181610294015281816102c501528181610390015281816104fa01528181610550015281816105bf015281816106100152818161077a01526107ad01526115e45ff3fe60806040526004361061003e575f3560e01c80630a5b11e414610042578063481c6a75146100685780635a6bcfda146100b357806391dd7346146100c6575b5f80fd5b610055610050366004611035565b6100f2565b6040519081526020015b60405180910390f35b348015610073575f80fd5b5061009b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161005f565b6100556100c13660046110bb565b61020a565b3480156100d1575f80fd5b506100e56100e0366004611118565b610220565b60405161005f91906111b2565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166348c894916040518060c00160405280336001600160a01b03168152602001898152602001888152602001878152602001861515815260200185151581525060405160200161016c919061120e565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161019791906111b2565b5f604051808303815f875af11580156101b2573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101d991908101906112aa565b8060200190518101906101ec919061131e565b9050478015610200576102005f3383610662565b5095945050505050565b5f6102188484845f806100f2565b949350505050565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610256575f80fd5b5f61026383850185611335565b90505f6102be610278836020015160a0902090565b6040840151805160208201516060909201516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693923092916106fc565b505090505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635a6bcfda8460200151856040015186606001516040518463ffffffff1660e01b815260040161031f939291906113fc565b60408051808303815f875af115801561033a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061035e919061144b565b5090505f6103ba610374856020015160a0902090565b6040860151805160208201516060909201516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001693923092916106fc565b505090505f6103d485602001515f0151865f015130610753565b925050505f6103ef866020015160200151875f015130610753565b9250505082600f0b86604001516040015186600f0b61040e9190611481565b1461045f5760405162461bcd60e51b815260206004820152601a60248201527f6c6971756964697479206368616e676520696e636f7272656374000000000000604482015260640160405180910390fd5b5f86604001516040015112156104a7575f82138061047c57505f81135b610488576104886114a8565b5f82128061049557505f81125b156104a2576104a26114a8565b6104ea565b5f86604001516040015113156104ea575f8212806104c457505f81125b6104d0576104d06114a8565b5f8213806104dd57505f81135b156104ea576104ea6114a8565b5f821215610540578551610540907f000000000000000000000000000000000000000000000000000000000000000090610523856114bc565b60808a015160208b0151516001600160a01b0316939291906107df565b5f811215610598578551610598907f000000000000000000000000000000000000000000000000000000000000000090610579846114bc565b60808a01516020808c015101516001600160a01b0316939291906107df565b5f8213156105e757855160a08701516020880151516105e7926001600160a01b03909116917f000000000000000000000000000000000000000000000000000000000000000091908690610aab565b5f81131561063857855160a08701516020808901510151610638926001600160a01b03909116917f000000000000000000000000000000000000000000000000000000000000000091908590610aab565b60408051602081018690520160405160208183030381529060405296505050505050505b92915050565b5f6001600160a01b038416610695575f805f8085875af1905080610690576106906356cdd02560e11b610b7d565b6106f6565b60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f604082015250806106f6576106f6632745a14f60e21b610b7d565b50505050565b60408051602681018390526006810184905260038101859052858152603a600c8201205f9282018390526020820183905290829052819081906107408a8a83610baa565b919c909b50909950975050505050505050565b5f80806107696001600160a01b03871686610c4d565b925061079e6001600160a01b0387167f0000000000000000000000000000000000000000000000000000000000000000610c4d565b91506107d46001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168588610cdc565b905093509350939050565b801561087457836001600160a01b031663f5298aca8461080e886001600160a01b03166001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604481018590526064015b5f604051808303815f87803b158015610859575f80fd5b505af115801561086b573d5f803e3d5ffd5b50505050610aa4565b6001600160a01b0385166108eb57836001600160a01b03166311da60b4836040518263ffffffff1660e01b815260040160206040518083038185885af11580156108c0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906108e5919061131e565b50610aa4565b604051632961046560e21b81526001600160a01b03868116600483015285169063a5841194906024015f604051808303815f87803b15801561092b575f80fd5b505af115801561093d573d5f803e3d5ffd5b505050506001600160a01b03831630146109cf576040516323b872dd60e01b81526001600160a01b0384811660048301528581166024830152604482018490528616906323b872dd906064016020604051808303815f875af11580156109a5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109c991906114d6565b50610a41565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905286169063a9059cbb906044016020604051808303815f875af1158015610a1b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a3f91906114d6565b505b836001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610a7e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610aa2919061131e565b505b5050505050565b80610aed57604051630b0d9c0960e01b81526001600160a01b038681166004830152848116602483015260448201849052851690630b0d9c0990606401610842565b836001600160a01b031663156e29f684610b16886001600160a01b03166001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604481018590526064015f604051808303815f87803b158015610b60575f80fd5b505af1158015610b72573d5f803e3d5ffd5b505050505050505050565b3d60405182815260206004820152816024820152815f604483013e602080601f8401040260440191508181fd5b5f805f80610bb88686610d73565b604051631afeb18d60e11b815260048101829052600360248201529091505f906001600160a01b038916906335fd631a906044015f60405180830381865afa158015610c06573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610c2d91908101906114f1565b60208101516040820151606090920151909a919950975095505050505050565b5f6001600160a01b038316610c6d57506001600160a01b0381163161065c565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015610cb1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd5919061131e565b905061065c565b5f806001600160a01b0384165f526001600160a01b03831660205260405f209050846001600160a01b031663f135baaa826040518263ffffffff1660e01b8152600401610d2b91815260200190565b602060405180830381865afa158015610d46573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6a919061131e565b95945050505050565b5f80610d7e84610dc3565b90505f610d8c60068361159b565b6040805160208101879052908101829052909150606001604051602081830303815290604052805190602001209250505092915050565b6040515f90610de2908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b634e487b7160e01b5f52604160045260245ffd5b60405160c081016001600160401b0381118282101715610e3557610e35610dff565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610e6357610e63610dff565b604052919050565b6001600160a01b0381168114610e7f575f80fd5b50565b8035600281900b8114610e93575f80fd5b919050565b5f60a08284031215610ea8575f80fd5b60405160a081016001600160401b0381118282101715610eca57610eca610dff565b6040529050808235610edb81610e6b565b81526020830135610eeb81610e6b565b6020820152604083013562ffffff81168114610f05575f80fd5b6040820152610f1660608401610e82565b60608201526080830135610f2981610e6b565b6080919091015292915050565b5f60808284031215610f46575f80fd5b604051608081016001600160401b0381118282101715610f6857610f68610dff565b604052905080610f7783610e82565b8152610f8560208401610e82565b602082015260408301356040820152606083013560608201525092915050565b5f6001600160401b03821115610fbd57610fbd610dff565b50601f01601f191660200190565b5f82601f830112610fda575f80fd5b8135610fed610fe882610fa5565b610e3b565b818152846020838601011115611001575f80fd5b816020850160208301375f918101602001919091529392505050565b8015158114610e7f575f80fd5b8035610e938161101d565b5f805f805f610180868803121561104a575f80fd5b6110548787610e98565b94506110638760a08801610f36565b93506101208601356001600160401b0381111561107e575f80fd5b61108a88828901610fcb565b93505061014086013561109c8161101d565b91506101608601356110ad8161101d565b809150509295509295909350565b5f805f61014084860312156110ce575f80fd5b6110d88585610e98565b92506110e78560a08601610f36565b91506101208401356001600160401b03811115611102575f80fd5b61110e86828701610fcb565b9150509250925092565b5f8060208385031215611129575f80fd5b82356001600160401b0381111561113e575f80fd5b8301601f8101851361114e575f80fd5b80356001600160401b03811115611163575f80fd5b856020828401011115611174575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6111c46020830184611184565b9392505050565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b602080825282516001600160a01b0316828201528201515f9061123460408401826111cb565b506040838101518051600290810b60e08601526020820151900b610100850152908101516101208401526060908101516101408401528301516101a06101608401526112846101c0840182611184565b90506080840151151561018084015260a084015115156101a08401528091505092915050565b5f602082840312156112ba575f80fd5b81516001600160401b038111156112cf575f80fd5b8201601f810184136112df575f80fd5b80516112ed610fe882610fa5565b818152856020838501011115611301575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f6020828403121561132e575f80fd5b5051919050565b5f60208284031215611345575f80fd5b81356001600160401b0381111561135a575f80fd5b82016101a0818503121561136c575f80fd5b611374610e13565b813561137f81610e6b565b815261138e8560208401610e98565b60208201526113a08560c08401610f36565b60408201526101408201356001600160401b038111156113be575f80fd5b6113ca86828501610fcb565b6060830152506113dd610160830161102a565b60808201526113ef610180830161102a565b60a0820152949350505050565b61140681856111cb565b8251600290810b60a08301526020840151900b60c0820152604083015160e082015260608301516101008201526101406101208201525f610d6a610140830184611184565b5f806040838503121561145c575f80fd5b505080516020909101519092909150565b634e487b7160e01b5f52601160045260245ffd5b8082018281125f8312801582168215821617156114a0576114a061146d565b505092915050565b634e487b7160e01b5f52600160045260245ffd5b5f600160ff1b82016114d0576114d061146d565b505f0390565b5f602082840312156114e6575f80fd5b81516111c48161101d565b5f60208284031215611501575f80fd5b81516001600160401b03811115611516575f80fd5b8201601f81018413611526575f80fd5b80516001600160401b0381111561153f5761153f610dff565b8060051b61154f60208201610e3b565b9182526020818401810192908101908784111561156a575f80fd5b6020850194505b8385101561159057845180835260209586019590935090910190611571565b979650505050505050565b8082018082111561065c5761065c61146d56fea2646970667358221220022bb587431beddd1b3a2d4e57eee388a80ee14cf23bcb0c201ec0029fc9cb7a64736f6c634300081a003360a0604052348015600e575f80fd5b506040516117d43803806117d4833981016040819052602b91603b565b6001600160a01b03166080526066565b5f60208284031215604a575f80fd5b81516001600160a01b0381168114605f575f80fd5b9392505050565b6080516117196100bb5f395f8181606e0152818160d7015281816101ee0152818161030001528181610888015281816108e10152818161095e015281816109b201528181610ac50152610af801526117195ff3fe608060405260043610610033575f3560e01c80632229d0b414610037578063481c6a751461005d57806391dd7346146100a8575b5f80fd5b61004a610045366004611286565b6100d4565b6040519081526020015b60405180910390f35b348015610068575f80fd5b506100907f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610054565b3480156100b3575f80fd5b506100c76100c23660046112f7565b6101e1565b6040516100549190611393565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166348c894916040518060a00160405280336001600160a01b031681526020018681526020018881526020018781526020018581525060405160200161014491906113ef565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016f9190611393565b5f604051808303815f875af115801561018a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101b19190810190611480565b8060200190518101906101c491906114f5565b90504780156101d8576101d85f3383610a04565b50949350505050565b6060336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610217575f80fd5b5f6102248385018561150c565b90505f61023c82604001515f0151835f015130610a9e565b925050505f610257836040015160200151845f015130610a9e565b92505050815f146102af5760405162461bcd60e51b815260206004820152601e60248201527f64656c74614265666f726530206973206e6f7420657175616c20746f2030000060448201526064015b60405180910390fd5b80156102fd5760405162461bcd60e51b815260206004820152601e60248201527f64656c74614265666f726531206973206e6f7420657175616c20746f2030000060448201526064016102a6565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f3cd914c8560400151866060015187608001516040518463ffffffff1660e01b815260040161035a939291906115c4565b6020604051808303815f875af1158015610376573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039a91906114f5565b90505f6103b285604001515f0151865f015130610a9e565b925050505f6103cd866040015160200151875f015130610a9e565b9250505085606001515f01511561062f575f86606001516020015112156105125785606001516020015182121561047c5760405162461bcd60e51b815260206004820152604760248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e7453706064820152661958da599a595960ca1b608482015260a4016102a6565b816104878460801d90565b600f0b146104a75760405162461bcd60e51b81526004016102a69061160c565b5f81121561050d5760405162461bcd60e51b815260206004820152602d60248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201526c06f7220657175616c20746f203609c1b60648201526084016102a6565b610878565b5f8213156105785760405162461bcd60e51b815260206004820152602d60248201527f64656c7461416674657230206973206e6f74206c657373207468616e206f722060448201526c657175616c20746f207a65726f60981b60648201526084016102a6565b8061058384600f0b90565b600f0b146105a35760405162461bcd60e51b81526004016102a690611657565b85606001516020015181131561050d5760405162461bcd60e51b8152602060048201526044602482018190527f64656c7461416674657231206973206e6f74206c657373207468616e206f7220908201527f657175616c20746f20646174612e706172616d732e616d6f756e745370656369606482015263199a595960e21b608482015260a4016102a6565b5f866060015160200151121561075e578560600151602001518112156106cd5760405162461bcd60e51b815260206004820152604760248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e7453706064820152661958da599a595960ca1b608482015260a4016102a6565b806106d884600f0b90565b600f0b146106f85760405162461bcd60e51b81526004016102a690611657565b5f82121561050d5760405162461bcd60e51b815260206004820152602d60248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201526c06f7220657175616c20746f203609c1b60648201526084016102a6565b5f8113156107c15760405162461bcd60e51b815260206004820152602a60248201527f64656c7461416674657231206973206e6f74206c657373207468616e206f72206044820152690657175616c20746f20360b41b60648201526084016102a6565b816107cc8460801d90565b600f0b146107ec5760405162461bcd60e51b81526004016102a69061160c565b8560600151602001518213156108785760405162461bcd60e51b8152602060048201526044602482018190527f64656c7461416674657230206973206e6f74206c657373207468616e206f7220908201527f657175616c20746f20646174612e706172616d732e616d6f756e745370656369606482015263199a595960e21b608482015260a4016102a6565b5f8212156108d15785516108d1907f0000000000000000000000000000000000000000000000000000000000000000906108b1856116a2565b6020808b0151015160408b0151516001600160a01b031693929190610b2a565b5f811215610936578551610936907f00000000000000000000000000000000000000000000000000000000000000009061090a846116a2565b8960200151602001518a60400151602001516001600160a01b0316610b2a90949392919063ffffffff16565b5f821315610986578551602087015151604088015151610986926001600160a01b03909116917f000000000000000000000000000000000000000000000000000000000000000091908690610df6565b5f8113156109da578551602080880151516040890151909101516109da926001600160a01b03909116917f000000000000000000000000000000000000000000000000000000000000000091908590610df6565b60408051602081018590520160405160208183030381529060405296505050505050505b92915050565b5f6001600160a01b038416610a37575f805f8085875af1905080610a3257610a326356cdd02560e11b610ec8565b610a98565b60405163a9059cbb60e01b81526001600160a01b038416600482015282602482015260205f6044835f895af13d15601f3d1160015f511416171691505f81525f60208201525f60408201525080610a9857610a98632745a14f60e21b610ec8565b50505050565b5f8080610ab46001600160a01b03871686610ef5565b9250610ae96001600160a01b0387167f0000000000000000000000000000000000000000000000000000000000000000610ef5565b9150610b1f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168588610f84565b905093509350939050565b8015610bbf57836001600160a01b031663f5298aca84610b59886001600160a01b03166001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604481018590526064015b5f604051808303815f87803b158015610ba4575f80fd5b505af1158015610bb6573d5f803e3d5ffd5b50505050610def565b6001600160a01b038516610c3657836001600160a01b03166311da60b4836040518263ffffffff1660e01b815260040160206040518083038185885af1158015610c0b573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610c3091906114f5565b50610def565b604051632961046560e21b81526001600160a01b03868116600483015285169063a5841194906024015f604051808303815f87803b158015610c76575f80fd5b505af1158015610c88573d5f803e3d5ffd5b505050506001600160a01b0383163014610d1a576040516323b872dd60e01b81526001600160a01b0384811660048301528581166024830152604482018490528616906323b872dd906064016020604051808303815f875af1158015610cf0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d1491906116c8565b50610d8c565b60405163a9059cbb60e01b81526001600160a01b0385811660048301526024820184905286169063a9059cbb906044016020604051808303815f875af1158015610d66573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8a91906116c8565b505b836001600160a01b03166311da60b46040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610dc9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ded91906114f5565b505b5050505050565b80610e3857604051630b0d9c0960e01b81526001600160a01b038681166004830152848116602483015260448201849052851690630b0d9c0990606401610b8d565b836001600160a01b031663156e29f684610e61886001600160a01b03166001600160a01b031690565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604481018590526064015f604051808303815f87803b158015610eab575f80fd5b505af1158015610ebd573d5f803e3d5ffd5b505050505050505050565b3d60405182815260206004820152816024820152815f604483013e602080601f8401040260440191508181fd5b5f6001600160a01b038316610f1557506001600160a01b038116316109fe565b6040516370a0823160e01b81526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa158015610f59573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7d91906114f5565b90506109fe565b5f806001600160a01b0384165f526001600160a01b03831660205260405f209050846001600160a01b031663f135baaa826040518263ffffffff1660e01b8152600401610fd391815260200190565b602060405180830381865afa158015610fee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061101291906114f5565b95945050505050565b634e487b7160e01b5f52604160045260245ffd5b60405160a0810167ffffffffffffffff811182821017156110525761105261101b565b60405290565b604051601f8201601f1916810167ffffffffffffffff811182821017156110815761108161101b565b604052919050565b6001600160a01b038116811461109d575f80fd5b50565b80356110ab81611089565b919050565b5f60a082840312156110c0575f80fd5b6110c861102f565b905081356110d581611089565b815260208201356110e581611089565b6020820152604082013562ffffff811681146110ff575f80fd5b60408201526060820135600281900b8114611118575f80fd5b6060820152611129608083016110a0565b608082015292915050565b801515811461109d575f80fd5b5f60608284031215611151575f80fd5b6040516060810167ffffffffffffffff811182821017156111745761117461101b565b604052905080823561118581611134565b815260208381013590820152604083013561119f81611089565b6040919091015292915050565b5f604082840312156111bc575f80fd5b6040805190810167ffffffffffffffff811182821017156111df576111df61101b565b60405290508082356111f081611134565b8152602083013561120081611134565b6020919091015292915050565b5f67ffffffffffffffff8211156112265761122661101b565b50601f01601f191660200190565b5f82601f830112611243575f80fd5b81356112566112518261120d565b611058565b81815284602083860101111561126a575f80fd5b816020850160208301375f918101602001919091529392505050565b5f805f80610160858703121561129a575f80fd5b6112a486866110b0565b93506112b38660a08701611141565b92506112c38661010087016111ac565b915061014085013567ffffffffffffffff8111156112df575f80fd5b6112eb87828801611234565b91505092959194509250565b5f8060208385031215611308575f80fd5b823567ffffffffffffffff81111561131e575f80fd5b8301601f8101851361132e575f80fd5b803567ffffffffffffffff811115611344575f80fd5b856020828401011115611355575f80fd5b6020919091019590945092505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6113a56020830184611365565b9392505050565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b602080825282516001600160a01b0316828201528281015180511515604080850191909152910151151560608301528201515f9061143060808401826113ac565b506060830151805115156101208401526020810151610140840152604001516001600160a01b03166101608301526080830151610180808401526114786101a0840182611365565b949350505050565b5f60208284031215611490575f80fd5b815167ffffffffffffffff8111156114a6575f80fd5b8201601f810184136114b6575f80fd5b80516114c46112518261120d565b8181528560208385010111156114d8575f80fd5b8160208401602083015e5f91810160200191909152949350505050565b5f60208284031215611505575f80fd5b5051919050565b5f6020828403121561151c575f80fd5b813567ffffffffffffffff811115611532575f80fd5b82016101808185031215611544575f80fd5b61154c61102f565b813561155781611089565b815261156685602084016111ac565b602082015261157885606084016110b0565b604082015261158b856101008401611141565b606082015261016082013567ffffffffffffffff8111156115aa575f80fd5b6115b686828501611234565b608083015250949350505050565b6115ce81856113ac565b8251151560a0820152602083015160c082015260408301516001600160a01b031660e08201526101206101008201525f611012610120830184611365565b6020808252602b908201527f64656c74612e616d6f756e74302829206973206e6f7420657175616c20746f2060408201526a064656c74614166746572360ac1b606082015260800190565b6020808252602b908201527f64656c74612e616d6f756e74312829206973206e6f7420657175616c20746f2060408201526a64656c746141667465723160a81b606082015260800190565b5f600160ff1b82016116c257634e487b7160e01b5f52601160045260245ffd5b505f0390565b5f602082840312156116d8575f80fd5b81516113a58161113456fea2646970667358221220ab101dfe4b4748d245c1716f79d45f12181b0ade83665d9ec819f86559f0b77264736f6c634300081a00336080604052348015600e575f80fd5b506105a08061001c5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806332c961d91461005957806357eb1da714610081578063769323e314610089578063b08d3fe214610091578063e631bcbf146100d1575b5f80fd5b61006e610067366004610386565b60a0902090565b6040519081526020015b60405180910390f35b61006e600681565b61006e600481565b6100a461009f366004610423565b61011c565b604080516001600160801b039095168552600f9390930b6020850152918301526060820152608001610078565b6100e46100df36600461045e565b6101d2565b604080516001600160a01b03909516855260029390930b602085015262ffffff91821692840192909252166060820152608001610078565b5f805f805f61012b8787610284565b604051631afeb18d60e11b815260048101829052600360248201529091505f906001600160a01b038a16906335fd631a906044015f60405180830381865afa158015610179573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526101a09190810190610488565b602081015160408201516060909201516001600160801b0382169c60809290921d9b5091995090975095505050505050565b5f805f805f6101e0866102d8565b604051631e2eaeaf60e01b8152600481018290529091505f906001600160a01b03891690631e2eaeaf90602401602060405180830381865afa158015610228573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061024c9190610534565b90506001600160a01b03811695508060a01c60020b945062ffffff8160b81c16935062ffffff8160d01c169250505092959194509250565b5f8061028f846102d8565b90505f61029d60048361054b565b60408051600287900b602082015290810182905290915060600160405160208183030381529060405280519060200120925050505b92915050565b6040515f906102f7908390600690602001918252602082015260400190565b604051602081830303815290604052805190602001209050919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561035157610351610314565b604052919050565b6001600160a01b038116811461036d575f80fd5b50565b8035600281900b8114610381575f80fd5b919050565b5f60a0828403128015610397575f80fd5b5060405160a0810167ffffffffffffffff811182821017156103bb576103bb610314565b60405282356103c981610359565b815260208301356103d981610359565b6020820152604083013562ffffff811681146103f3575f80fd5b604082015261040460608401610370565b6060820152608083013561041781610359565b60808201529392505050565b5f805f60608486031215610435575f80fd5b833561044081610359565b92506020840135915061045560408501610370565b90509250925092565b5f806040838503121561046f575f80fd5b823561047a81610359565b946020939093013593505050565b5f60208284031215610498575f80fd5b815167ffffffffffffffff8111156104ae575f80fd5b8201601f810184136104be575f80fd5b805167ffffffffffffffff8111156104d8576104d8610314565b8060051b6104e860208201610328565b91825260208184018101929081019087841115610503575f80fd5b6020850194505b838510156105295784518083526020958601959093509091019061050a565b979650505050505050565b5f60208284031215610544575f80fd5b5051919050565b808201808211156102d257634e487b7160e01b5f52601160045260245ffdfea26469706673582212200f59ae3b20597ee5b9c8afd86ef4272903aea11220ba5f5248dea7997a9f1cfe64736f6c634300081a003360e060405234801561000f575f80fd5b50604051610eea380380610eea83398101604081905261002e916101a1565b8282825f61003c84826102a2565b50600161004983826102a2565b5060ff81166080524660a05261005d61006c565b60c052506103cd945050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161009c919061035c565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610127575f80fd5b81516001600160401b0381111561014057610140610104565b604051601f8201601f19908116603f011681016001600160401b038111828210171561016e5761016e610104565b604052818152838201602001851015610185575f80fd5b8160208501602083015e5f918101602001919091529392505050565b5f805f606084860312156101b3575f80fd5b83516001600160401b038111156101c8575f80fd5b6101d486828701610118565b602086015190945090506001600160401b038111156101f1575f80fd5b6101fd86828701610118565b925050604084015160ff81168114610213575f80fd5b809150509250925092565b600181811c9082168061023257607f821691505b60208210810361025057634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111561029d57805f5260205f20601f840160051c8101602085101561027b5750805b601f840160051c820191505b8181101561029a575f8155600101610287565b50505b505050565b81516001600160401b038111156102bb576102bb610104565b6102cf816102c9845461021e565b84610256565b6020601f821160018114610301575f83156102ea5750848201515b5f19600385901b1c1916600184901b17845561029a565b5f84815260208120601f198516915b828110156103305787850151825560209485019460019092019101610310565b508482101561034d57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b5f8083546103698161021e565b6001821680156103805760018114610395576103c2565b60ff19831686528115158202860193506103c2565b865f5260205f205f5b838110156103ba5781548882015260019091019060200161039e565b505081860193505b509195945050505050565b60805160a05160c051610af36103f75f395f61044201525f61040d01525f61013f0152610af35ff3fe608060405234801561000f575f80fd5b50600436106100cb575f3560e01c806340c10f191161008857806395d89b411161006357806395d89b41146101cc578063a9059cbb146101d4578063d505accf146101e7578063dd62ed3e146101fc575f80fd5b806340c10f191461017b57806370a082311461018e5780637ecebe00146101ad575f80fd5b806306fdde03146100cf578063095ea7b3146100ed57806318160ddd1461011057806323b872dd14610127578063313ce5671461013a5780633644e51514610173575b5f80fd5b6100d7610226565b6040516100e4919061083f565b60405180910390f35b6101006100fb36600461088f565b6102b1565b60405190151581526020016100e4565b61011960025481565b6040519081526020016100e4565b6101006101353660046108b7565b61031d565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100e4565b61011961040a565b61010061018936600461088f565b610464565b61011961019c3660046108f1565b60036020525f908152604090205481565b6101196101bb3660046108f1565b60056020525f908152604090205481565b6100d7610478565b6101006101e236600461088f565b610485565b6101fa6101f5366004610911565b6104fb565b005b61011961020a36600461097e565b600460209081525f928352604080842090915290825290205481565b5f8054610232906109af565b80601f016020809104026020016040519081016040528092919081815260200182805461025e906109af565b80156102a95780601f10610280576101008083540402835291602001916102a9565b820191905f5260205f20905b81548152906001019060200180831161028c57829003601f168201915b505050505081565b335f8181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061030b9086815260200190565b60405180910390a35060015b92915050565b6001600160a01b0383165f9081526004602090815260408083203384529091528120545f1981146103765761035283826109fb565b6001600160a01b0386165f9081526004602090815260408083203384529091529020555b6001600160a01b0385165f908152600360205260408120805485929061039d9084906109fb565b90915550506001600160a01b038085165f81815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103f79087815260200190565b60405180910390a3506001949350505050565b5f7f0000000000000000000000000000000000000000000000000000000000000000461461043f5761043a61073e565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b5f61046f83836107d6565b50600192915050565b60018054610232906109af565b335f908152600360205260408120805483919083906104a59084906109fb565b90915550506001600160a01b0383165f81815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061030b9086815260200190565b428410156105505760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b5f600161055b61040a565b6001600160a01b038a81165f8181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f1981840301815282825280516020918201205f84529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610663573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b038116158015906106995750876001600160a01b0316816001600160a01b0316145b6106d65760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b6044820152606401610547565b6001600160a01b039081165f9081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f5f60405161076e9190610a0e565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b8060025f8282546107e79190610aaa565b90915550506001600160a01b0382165f818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461088a575f80fd5b919050565b5f80604083850312156108a0575f80fd5b6108a983610874565b946020939093013593505050565b5f805f606084860312156108c9575f80fd5b6108d284610874565b92506108e060208501610874565b929592945050506040919091013590565b5f60208284031215610901575f80fd5b61090a82610874565b9392505050565b5f805f805f805f60e0888a031215610927575f80fd5b61093088610874565b965061093e60208901610874565b95506040880135945060608801359350608088013560ff81168114610961575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b5f806040838503121561098f575f80fd5b61099883610874565b91506109a660208401610874565b90509250929050565b600181811c908216806109c357607f821691505b6020821081036109e157634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610317576103176109e7565b5f8083545f8160011c90506001821680610a2957607f821691505b602082108103610a4757634e487b7160e01b5f52602260045260245ffd5b808015610a5b5760018114610a7057610a9e565b60ff1984168752821515830287019450610a9e565b5f888152602090205f5b84811015610a9657815489820152600190910190602001610a7a565b505082870194505b50929695505050505050565b80820180821115610317576103176109e756fea2646970667358221220f4620711d0f8649f80fed98a6eb335b7806c86e0ebaba0b9fa57daf20d6ed2f364736f6c634300081a00336080604052348015600e575f80fd5b50604051610521380380610521833981016040819052602b91607b565b5f80546001600160a01b039485166001600160a01b031991821617909155600180549390941692169190911790915560025560af565b80516001600160a01b03811681146076575f80fd5b919050565b5f805f60608486031215608c575f80fd5b6093846061565b9250609f602085016061565b9150604084015190509250925092565b610465806100bc5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c806358dbbe811461005957806391b7f5ed14610089578063a035b1fe1461009e578063d004f0f7146100b5578063f5992699146100c8575b5f80fd5b60015461006c906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009c6100973660046103c4565b6100da565b005b6100a760025481565b604051908152602001610080565b61009c6100c33660046103db565b610115565b5f5461006c906001600160a01b031681565b60028190556040518181527ff347ee99503bf19c028bd6b18f3c676e82a9bb5b2bb5225aebe0fd62fd6a0d199060200160405180910390a150565b5f805481906001600160a01b039081169085160361015257506001546002546001600160a01b039091169061014b90849061037e565b91506101c2565b6001546001600160a01b039081169085160361018557505f546002546001600160a01b039091169061014b908490610399565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b60448201526064015b60405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd906064016020604051808303815f875af1158015610212573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102369190610410565b6102745760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101b9565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0382169063a9059cbb906044016020604051808303815f875af11580156102be573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102e29190610410565b6103205760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101b9565b604080516001600160a01b03808716825283166020820152908101849052606081018390523360808201527fb39c9bc43f811e1a7ce159c5f147458fdb80266bf23c17322013316e27e086d09060a00160405180910390a150505050565b5f6103928383670de0b6b3a76400006103a9565b9392505050565b5f61039283670de0b6b3a7640000845b5f825f1904841183021582026103bd575f80fd5b5091020490565b5f602082840312156103d4575f80fd5b5035919050565b5f80604083850312156103ec575f80fd5b82356001600160a01b0381168114610402575f80fd5b946020939093013593505050565b5f60208284031215610420575f80fd5b81518015158114610392575f80fdfea264697066735822122071f33bd4e906706fab2f1d579ad88e83e4a15cb735911cd69a3275ede2ed3ced64736f6c634300081a0033","sourceMap":"936:5329:53:-:0;;;1756:794;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1843:3;1827:20;;;;;:::i;:::-;508:25:57;;;496:2;481:18;1827:20:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1813:34:53;;;;;1866:40;;;;;:::i;:::-;-1:-1:-1;;;;;728:32:57;;;710:51;;698:2;683:18;1866:40:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1857:49:53;;;1946:11;;1929:29;;;;;:::i;:::-;-1:-1:-1;;;;;728:32:57;;;710:51;;698:2;683:18;1929:29:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1916:42:53;;;1978:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1968:23:53;;;2014:37;;2048:2;;2014:37;;;:::i;:::-;1110:2:57;1092:21;;;1149:1;1129:18;;;1122:29;-1:-1:-1;;;1182:3:57;1167:19;;1160:40;1238:3;1231:4;1216:20;;1209:33;;;1279:1;1258:19;;;1251:30;-1:-1:-1;;;1312:3:57;1297:19;;1290:33;1407:4;1395:17;;;-1:-1:-1;1375:18:57;;1368:45;1355:3;1340:19;2014:37:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2002:49:53;;;2073:37;;2107:2;;2073:37;;;:::i;:::-;1762:2:57;1744:21;;;1801:1;1781:18;;;1774:29;-1:-1:-1;;;1834:3:57;1819:19;;1812:40;1890:3;1883:4;1868:20;;1861:33;;;1931:1;1910:19;;;1903:30;-1:-1:-1;;;1964:3:57;1949:19;;1942:33;2059:4;2047:17;;;-1:-1:-1;2027:18:57;;2020:45;2007:3;1992:19;2073:37:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2061:49:53;;;;;;;2125:9;;:21;;;;2121:99;;;2188:9;;;2199;;;-1:-1:-1;;;;;2162:47:53;;;;;;;;;;2121:99;2263:9;;2283;;2295:12;2236:72;;;;;:::i;:::-;-1:-1:-1;;;;;2296:32:57;;;2278:51;;2365:32;;;;2360:2;2345:18;;2338:60;2429:2;2414:18;;2407:34;2266:2;2251:18;2236:72:53;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2230:78:53;;;;;2327:9;;:51;;-1:-1:-1;;;2327:51:53;;2350:4;2327:51;;;2653::57;2357:20:53;2720:18:57;;;2713:34;2327:14:53;;;;;2626:18:57;;2327:51:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2319:107;;;;-1:-1:-1;;;2319:107:53;;3242:2:57;2319:107:53;;;3224:21:57;3281:2;3261:18;;;3254:30;3320:34;3300:18;;;3293:62;-1:-1:-1;;;3371:18:57;;;3364:41;3422:19;;2319:107:53;;;;;;;;;2444:9;;:51;;-1:-1:-1;;;2444:51:53;;2467:4;2444:51;;;2653::57;2474:20:53;2720:18:57;;;2713:34;-1:-1:-1;;;;;2444:14:53;;;;;;2626:18:57;;2444:51:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2436:107;;;;-1:-1:-1;;;2436:107:53;;3654:2:57;2436:107:53;;;3636:21:57;3693:2;3673:18;;;3666:30;3732:34;3712:18;;;3705:62;-1:-1:-1;;;3783:18:57;;;3776:41;3834:19;;2436:107:53;3452:407:57;2436:107:53;1756:794;;936:5329;;;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;:::-;;;;;;;;:::o;14:343:57:-;93:6;101;154:2;142:9;133:7;129:23;125:32;122:52;;;170:1;167;160:12;122:52;-1:-1:-1;;215:16:57;;321:2;306:18;;;300:25;215:16;;300:25;;-1:-1:-1;14:343:57:o;2758:277::-;2825:6;2878:2;2866:9;2857:7;2853:23;2849:32;2846:52;;;2894:1;2891;2884:12;2846:52;2926:9;2920:16;2979:5;2972:13;2965:21;2958:5;2955:32;2945:60;;3001:1;2998;2991:12;2945:60;3024:5;2758:277;-1:-1:-1;;;2758:277:57:o;3452:407::-;936:5329:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b50600436106100b1575f3560e01c806357eb1da71161006e57806357eb1da7146101f05780636af577411461022657806391b7f5ed1461023957806396f5e27c1461024c578063b0f479a11461025f578063c7b8e15d14610285575f80fd5b806301480703146100b557806306ba06fa1461014f57806314ee367714610164578063182148ef146101775780632ba31c53146101f0578063542524dd14610206575b5f80fd5b6100bd61028d565b604080518251600290810b82526020808501516001600160a01b03908116828501528585015181168486015260608087015181860152608080880151805184168288015293840151831660a0808801919091529684015162ffffff1660c08701529083015190930b60e08501529101518116610100830152919092015116610120820152610140015b60405180910390f35b61016261015d3660046112ec565b610561565b005b61016261017236600461132b565b6109d5565b5f54600154600280546101b0936001600160a01b03908116938082169362ffffff600160a01b83041693600160b81b909204900b911685565b604080516001600160a01b039687168152948616602086015262ffffff9093169284019290925260020b606083015291909116608082015260a001610146565b6101f8600681565b604051908152602001610146565b61020e610fb7565b6040516001600160a01b039091168152602001610146565b61016261023436600461137a565b610fd9565b61016261024736600461132b565b611144565b61016261025a366004611476565b6111b5565b7f000000000000000000000000000000000000000000000000000000000000000061020e565b61020e61122e565b6040805160c0810182525f80825260208083018290528284018290526060808401839052845160a080820187528482529281018490528086018490529081018390526080808201849052840152820181905291516332c961d960e01b815290919081906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063e631bcbf907f00000000000000000000000000000000000000000000000000000000000000009083906332c961d9906103599087906004016114e5565b602060405180830381865afa158015610374573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061039891906114f9565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401608060405180830381865afa1580156103df573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104039190611510565b5050915091506040518060c001604052808260020b8152602001836001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031681526020017f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104b7573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104db91906114f9565b81526040805160a0810182525f546001600160a01b03908116825260015480821660208481019190915262ffffff600160a01b83041684860152600160b81b909104600290810b606085015254821660808401528401919091527f0000000000000000000000000000000000000000000000000000000000000000169101529392505050565b5f831315610722576040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af11580156105d3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f7919061156c565b6106485760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637930206661696c6564000000000000000060448201526064015b60405180910390fd5b6040516340c10f1960e01b8152306004820152602481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906340c10f19906044016020604051808303815f875af11580156106b2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d6919061156c565b6107225760405162461bcd60e51b815260206004820152601860248201527f4d696e74696e672063757272656e637931206661696c65640000000000000000604482015260640161063f565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af11580156107ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107d2919061156c565b61081e5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637930206661696c6564000000604482015260640161063f565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af11580156108aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ce919061156c565b61091a5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637931206661696c6564000000604482015260640161063f565b60408051608081018252600284810b825283900b60208201528082018590525f606082018190529151632d35e7ed60e11b815290916001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691635a6bcfda9161098e91859060040161158b565b6020604051808303815f875af11580156109aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109ce91906114f9565b5050505050565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610a61573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a85919061156c565b610ad15760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637930206661696c6564000000604482015260640161063f565b60405163095ea7b360e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301525f1960248301527f0000000000000000000000000000000000000000000000000000000000000000169063095ea7b3906044016020604051808303815f875af1158015610b5d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b81919061156c565b610bcd5760405162461bcd60e51b815260206004820152601d60248201527f417070726f76616c20666f722063757272656e637931206661696c6564000000604482015260640161063f565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e631bcbf7f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166332c961d95f6040518263ffffffff1660e01b8152600401610c6a91906114e5565b602060405180830381865afa158015610c85573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca991906114f9565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401608060405180830381865afa158015610cf0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d149190611510565b50505090505f610d4e826001600160a01b0316670de0b6b3a7640000610d3a91906115f0565b836001600160a01b0316600160c01b61123e565b90505f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a035b1fe6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dad573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dd191906114f9565b905080821115610ebd5760408051606081018252600180825260208201879052915f91908101610e076401000276a36001611626565b6001600160a01b039081169091526040805180820182525f80825260208201819052915163088a742d60e21b8152939450927f000000000000000000000000000000000000000000000000000000000000000090921691632229d0b491610e749186908690600401611645565b6020604051808303815f875af1158015610e90573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb491906114f9565b50505050610fb1565b80821015610fb157604080516060810182525f80825260208201879052918291908101610eff600173fffd8963efd1fc6a506488495d951d5263988d26611607565b6001600160a01b039081169091526040805180820182525f80825260208201819052915163088a742d60e21b8152939450927f000000000000000000000000000000000000000000000000000000000000000090921691632229d0b491610f6c9186908690600401611645565b6020604051808303815f875af1158015610f88573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fac91906114f9565b505050505b50505050565b610fd6600173fffd8963efd1fc6a506488495d951d5263988d26611607565b81565b6040805160a0810182527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b039081168083527f000000000000000000000000000000000000000000000000000000000000000082166020840181905262ffffff8a811685870181905260028b810b60608801528a861660809097018790525f80546001600160a01b03199081169096178155600180546001600160b81b031916909517600160a01b9093029290921762ffffff60b81b1916600160b81b938d16939093029290921790925580549092169093179055915163695c5bf560e01b81527f00000000000000000000000000000000000000000000000000000000000000009092169163695c5bf5916110fc91869086906004016116a5565b6020604051808303815f875af1158015611118573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113c91906116fa565b505050505050565b6040516391b7f5ed60e01b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906391b7f5ed906024015f604051808303815f87803b1580156111a3575f80fd5b505af11580156109ce573d5f803e3d5ffd5b60405163d004f0f760e01b81526001600160a01b038381166004830152602482018390527f0000000000000000000000000000000000000000000000000000000000000000169063d004f0f7906044015f604051808303815f87803b15801561121c575f80fd5b505af115801561113c573d5f803e3d5ffd5b610fd66401000276a36001611626565b5f838302815f198587098281108382030391505080841161125d575f80fd5b805f0361126f575082900490506112d4565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150505b9392505050565b8060020b81146112e9575f80fd5b50565b5f805f606084860312156112fe575f80fd5b833592506020840135611310816112db565b91506040840135611320816112db565b809150509250925092565b5f6020828403121561133b575f80fd5b5035919050565b62ffffff811681146112e9575f80fd5b6001600160a01b03811681146112e9575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f805f805f60a0868803121561138e575f80fd5b853561139981611342565b945060208601356113a9816112db565b935060408601356113b981611352565b925060608601356113c981611352565b9150608086013567ffffffffffffffff8111156113e4575f80fd5b8601601f810188136113f4575f80fd5b803567ffffffffffffffff81111561140e5761140e611366565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561143d5761143d611366565b6040528181528282016020018a1015611454575f80fd5b816020840160208301375f602083830101528093505050509295509295909350565b5f8060408385031215611487575f80fd5b823561149281611352565b946020939093013593505050565b80546001600160a01b0390811683526001820154808216602085015260a081901c62ffffff16604085015260b81c600290810b60608501529091015416608090910152565b60a081016114f382846114a0565b92915050565b5f60208284031215611509575f80fd5b5051919050565b5f805f8060808587031215611523575f80fd5b845161152e81611352565b602086015190945061153f816112db565b604086015190935061155081611342565b606086015190925061156181611342565b939692955090935050565b5f6020828403121561157c575f80fd5b815180151581146112d4575f80fd5b61159581846114a0565b8151600290810b60a08301526020830151900b60c0820152604082015160e082015260609091015161010082015261014061012082018190525f9082015261016001919050565b634e487b7160e01b5f52601160045260245ffd5b80820281158282048414176114f3576114f36115dc565b6001600160a01b0382811682821603908111156114f3576114f36115dc565b6001600160a01b0381811683821601908111156114f3576114f36115dc565b61164f81856114a0565b8251151560a082015260208084015160c08301526040909301516001600160a01b031660e082015281511515610100820152910151151561012082015261016061014082018190525f9082015261018001919050565b6116af81856114a0565b60018060a01b03831660a082015260e060c08201525f82518060e0840152806020850161010085015e5f6101008285010152610100601f19601f830116840101915050949350505050565b5f6020828403121561170a575f80fd5b81516112d4816112db56fea26469706673582212202f1e8b55b9f8b43644f835f5d44698c0c0e32271998428e356f0147397e5da4c64736f6c634300081a0033","sourceMap":"936:5329:53:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2654:422;;;:::i;:::-;;;;352:13:57;;349:1;338:28;;;320:47;;427:4;415:17;;;409:24;-1:-1:-1;;;;;405:50:57;;;383:20;;;376:80;504:17;;;498:24;494:50;;472:20;;;465:80;601:4;589:17;;;583:24;561:20;;;554:54;655:4;643:17;;;637:24;703:19;;699:45;;677:20;;;670:75;792:23;;;786:30;782:56;;443:3;761:19;;;754:85;;;;886:23;;;880:30;912:8;876:45;870:3;855:19;;848:74;979:23;;;973:30;959:45;;;953:3;938:19;;931:74;1052:23;;1046:30;1042:56;;1036:3;1021:19;;1014:85;1136:16;;;;1130:23;80:31;1212:6;1197:22;;68:44;307:3;292:19;2654:422:53;;;;;;;;5409:854;;;;;;:::i;:::-;;:::i;:::-;;3275:1674;;;;;;:::i;:::-;;:::i;1230:22::-;;;;;;;;;;-1:-1:-1;;;;;1230:22:53;;;;;;;;;-1:-1:-1;;;1230:22:53;;;;-1:-1:-1;;;1230:22:53;;;;;;;;;;;;;-1:-1:-1;;;;;2434:32:57;;;2416:51;;2503:32;;;2498:2;2483:18;;2476:60;2584:8;2572:21;;;2552:18;;;2545:49;;;;2641:1;2630:21;2625:2;2610:18;;2603:49;2689:32;;;;2683:3;2668:19;;2661:61;2403:3;2388:19;1230:22:53;2088:640:57;1523:44:53;;1566:1;1523:44;;;;;2879:25:57;;;2867:2;2852:18;1523:44:53;2733:177:57;1385:69:53;;;:::i;:::-;;;-1:-1:-1;;;;;3079:32:57;;;3061:51;;3049:2;3034:18;1385:69:53;2915:203:57;4955:448:53;;;;;;:::i;:::-;;:::i;3082:76::-;;;;;;:::i;:::-;;:::i;3164:105::-;;;;;;:::i;:::-;;:::i;2556:92::-;2634:6;2556:92;;1310:69;;;:::i;2654:422::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2796:21:53;;-1:-1:-1;;;2796:21:53;;-1:-1:-1;;;;;;;;;;2766:7:53;:16;;;;2783:11;;2766:16;;2796:12;;:21;;-1:-1:-1;;2796:21:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2766:52;;-1:-1:-1;;;;;;2766:52:53;;;;;;;-1:-1:-1;;;;;7334:32:57;;;2766:52:53;;;7316:51:57;7383:18;;;7376:34;7289:18;;2766:52:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2727:91;;;;;;2836:233;;;;;;;;2870:4;2836:233;;;;;;2902:12;-1:-1:-1;;;;;2836:233:53;;;;;2945:11;-1:-1:-1;;;;;2836:233:53;;;;;2981:3;-1:-1:-1;;;;;2981:9:53;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2836:233;;;;;;;;;;3012:7;2836:233;-1:-1:-1;;;;;2836:233:53;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2836:233:53;;;;;;;-1:-1:-1;;;2836:233:53;;;;;;;;;;;;;;;;;;;;;;;;3050:7;2836:233;;;;2829:240;2654:422;-1:-1:-1;;;2654:422:53:o;5409:854::-;5526:1;5509:14;:18;5505:245;;;5551:54;;-1:-1:-1;;;5551:54:53;;5574:4;5551:54;;;7316:51:57;7383:18;;;7376:34;;;5551:9:53;-1:-1:-1;;;;;5551:14:53;;;;7289:18:57;;5551:54:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5543:91;;;;-1:-1:-1;;;5543:91:53;;9032:2:57;5543:91:53;;;9014:21:57;9071:2;9051:18;;;9044:30;9110:26;9090:18;;;9083:54;9154:18;;5543:91:53;;;;;;;;;5656:54;;-1:-1:-1;;;5656:54:53;;5679:4;5656:54;;;7316:51:57;7383:18;;;7376:34;;;5656:9:53;-1:-1:-1;;;;;5656:14:53;;;;7289:18:57;;5656:54:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5648:91;;;;-1:-1:-1;;;5648:91:53;;9385:2:57;5648:91:53;;;9367:21:57;9424:2;9404:18;;;9397:30;9463:26;9443:18;;;9436:54;9507:18;;5648:91:53;9183:348:57;5648:91:53;5768:53;;-1:-1:-1;;;5768:53:53;;-1:-1:-1;;;;;5794:6:53;7334:32:57;;5768:53:53;;;7316:51:57;-1:-1:-1;;7383:18:57;;;7376:34;5768:9:53;:17;;;;7289:18:57;;5768:53:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5760:95;;;;-1:-1:-1;;;5760:95:53;;9738:2:57;5760:95:53;;;9720:21:57;9777:2;9757:18;;;9750:30;9816:31;9796:18;;;9789:59;9865:18;;5760:95:53;9536:353:57;5760:95:53;5873:53;;-1:-1:-1;;;5873:53:53;;-1:-1:-1;;;;;5899:6:53;7334:32:57;;5873:53:53;;;7316:51:57;-1:-1:-1;;7383:18:57;;;7376:34;5873:9:53;:17;;;;7289:18:57;;5873:53:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5865:95;;;;-1:-1:-1;;;5865:95:53;;10096:2:57;5865:95:53;;;10078:21:57;10135:2;10115:18;;;10108:30;10174:31;10154:18;;;10147:59;10223:18;;5865:95:53;9894:353:57;5865:95:53;6022:180;;;;;;;;;;;;;;;;;;;;;;;;;;;5971:48;6022:180;;;;;;6213:43;;-1:-1:-1;;;6213:43:53;;6022:180;;-1:-1:-1;;;;;6213:6:53;:22;;;;:43;;6022:180;;6213:43;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5495:768;5409:854;;;:::o;3275:1674::-;3337:57;;-1:-1:-1;;;3337:57:53;;-1:-1:-1;;;;;3363:10:53;7334:32:57;;3337:57:53;;;7316:51:57;-1:-1:-1;;7383:18:57;;;7376:34;3337:9:53;:17;;;;7289:18:57;;3337:57:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3329:99;;;;-1:-1:-1;;;3329:99:53;;9738:2:57;3329:99:53;;;9720:21:57;9777:2;9757:18;;;9750:30;9816:31;9796:18;;;9789:59;9865:18;;3329:99:53;9536:353:57;3329:99:53;3446:57;;-1:-1:-1;;;3446:57:53;;-1:-1:-1;;;;;3472:10:53;7334:32:57;;3446:57:53;;;7316:51:57;-1:-1:-1;;7383:18:57;;;7376:34;3446:9:53;:17;;;;7289:18:57;;3446:57:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3438:99;;;;-1:-1:-1;;;3438:99:53;;10096:2:57;3438:99:53;;;10078:21:57;10135:2;10115:18;;;10108:30;10174:31;10154:18;;;10147:59;10223:18;;3438:99:53;9894:353:57;3438:99:53;3549:20;3576:7;-1:-1:-1;;;;;3576:16:53;;3593:11;3606:7;-1:-1:-1;;;;;3606:12:53;;3619:7;3606:21;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3576:52;;-1:-1:-1;;;;;;3576:52:53;;;;;;;-1:-1:-1;;;;;7334:32:57;;;3576:52:53;;;7316:51:57;7383:18;;;7376:34;7289:18;;3576:52:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3548:80;;;;;3647:20;3670:80;3694:12;-1:-1:-1;;;;;3686:21:53;3710:6;3686:30;;;;:::i;:::-;3726:12;-1:-1:-1;;;;;3718:21:53;-1:-1:-1;;;3670:15:53;:80::i;:::-;3647:103;;3760:16;3779:3;-1:-1:-1;;;;;3779:9:53;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3760:30;;3820:8;3805:12;:23;3801:1142;;;3921:222;;;;;;;;3862:4;3921:222;;;;;;;;;3862:4;3844:15;;3921:222;;;1352:27;1586:10:40;1378:1:53;1352:27;:::i;:::-;-1:-1:-1;;;;;3921:222:53;;;;;;4222:70;;;;;;;;4158:45;4222:70;;;;;;;;;4307:50;;-1:-1:-1;;;4307:50:53;;3881:262;;-1:-1:-1;4222:70:53;4307:10;:15;;;;;;:50;;3881:262;;4222:70;;4307:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3830:539;;;3801:1142;;;4394:8;4379:12;:23;4375:568;;;4496:222;;;;;;;;4418:15;4496:222;;;;;;;;;4418:15;;;4496:222;;;1427:27;1453:1;1766:49:40;1427:27:53;:::i;:::-;-1:-1:-1;;;;;4496:222:53;;;;;;4797:70;;;;;;;;4733:45;4797:70;;;;;;;;;4882:50;;-1:-1:-1;;;4882:50:53;;4456:262;;-1:-1:-1;4797:70:53;4882:10;:15;;;;;;:50;;4456:262;;4797:70;;4882:50;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4404:539;;;4375:568;3319:1630;;;3275:1674;:::o;1385:69::-;1427:27;1453:1;1766:49:40;1427:27:53;:::i;:::-;1385:69;:::o;4955:448::-;5105:225;;;;;;;;5160:9;-1:-1:-1;;;;;5105:225:53;;;;;;5218:9;5105:225;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5095:235:53;;-1:-1:-1;;;;;;5095:235:53;;;;;;;;-1:-1:-1;5095:235:53;;-1:-1:-1;;;;;;5095:235:53;;;;-1:-1:-1;;;5095:235:53;;;;;;;-1:-1:-1;;;;5095:235:53;-1:-1:-1;;;5095:235:53;;;;;;;;;;;;;;;;;;;;;;;;5341:55;;-1:-1:-1;;;5341:55:53;;:11;:22;;;;;;:55;;5373:12;;5387:8;;5341:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4955:448;;;;;:::o;3082:76::-;3132:19;;-1:-1:-1;;;3132:19:53;;;;;2879:25:57;;;3132:3:53;-1:-1:-1;;;;;3132:12:53;;;;2852:18:57;;3132:19:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3164:105;3235:27;;-1:-1:-1;;;3235:27:53;;-1:-1:-1;;;;;7334:32:57;;;3235:27:53;;;7316:51:57;7383:18;;;7376:34;;;3235:3:53;:8;;;;7289:18:57;;3235:27:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1310:69;1352:27;1586:10:40;1378:1:53;1352:27;:::i;741:4141:25:-;823:14;1212:5;;;823:14;-1:-1:-1;;1216:1:25;1212;1400:20;1473:5;1469:2;1466:13;1458:5;1454:2;1450:14;1446:34;1437:43;;;1633:5;1619:11;:19;1611:28;;;;;;1720:5;1729:1;1720:10;1716:177;;-1:-1:-1;1807:23:25;;;;-1:-1:-1;1865:13:25;;1716:177;2193:17;2293:11;2290:1;2287;2280:25;2701:12;2717:15;;;2716:31;;2869:22;;;;;3776:1;3757;:15;;3756:21;;4019:17;;;4015:21;;4008:28;4081:17;;;4077:21;;4070:28;4144:17;;;4140:21;;4133:28;4207:17;;;4203:21;;4196:28;4270:17;;;4266:21;;4259:28;4334:17;;;4330:21;;;4323:28;3313:12;;;;3309:23;;;3334:1;3305:31;2454:20;;;2443:32;;;3372:12;;;;2501:21;;;;3029:16;;;;3363:21;;;;4827:11;;;;;-1:-1:-1;;741:4141:25;;;;;;:::o;1231:118:57:-;1318:5;1315:1;1304:20;1297:5;1294:31;1284:59;;1339:1;1336;1329:12;1284:59;1231:118;:::o;1354:499::-;1426:6;1434;1442;1495:2;1483:9;1474:7;1470:23;1466:32;1463:52;;;1511:1;1508;1501:12;1463:52;1556:23;;;-1:-1:-1;1655:2:57;1640:18;;1627:32;1668:31;1627:32;1668:31;:::i;:::-;1718:7;-1:-1:-1;1777:2:57;1762:18;;1749:32;1790:31;1749:32;1790:31;:::i;:::-;1840:7;1830:17;;;1354:499;;;;;:::o;1858:225::-;1916:6;1969:2;1957:9;1948:7;1944:23;1940:32;1937:52;;;1985:1;1982;1975:12;1937:52;-1:-1:-1;2030:23:57;;1858:225;-1:-1:-1;1858:225:57:o;3305:119::-;3390:8;3383:5;3379:20;3372:5;3369:31;3359:59;;3414:1;3411;3404:12;3429:139;-1:-1:-1;;;;;3512:31:57;;3502:42;;3492:70;;3558:1;3555;3548:12;3573:127;3634:10;3629:3;3625:20;3622:1;3615:31;3665:4;3662:1;3655:15;3689:4;3686:1;3679:15;3705:1529;3821:6;3829;3837;3845;3853;3906:3;3894:9;3885:7;3881:23;3877:33;3874:53;;;3923:1;3920;3913:12;3874:53;3962:9;3949:23;3981:30;4005:5;3981:30;:::i;:::-;4030:5;-1:-1:-1;4087:2:57;4072:18;;4059:32;4100:31;4059:32;4100:31;:::i;:::-;4150:7;-1:-1:-1;4209:2:57;4194:18;;4181:32;4222:41;4181:32;4222:41;:::i;:::-;4282:7;-1:-1:-1;4341:2:57;4326:18;;4313:32;4354:41;4313:32;4354:41;:::i;:::-;4414:7;-1:-1:-1;4472:3:57;4457:19;;4444:33;4500:18;4489:30;;4486:50;;;4532:1;4529;4522:12;4486:50;4555:22;;4608:4;4600:13;;4596:27;-1:-1:-1;4586:55:57;;4637:1;4634;4627:12;4586:55;4677:2;4664:16;4703:18;4695:6;4692:30;4689:56;;;4725:18;;:::i;:::-;4774:2;4768:9;4866:2;4828:17;;-1:-1:-1;;4824:31:57;;;4857:2;4820:40;4816:54;4804:67;;4901:18;4886:34;;4922:22;;;4883:62;4880:88;;;4948:18;;:::i;:::-;4984:2;4977:22;5008;;;5049:15;;;5066:2;5045:24;5042:37;-1:-1:-1;5039:57:57;;;5092:1;5089;5082:12;5039:57;5148:6;5143:2;5139;5135:11;5130:2;5122:6;5118:15;5105:50;5201:1;5196:2;5187:6;5179;5175:19;5171:28;5164:39;5222:6;5212:16;;;;;3705:1529;;;;;;;;:::o;5470:375::-;5538:6;5546;5599:2;5587:9;5578:7;5574:23;5570:32;5567:52;;;5615:1;5612;5605:12;5567:52;5654:9;5641:23;5673:39;5706:5;5673:39;:::i;:::-;5731:5;5809:2;5794:18;;;;5781:32;;-1:-1:-1;;;5470:375:57:o;6058:555::-;6143:12;;-1:-1:-1;;;;;6139:38:57;;;6127:51;;6174:1;6210:16;;6204:23;6259:35;;;6252:4;6243:14;;6236:59;6165:3;6331:19;;;6352:8;6327:34;6320:4;6311:14;;6304:58;6412:3;6408:19;6405:1;6394:34;;;6387:4;6378:14;;6371:58;6454:13;;;6448:20;6513:28;6566:4;6557:14;;;6550:57;6058:555::o;6618:254::-;6801:3;6786:19;;6814:52;6790:9;6848:6;6814:52;:::i;:::-;6618:254;;;;:::o;6877:212::-;6975:6;7028:2;7016:9;7007:7;7003:23;6999:32;6996:52;;;7044:1;7041;7034:12;6996:52;-1:-1:-1;7067:16:57;;6877:212;-1:-1:-1;6877:212:57:o;7421:654::-;7514:6;7522;7530;7538;7591:3;7579:9;7570:7;7566:23;7562:33;7559:53;;;7608:1;7605;7598:12;7559:53;7640:9;7634:16;7659:39;7692:5;7659:39;:::i;:::-;7767:2;7752:18;;7746:25;7717:5;;-1:-1:-1;7780:31:57;7746:25;7780:31;:::i;:::-;7882:2;7867:18;;7861:25;7830:7;;-1:-1:-1;7895:32:57;7861:25;7895:32;:::i;:::-;7998:2;7983:18;;7977:25;7946:7;;-1:-1:-1;8011:32:57;7977:25;8011:32;:::i;:::-;7421:654;;;;-1:-1:-1;7421:654:57;;-1:-1:-1;;7421:654:57:o;8548:277::-;8615:6;8668:2;8656:9;8647:7;8643:23;8639:32;8636:52;;;8684:1;8681;8674:12;8636:52;8716:9;8710:16;8769:5;8762:13;8755:21;8748:5;8745:32;8735:60;;8791:1;8788;8781:12;10252:807;10618:52;10660:9;10652:6;10618:52;:::i;:::-;10721:13;;10718:1;10707:28;;;10701:3;10686:19;;10679:57;10805:4;10793:17;;10787:24;10773:39;;10767:3;10752:19;;10745:68;10868:4;10856:17;;10850:24;10844:3;10829:19;;10822:53;10930:4;10918:17;;;10912:24;10906:3;10891:19;;10884:53;10974:3;10968;10953:19;;10946:32;;;-1:-1:-1;10994:19:57;;;10987:30;11049:3;11034:19;;10252:807;-1:-1:-1;10252:807:57:o;11287:127::-;11348:10;11343:3;11339:20;11336:1;11329:31;11379:4;11376:1;11369:15;11403:4;11400:1;11393:15;11419:168;11492:9;;;11523;;11540:15;;;11534:22;;11520:37;11510:71;;11561:18;;:::i;11592:198::-;-1:-1:-1;;;;;11692:27:57;;;11663;;;11659:61;;11732:29;;11729:55;;;11764:18;;:::i;11795:195::-;-1:-1:-1;;;;;11864:27:57;;;11893;;;11860:61;;11933:28;;11930:54;;;11964:18;;:::i;11995:970::-;12429:52;12471:9;12463:6;12429:52;:::i;:::-;12532:13;;12525:21;12518:29;12512:3;12497:19;;12490:58;12603:4;12591:17;;;12585:24;12579:3;12564:19;;12557:53;12669:4;12657:17;;;12651:24;-1:-1:-1;;;;;12647:50:57;12641:3;12626:19;;12619:79;12749:13;;12742:21;12735:29;12729:3;12714:19;;12707:58;12822:17;;12816:24;12809:32;12802:40;12796:3;12781:19;;12774:69;12880:3;12874;12859:19;;12852:32;;;-1:-1:-1;12900:19:57;;;12893:30;12955:3;12940:19;;11995:970;-1:-1:-1;11995:970:57:o;12970:669::-;13204:52;13246:9;13238:6;13204:52;:::i;:::-;13322:1;13318;13313:3;13309:11;13305:19;13297:6;13293:32;13287:3;13276:9;13272:19;13265:61;13363:3;13357;13346:9;13342:19;13335:32;13185:4;13396:6;13390:13;13440:6;13434:3;13423:9;13419:19;13412:35;13502:6;13495:4;13487:6;13483:17;13477:3;13466:9;13462:19;13456:53;13559:1;13553:3;13544:6;13533:9;13529:22;13525:32;13518:43;13629:3;13622:2;13618:7;13613:2;13605:6;13601:15;13597:29;13586:9;13582:45;13578:55;13570:63;;;12970:669;;;;;;:::o;13644:247::-;13712:6;13765:2;13753:9;13744:7;13740:23;13736:32;13733:52;;;13781:1;13778;13771:12;13733:52;13813:9;13807:16;13832:29;13855:5;13832:29;:::i","linkReferences":{},"immutableReferences":{"11597":[{"start":803,"length":32},{"start":1070,"length":32},{"start":3071,"length":32},{"start":4291,"length":32}],"11600":[{"start":609,"length":32},{"start":1849,"length":32},{"start":2101,"length":32},{"start":2393,"length":32}],"11603":[{"start":2540,"length":32},{"start":2792,"length":32},{"start":3643,"length":32},{"start":3891,"length":32}],"11606":[{"start":1117,"length":32},{"start":3411,"length":32},{"start":4442,"length":32},{"start":4571,"length":32}],"11609":[{"start":762,"length":32},{"start":1335,"length":32},{"start":3024,"length":32},{"start":3104,"length":32}],"11612":[{"start":1413,"length":32},{"start":1896,"length":32},{"start":2587,"length":32},{"start":4069,"length":32}],"11615":[{"start":1636,"length":32},{"start":2148,"length":32},{"start":2839,"length":32},{"start":4116,"length":32}]}},"methodIdentifiers":{"MAX_PRICE_LIMIT()":"542524dd","MIN_PRICE_LIMIT()":"c7b8e15d","POOLS_SLOT()":"57eb1da7","POSITIONS_OFFSET()":"2ba31c53","addLiquidity(int256,int24,int24)":"06ba06fa","constructSignal()":"01480703","equalizePrice(int256)":"14ee3677","getRouter()":"b0f479a1","poolKey()":"182148ef","setPool(uint24,int24,address,uint160,bytes)":"6af57741","setPrice(uint256)":"91b7f5ed","swapOnLex(address,uint256)":"96f5e27c"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"initialPrice\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"MAX_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_PRICE_LIMIT\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"\",\"type\":\"uint160\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POOLS_SLOT\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"POSITIONS_OFFSET\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"addLiquidity\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"constructSignal\",\"outputs\":[{\"components\":[{\"internalType\":\"int24\",\"name\":\"currentTick\",\"type\":\"int24\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"address\",\"name\":\"manager\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lexPrice\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"pool\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"fetcher\",\"type\":\"address\"}],\"internalType\":\"struct ArenaController.Signal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"depth\",\"type\":\"int256\"}],\"name\":\"equalizePrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getRouter\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolKey\",\"outputs\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"poolFee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"setPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swapOnLex\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ArenaController.sol\":\"ArenaController\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/\",\":@openzeppelin/contracts/=lib/v4-core/lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/solmate/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/v4-core/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/src/\",\":v4-core/=lib/v4-core/src/\"]},\"sources\":{\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"lib/v4-core/src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"lib/v4-core/src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"lib/v4-core/src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"lib/v4-core/src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"lib/v4-core/src/NoDelegateCall.sol\":{\"keccak256\":\"0x5c238701785d16c58a1598daec0f72a2aaf47d5d017b9dd7441cc8093b65b202\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://696cf79b74bc38e7316d94dfd8bdd9579a94f74121e9b65d2613eb59c106ea50\",\"dweb:/ipfs/QmRttHmshQJ5E7EGaeBC7yT4wyzthNXZQJn7sy2nJvb4dB\"]},\"lib/v4-core/src/PoolManager.sol\":{\"keccak256\":\"0xca5369a1683d06842268987fb6f46b05e6364a46cc856f72bb5c603826f47eac\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://5ae5893222abc5dc5fa57bc05af40b60a96a1537bd3c1f3845257d6a3c2b5821\",\"dweb:/ipfs/QmZxQH8M3NVunurxDNJ5EZm2fy6Ws8CHJSezCQaoqzMPoq\"]},\"lib/v4-core/src/ProtocolFees.sol\":{\"keccak256\":\"0x2e7533e46dcab5508ed417ab33c2d0ca8c52a6b5f445dd90daf328173ada4449\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8403de6f2c89a665a3ff3566a917179a5bfb3e0ac9514f0438d82270a7f98c91\",\"dweb:/ipfs/QmTq9cjKTaXeCoSfCywpFwo7sNvuXM4wSMnebwX3hBuiRG\"]},\"lib/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"lib/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"lib/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa\",\"dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8\"]},\"lib/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0x4e07d93993f6ba033c8b5e5b0a3473659aeffe9af0cf8316a879a55ebd696d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://50add8378d59b89b1dc106ea248641caaedd3ac45d62754babe55c526b87c9ad\",\"dweb:/ipfs/QmQUrvy8ZDDdTRTr17msqynVECP3rQFBVBUmFcpFvjAmQx\"]},\"lib/v4-core/src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6\",\"dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G\"]},\"lib/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f\",\"dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw\"]},\"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410\",\"dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8\"]},\"lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"lib/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x59e18adcff8917b0965a240d88b34d5d800e0efebd5f40c5594ddcf28a15949b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d358beebf8d5079520b6e138d744e5063ecbfbeae355c08af86a3b74afa71b09\",\"dweb:/ipfs/QmUXmAK9aoxnaeykq8MLXoRKP8yGTDyY3jPFMwHnqRxf46\"]},\"lib/v4-core/src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0xb1eb18c3794b67f4f710229df279d3a630a963194fbbeb51906198ec7145b98e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e5ea08b69754250cf04cc544785320f5c8fd8b9a65e5d9e0bc44aadadaa9ea0c\",\"dweb:/ipfs/QmWW1qfqGydoiSeDtVVQ53nV3FphuUgH1PFUC3uGaWzxWR\"]},\"lib/v4-core/src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7\",\"dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3\"]},\"lib/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x70a444afeb27564398dbdf7553651ee2cae14c03c923b6f8972040c8f460ebe3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d7b05390bac9b29188725c8a84edac43cd05571da27b33a0b1e36d9500ecaa6\",\"dweb:/ipfs/QmdYDLwTfFgePDEwFMUqGTj8SNNXXq4JQJnrgomJgcZFvP\"]},\"lib/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d\",\"dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT\"]},\"lib/v4-core/src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xf0a545fc5bbc271e8dbd191413dc03e8725d1f003df4d9d36ea7cdb73058c417\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5d1013d8b5c93024526f129b0a9271b35c578da09bcfe6c3240ff4d590ebc196\",\"dweb:/ipfs/QmX1GyF9jJhYGXst6PyK6HJvcfVQ69nNTnuBEBaEiAZPv7\"]},\"lib/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"lib/v4-core/src/libraries/Hooks.sol\":{\"keccak256\":\"0xfa031f4efc096e9c93bb094509321e1c08b5eb271f46554f858e74803c43ae66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7cc33d5eb869ecacfb70d024f7b925d191d98553dbb921bd8188f97d51c9e111\",\"dweb:/ipfs/Qme5VCnaS5mXyqaWV5uiW5xcmTb56uCKBPFrLZp2dq41dQ\"]},\"lib/v4-core/src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896\",\"dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo\"]},\"lib/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc\",\"dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa\"]},\"lib/v4-core/src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"lib/v4-core/src/libraries/NonZeroDeltaCount.sol\":{\"keccak256\":\"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2\",\"dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC\"]},\"lib/v4-core/src/libraries/ParseBytes.sol\":{\"keccak256\":\"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8\",\"dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf\"]},\"lib/v4-core/src/libraries/Pool.sol\":{\"keccak256\":\"0x7a506727ae59f5b5487a0a16ec1d7038b7c2a4ee5f4a7fa7c444ec7df6ad5a7c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://befdd15aee06a7b2a3c64cb899220ec03a1ae8470ad17e19050bcca1ac5266a8\",\"dweb:/ipfs/QmWPfBgfp5VKnku9ZtKXwYycyKdAZuCj6778T2HFrfQ61H\"]},\"lib/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce\",\"dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu\"]},\"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0x2739e8f54707c6a0e23f9c61a0783dd18b107c3fc287b2827f1ab4b41f891902\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2e3b154410bbfcbe8808c6dfb74c4bbbac50a59e228cee59b34e169dbd34ee1a\",\"dweb:/ipfs/QmcRoM6T2F7FTHtGdD5aRiVthCon8oiWur661GCrk5FejP\"]},\"lib/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4\",\"dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM\"]},\"lib/v4-core/src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x1a5a8fd4a21cec19c0c253201e9b5534e8d810eb132bceee04af37fd78adb5db\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://afa2a5950c9057fd3c00a6f413fba91c4c7dab06d573f7349aaf8f806c0e1f31\",\"dweb:/ipfs/Qmb2m62xAPRBtxtx3sV7MAFw2vHWNm9m49ctPHmFX5hozt\"]},\"lib/v4-core/src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x67ead4d1ffe7e4fc381cef059c8d4941c7b4d581ef043fc8d3278d0829da414e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d12edd46a3ff2e19ea9b650507ea22e7714daa335a6b40f4d2f6d29c16431e4\",\"dweb:/ipfs/QmZn6dzXZgR3rGohZAvKzqYMgm5n9qTrpi1VhXizYhiquH\"]},\"lib/v4-core/src/libraries/SwapMath.sol\":{\"keccak256\":\"0xa8cedd0f63b2d8b6faac60455f499c79816f53fbd86f3bb0706fae426b2c231e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8d926c2df899b21811862d106d5e1d2b5bdf83c76ae6ff4216e7c9ce443d8e75\",\"dweb:/ipfs/QmTTVSCumUXZ4vf3R1GwfqJSTgLFyjueuxZkRH9U6dsTb3\"]},\"lib/v4-core/src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x23abd96aa808657304affd775666d7cc5fb0ab564f87d1b65fbf8dc5877d9cd6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c7686aefb704a3efe97cc0e8f180ed48f7667f5ae69d3754962f04352c66b79\",\"dweb:/ipfs/QmULiCBW9s2hB6SmnJTi2wiAwgkLXpZJcdVZm9f77zDNuc\"]},\"lib/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x64c668177d82bb185d902fb2190630ccb67babb6439422979692ac2f8dfb6dcd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e2714a025df18c22f20b358b7143e8a5c55cffb20c7de292be0376845a5f0408\",\"dweb:/ipfs/QmWaeCkxwkVuReFUSK2nDat1BB5DJ8BUowwGwmVyKpsrME\"]},\"lib/v4-core/src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x1bc28f30c176c7c598522da0d8907a90c4cd8ecce81775bb4deb3a9b78782f86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5c05fb51e59ef168ba884c4ea3627525dba9feea0de9ffa0587438f70fd095\",\"dweb:/ipfs/Qmbx3ntPDZ9VeGsAnVNSM5DKmhPg92yobh5ZHbvdGWtHUd\"]},\"lib/v4-core/src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xe9b87da934af38419d4b5f20cc09943dbb569425448fc23fdc5ec6aebbb63c84\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://29838c28905c34f9602a453759b55f5acc6aff02bf6d7a6afac5d1a245dd5db3\",\"dweb:/ipfs/QmfN5bhLFw1CsnnaJQNZd3bLpLufQcwt9ztaR71LA43UGY\"]},\"lib/v4-core/src/test/PoolModifyLiquidityTest.sol\":{\"keccak256\":\"0x4578759af55db566eee1d19c19a285710b1d301b511e37df4a1072c2d5a47ade\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aa6588f1f695efe625241fdbad07730611c8bec77d963698c6412775b7dd68a7\",\"dweb:/ipfs/QmeDGAKa9sR6Wk5ibyzt4YGa6tdtjmFPzJafMbBgkWRB9d\"]},\"lib/v4-core/src/test/PoolSwapTest.sol\":{\"keccak256\":\"0x389d2274a70c565c12c8fd7f0f5bdbee7532d842936243141c65cf1477c1a7e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cdaff983aa947444cece280d8485f524a778cf8843c3f8b96f60e4ad137aa8d3\",\"dweb:/ipfs/QmP7qbC3UZz723pTWuJh18qap1vYAHDY5UoJwGtvosWs9k\"]},\"lib/v4-core/src/test/PoolTestBase.sol\":{\"keccak256\":\"0x71db5a5215d858124dd2ccf73c4474421651f248e4c85d33455d95abced0a23c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fac0df901621d44a1b98ce4569616940ca6700e7829357bdf18509237b822072\",\"dweb:/ipfs/Qmf9sWokQvzmKfAY6Vd4QzyTyhikqCb8zUowrFPe9DRxs5\"]},\"lib/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"lib/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"lib/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0xc77e2d4d380be1887078b1d21e2381fe4e9138dce8c7efbf9050aa7d65d75d4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b85a1edba4be624be660d69badac1e3641d83190893839fa30260eef316d00c8\",\"dweb:/ipfs/QmPaEaeNkhy5F4X9dwzyDzVU3H67P5ZhpeijDS7wscaSd9\"]},\"lib/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f\",\"dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB\"]},\"lib/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf\",\"dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY\"]},\"lib/v4-core/src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]},\"lib/v4-core/test/utils/CurrencySettler.sol\":{\"keccak256\":\"0xf5d04aa76b3ac6ff75396661e75ec612035ebd73d23eb6f4e207dbd46392688e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67a67b94a2987309f06003374ddfc30ab8e81d9fec3b1585e93871eec6966d96\",\"dweb:/ipfs/QmYLzboZNfXoNufKX8UYMGhHVChqMK96vwFWjKeoWcfb24\"]},\"src/ArenaController.sol\":{\"keccak256\":\"0x519cc8745a4b9f0086eb9f21ad3b011f77fede5c4060d9b37e198744f1e1bc98\",\"urls\":[\"bzz-raw://1d833362f6560884cbe7165b6c70c3f7557596fd7446b687f4eafe49d8970018\",\"dweb:/ipfs/QmaWQ1kL62hT248K2Ze4deDtnQxWoasH2soAnYANV5kgJr\"]},\"src/ArenaToken.sol\":{\"keccak256\":\"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a\",\"urls\":[\"bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105\",\"dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF\"]},\"src/Fetcher.sol\":{\"keccak256\":\"0x1895e5c0688650ca60371f208b62d9f64beea29bd7515b2600a1c8d5c73805df\",\"urls\":[\"bzz-raw://f9c904c9d032167f6d8fec1392c9a023f339a4aee9f75f06df6347a495af9d38\",\"dweb:/ipfs/QmYSaPzRawAnh2qD3JY5uvWypEueo5hSTQVyVFfX96msfb\"]},\"src/LiquidExchange.sol\":{\"keccak256\":\"0xc979e540abc8a2d1bc82f2c741beb4ea9037c7e69ab11a5a20ef11ab7b9cee22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5f08cb7b8685020a78fd9b84d740649dcbf9ba92057cc5914d829f275d396c5\",\"dweb:/ipfs/QmQKVvRCmSumaf2xtbLey6KdUyt9bfTLeq9gPGssisJi17\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"fee","type":"uint256"},{"internalType":"uint256","name":"initialPrice","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_PRICE_LIMIT","outputs":[{"internalType":"uint160","name":"","type":"uint160"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"POOLS_SLOT","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"POSITIONS_OFFSET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"}],"stateMutability":"nonpayable","type":"function","name":"addLiquidity"},{"inputs":[],"stateMutability":"view","type":"function","name":"constructSignal","outputs":[{"internalType":"struct ArenaController.Signal","name":"","type":"tuple","components":[{"internalType":"int24","name":"currentTick","type":"int24"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"lexPrice","type":"uint256"},{"internalType":"struct PoolKey","name":"pool","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"address","name":"fetcher","type":"address"}]}]},{"inputs":[{"internalType":"int256","name":"depth","type":"int256"}],"stateMutability":"nonpayable","type":"function","name":"equalizePrice"},{"inputs":[],"stateMutability":"view","type":"function","name":"getRouter","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"poolKey","outputs":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"inputs":[{"internalType":"uint24","name":"poolFee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setPool"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPrice"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swapOnLex"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/","@openzeppelin/contracts/=lib/v4-core/lib/openzeppelin-contracts/contracts/","ds-test/=lib/solmate/lib/ds-test/src/","erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/v4-core/lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/","solmate/=lib/solmate/src/","v4-core/=lib/v4-core/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ArenaController.sol":"ArenaController"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"lib/v4-core/src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"lib/v4-core/src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"lib/v4-core/src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"lib/v4-core/src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"lib/v4-core/src/NoDelegateCall.sol":{"keccak256":"0x5c238701785d16c58a1598daec0f72a2aaf47d5d017b9dd7441cc8093b65b202","urls":["bzz-raw://696cf79b74bc38e7316d94dfd8bdd9579a94f74121e9b65d2613eb59c106ea50","dweb:/ipfs/QmRttHmshQJ5E7EGaeBC7yT4wyzthNXZQJn7sy2nJvb4dB"],"license":"BUSL-1.1"},"lib/v4-core/src/PoolManager.sol":{"keccak256":"0xca5369a1683d06842268987fb6f46b05e6364a46cc856f72bb5c603826f47eac","urls":["bzz-raw://5ae5893222abc5dc5fa57bc05af40b60a96a1537bd3c1f3845257d6a3c2b5821","dweb:/ipfs/QmZxQH8M3NVunurxDNJ5EZm2fy6Ws8CHJSezCQaoqzMPoq"],"license":"BUSL-1.1"},"lib/v4-core/src/ProtocolFees.sol":{"keccak256":"0x2e7533e46dcab5508ed417ab33c2d0ca8c52a6b5f445dd90daf328173ada4449","urls":["bzz-raw://8403de6f2c89a665a3ff3566a917179a5bfb3e0ac9514f0438d82270a7f98c91","dweb:/ipfs/QmTq9cjKTaXeCoSfCywpFwo7sNvuXM4wSMnebwX3hBuiRG"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"lib/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"lib/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0","urls":["bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa","dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8"],"license":"MIT"},"lib/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0x4e07d93993f6ba033c8b5e5b0a3473659aeffe9af0cf8316a879a55ebd696d7a","urls":["bzz-raw://50add8378d59b89b1dc106ea248641caaedd3ac45d62754babe55c526b87c9ad","dweb:/ipfs/QmQUrvy8ZDDdTRTr17msqynVECP3rQFBVBUmFcpFvjAmQx"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFeeController.sol":{"keccak256":"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c","urls":["bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6","dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297","urls":["bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f","dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw"],"license":"MIT"},"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7","urls":["bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410","dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"lib/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x59e18adcff8917b0965a240d88b34d5d800e0efebd5f40c5594ddcf28a15949b","urls":["bzz-raw://d358beebf8d5079520b6e138d744e5063ecbfbeae355c08af86a3b74afa71b09","dweb:/ipfs/QmUXmAK9aoxnaeykq8MLXoRKP8yGTDyY3jPFMwHnqRxf46"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/CurrencyDelta.sol":{"keccak256":"0xb1eb18c3794b67f4f710229df279d3a630a963194fbbeb51906198ec7145b98e","urls":["bzz-raw://e5ea08b69754250cf04cc544785320f5c8fd8b9a65e5d9e0bc44aadadaa9ea0c","dweb:/ipfs/QmWW1qfqGydoiSeDtVVQ53nV3FphuUgH1PFUC3uGaWzxWR"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CurrencyReserves.sol":{"keccak256":"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6","urls":["bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7","dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x70a444afeb27564398dbdf7553651ee2cae14c03c923b6f8972040c8f460ebe3","urls":["bzz-raw://9d7b05390bac9b29188725c8a84edac43cd05571da27b33a0b1e36d9500ecaa6","dweb:/ipfs/QmdYDLwTfFgePDEwFMUqGTj8SNNXXq4JQJnrgomJgcZFvP"],"license":"MIT"},"lib/v4-core/src/libraries/FixedPoint128.sol":{"keccak256":"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835","urls":["bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d","dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/FixedPoint96.sol":{"keccak256":"0xf0a545fc5bbc271e8dbd191413dc03e8725d1f003df4d9d36ea7cdb73058c417","urls":["bzz-raw://5d1013d8b5c93024526f129b0a9271b35c578da09bcfe6c3240ff4d590ebc196","dweb:/ipfs/QmX1GyF9jJhYGXst6PyK6HJvcfVQ69nNTnuBEBaEiAZPv7"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"lib/v4-core/src/libraries/Hooks.sol":{"keccak256":"0xfa031f4efc096e9c93bb094509321e1c08b5eb271f46554f858e74803c43ae66","urls":["bzz-raw://7cc33d5eb869ecacfb70d024f7b925d191d98553dbb921bd8188f97d51c9e111","dweb:/ipfs/Qme5VCnaS5mXyqaWV5uiW5xcmTb56uCKBPFrLZp2dq41dQ"],"license":"MIT"},"lib/v4-core/src/libraries/LPFeeLibrary.sol":{"keccak256":"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece","urls":["bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896","dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/LiquidityMath.sol":{"keccak256":"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf","urls":["bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc","dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/NonZeroDeltaCount.sol":{"keccak256":"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586","urls":["bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2","dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ParseBytes.sol":{"keccak256":"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579","urls":["bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8","dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/Pool.sol":{"keccak256":"0x7a506727ae59f5b5487a0a16ec1d7038b7c2a4ee5f4a7fa7c444ec7df6ad5a7c","urls":["bzz-raw://befdd15aee06a7b2a3c64cb899220ec03a1ae8470ad17e19050bcca1ac5266a8","dweb:/ipfs/QmWPfBgfp5VKnku9ZtKXwYycyKdAZuCj6778T2HFrfQ61H"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/Position.sol":{"keccak256":"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80","urls":["bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce","dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0x2739e8f54707c6a0e23f9c61a0783dd18b107c3fc287b2827f1ab4b41f891902","urls":["bzz-raw://2e3b154410bbfcbe8808c6dfb74c4bbbac50a59e228cee59b34e169dbd34ee1a","dweb:/ipfs/QmcRoM6T2F7FTHtGdD5aRiVthCon8oiWur661GCrk5FejP"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60","urls":["bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4","dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/SqrtPriceMath.sol":{"keccak256":"0x1a5a8fd4a21cec19c0c253201e9b5534e8d810eb132bceee04af37fd78adb5db","urls":["bzz-raw://afa2a5950c9057fd3c00a6f413fba91c4c7dab06d573f7349aaf8f806c0e1f31","dweb:/ipfs/Qmb2m62xAPRBtxtx3sV7MAFw2vHWNm9m49ctPHmFX5hozt"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/StateLibrary.sol":{"keccak256":"0x67ead4d1ffe7e4fc381cef059c8d4941c7b4d581ef043fc8d3278d0829da414e","urls":["bzz-raw://0d12edd46a3ff2e19ea9b650507ea22e7714daa335a6b40f4d2f6d29c16431e4","dweb:/ipfs/QmZn6dzXZgR3rGohZAvKzqYMgm5n9qTrpi1VhXizYhiquH"],"license":"MIT"},"lib/v4-core/src/libraries/SwapMath.sol":{"keccak256":"0xa8cedd0f63b2d8b6faac60455f499c79816f53fbd86f3bb0706fae426b2c231e","urls":["bzz-raw://8d926c2df899b21811862d106d5e1d2b5bdf83c76ae6ff4216e7c9ce443d8e75","dweb:/ipfs/QmTTVSCumUXZ4vf3R1GwfqJSTgLFyjueuxZkRH9U6dsTb3"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/TickBitmap.sol":{"keccak256":"0x23abd96aa808657304affd775666d7cc5fb0ab564f87d1b65fbf8dc5877d9cd6","urls":["bzz-raw://4c7686aefb704a3efe97cc0e8f180ed48f7667f5ae69d3754962f04352c66b79","dweb:/ipfs/QmULiCBW9s2hB6SmnJTi2wiAwgkLXpZJcdVZm9f77zDNuc"],"license":"MIT"},"lib/v4-core/src/libraries/TickMath.sol":{"keccak256":"0x64c668177d82bb185d902fb2190630ccb67babb6439422979692ac2f8dfb6dcd","urls":["bzz-raw://e2714a025df18c22f20b358b7143e8a5c55cffb20c7de292be0376845a5f0408","dweb:/ipfs/QmWaeCkxwkVuReFUSK2nDat1BB5DJ8BUowwGwmVyKpsrME"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/libraries/TransientStateLibrary.sol":{"keccak256":"0x1bc28f30c176c7c598522da0d8907a90c4cd8ecce81775bb4deb3a9b78782f86","urls":["bzz-raw://fb5c05fb51e59ef168ba884c4ea3627525dba9feea0de9ffa0587438f70fd095","dweb:/ipfs/Qmbx3ntPDZ9VeGsAnVNSM5DKmhPg92yobh5ZHbvdGWtHUd"],"license":"MIT"},"lib/v4-core/src/libraries/UnsafeMath.sol":{"keccak256":"0xe9b87da934af38419d4b5f20cc09943dbb569425448fc23fdc5ec6aebbb63c84","urls":["bzz-raw://29838c28905c34f9602a453759b55f5acc6aff02bf6d7a6afac5d1a245dd5db3","dweb:/ipfs/QmfN5bhLFw1CsnnaJQNZd3bLpLufQcwt9ztaR71LA43UGY"],"license":"GPL-2.0-or-later"},"lib/v4-core/src/test/PoolModifyLiquidityTest.sol":{"keccak256":"0x4578759af55db566eee1d19c19a285710b1d301b511e37df4a1072c2d5a47ade","urls":["bzz-raw://aa6588f1f695efe625241fdbad07730611c8bec77d963698c6412775b7dd68a7","dweb:/ipfs/QmeDGAKa9sR6Wk5ibyzt4YGa6tdtjmFPzJafMbBgkWRB9d"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolSwapTest.sol":{"keccak256":"0x389d2274a70c565c12c8fd7f0f5bdbee7532d842936243141c65cf1477c1a7e8","urls":["bzz-raw://cdaff983aa947444cece280d8485f524a778cf8843c3f8b96f60e4ad137aa8d3","dweb:/ipfs/QmP7qbC3UZz723pTWuJh18qap1vYAHDY5UoJwGtvosWs9k"],"license":"UNLICENSED"},"lib/v4-core/src/test/PoolTestBase.sol":{"keccak256":"0x71db5a5215d858124dd2ccf73c4474421651f248e4c85d33455d95abced0a23c","urls":["bzz-raw://fac0df901621d44a1b98ce4569616940ca6700e7829357bdf18509237b822072","dweb:/ipfs/Qmf9sWokQvzmKfAY6Vd4QzyTyhikqCb8zUowrFPe9DRxs5"],"license":"UNLICENSED"},"lib/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"lib/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"lib/v4-core/src/types/Currency.sol":{"keccak256":"0xc77e2d4d380be1887078b1d21e2381fe4e9138dce8c7efbf9050aa7d65d75d4c","urls":["bzz-raw://b85a1edba4be624be660d69badac1e3641d83190893839fa30260eef316d00c8","dweb:/ipfs/QmPaEaeNkhy5F4X9dwzyDzVU3H67P5ZhpeijDS7wscaSd9"],"license":"MIT"},"lib/v4-core/src/types/PoolId.sol":{"keccak256":"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8","urls":["bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f","dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB"],"license":"MIT"},"lib/v4-core/src/types/PoolKey.sol":{"keccak256":"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162","urls":["bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf","dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY"],"license":"MIT"},"lib/v4-core/src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"},"lib/v4-core/test/utils/CurrencySettler.sol":{"keccak256":"0xf5d04aa76b3ac6ff75396661e75ec612035ebd73d23eb6f4e207dbd46392688e","urls":["bzz-raw://67a67b94a2987309f06003374ddfc30ab8e81d9fec3b1585e93871eec6966d96","dweb:/ipfs/QmYLzboZNfXoNufKX8UYMGhHVChqMK96vwFWjKeoWcfb24"],"license":"MIT"},"src/ArenaController.sol":{"keccak256":"0x519cc8745a4b9f0086eb9f21ad3b011f77fede5c4060d9b37e198744f1e1bc98","urls":["bzz-raw://1d833362f6560884cbe7165b6c70c3f7557596fd7446b687f4eafe49d8970018","dweb:/ipfs/QmaWQ1kL62hT248K2Ze4deDtnQxWoasH2soAnYANV5kgJr"],"license":null},"src/ArenaToken.sol":{"keccak256":"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a","urls":["bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105","dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF"],"license":null},"src/Fetcher.sol":{"keccak256":"0x1895e5c0688650ca60371f208b62d9f64beea29bd7515b2600a1c8d5c73805df","urls":["bzz-raw://f9c904c9d032167f6d8fec1392c9a023f339a4aee9f75f06df6347a495af9d38","dweb:/ipfs/QmYSaPzRawAnh2qD3JY5uvWypEueo5hSTQVyVFfX96msfb"],"license":null},"src/LiquidExchange.sol":{"keccak256":"0xc979e540abc8a2d1bc82f2c741beb4ea9037c7e69ab11a5a20ef11ab7b9cee22","urls":["bzz-raw://e5f08cb7b8685020a78fd9b84d740649dcbf9ba92057cc5914d829f275d396c5","dweb:/ipfs/QmQKVvRCmSumaf2xtbLey6KdUyt9bfTLeq9gPGssisJi17"],"license":"MIT"}},"version":1},"id":53} \ No newline at end of file diff --git a/src/artifacts/ArenaToken.json b/src/artifacts/ArenaToken.json deleted file mode 100644 index e4d9182..0000000 --- a/src/artifacts/ArenaToken.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"name","type":"string","internalType":"string"},{"name":"symbol","type":"string","internalType":"string"},{"name":"decimals","type":"uint8","internalType":"uint8"}],"stateMutability":"nonpayable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"decimals","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"value","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"v","type":"uint8","internalType":"uint8"},{"name":"r","type":"bytes32","internalType":"bytes32"},{"name":"s","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalSupply","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60e060405234801561001057600080fd5b50604051610f71380380610f7183398101604081905261002f916101c1565b828282600061003e84826102cd565b50600161004b83826102cd565b5060ff81166080524660a05261005f61006e565b60c05250610400945050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516100a0919061038b565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261012f57600080fd5b81516001600160401b0381111561014857610148610108565b604051601f8201601f19908116603f011681016001600160401b038111828210171561017657610176610108565b60405281815283820160200185101561018e57600080fd5b60005b828110156101ad57602081860181015183830182015201610191565b506000918101602001919091529392505050565b6000806000606084860312156101d657600080fd5b83516001600160401b038111156101ec57600080fd5b6101f88682870161011e565b602086015190945090506001600160401b0381111561021657600080fd5b6102228682870161011e565b925050604084015160ff8116811461023957600080fd5b809150509250925092565b600181811c9082168061025857607f821691505b60208210810361027857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156102c857806000526020600020601f840160051c810160208510156102a55750805b601f840160051c820191505b818110156102c557600081556001016102b1565b50505b505050565b81516001600160401b038111156102e6576102e6610108565b6102fa816102f48454610244565b8461027e565b6020601f82116001811461032e57600083156103165750848201515b600019600385901b1c1916600184901b1784556102c5565b600084815260208120601f198516915b8281101561035e578785015182556020948501946001909201910161033e565b508482101561037c5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600080835461039981610244565b6001821680156103b057600181146103c5576103f5565b60ff19831686528115158202860193506103f5565b86600052602060002060005b838110156103ed578154888201526001909101906020016103d1565b505081860193505b509195945050505050565b60805160a05160c051610b4261042f60003960006104540152600061041f015260006101440152610b426000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806340c10f191161008c57806395d89b411161006657806395d89b41146101d3578063a9059cbb146101db578063d505accf146101ee578063dd62ed3e1461020357600080fd5b806340c10f191461018057806370a08231146101935780637ecebe00146101b357600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd1461012c578063313ce5671461013f5780633644e51514610178575b600080fd5b6100dc61022e565b6040516100e9919061085e565b60405180910390f35b6101056101003660046108c8565b6102bc565b60405190151581526020016100e9565b61011e60025481565b6040519081526020016100e9565b61010561013a3660046108f2565b610329565b6101667f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100e9565b61011e61041b565b61010561018e3660046108c8565b610476565b61011e6101a136600461092f565b60036020526000908152604090205481565b61011e6101c136600461092f565b60056020526000908152604090205481565b6100dc61048b565b6101056101e93660046108c8565b610498565b6102016101fc366004610951565b610510565b005b61011e6102113660046109c4565b600460209081526000928352604080842090915290825290205481565b6000805461023b906109f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610267906109f7565b80156102b45780601f10610289576101008083540402835291602001916102b4565b820191906000526020600020905b81548152906001019060200180831161029757829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103179086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000198114610385576103608382610a47565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103ad908490610a47565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104089087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104515761044c610759565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600061048283836107f3565b50600192915050565b6001805461023b906109f7565b336000908152600360205260408120805483919083906104b9908490610a47565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103179086815260200190565b428410156105655760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161057161041b565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561067d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106b35750876001600160a01b0316816001600160a01b0316145b6106f05760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161055c565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161078b9190610a5a565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546108059190610af9565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b602081526000825180602084015260005b8181101561088c576020818601810151604086840101520161086f565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146108c357600080fd5b919050565b600080604083850312156108db57600080fd5b6108e4836108ac565b946020939093013593505050565b60008060006060848603121561090757600080fd5b610910846108ac565b925061091e602085016108ac565b929592945050506040919091013590565b60006020828403121561094157600080fd5b61094a826108ac565b9392505050565b600080600080600080600060e0888a03121561096c57600080fd5b610975886108ac565b9650610983602089016108ac565b95506040880135945060608801359350608088013560ff811681146109a757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156109d757600080fd5b6109e0836108ac565b91506109ee602084016108ac565b90509250929050565b600181811c90821680610a0b57607f821691505b602082108103610a2b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561032357610323610a31565b6000808354818160011c90506001821680610a7657607f821691505b602082108103610a9457634e487b7160e01b84526022600452602484fd5b808015610aa85760018114610abd57610aed565b60ff1984168752821515830287019450610aed565b60008881526020902060005b84811015610ae557815489820152600190910190602001610ac9565b505082870194505b50929695505050505050565b8082018082111561032357610323610a3156fea2646970667358221220ccfebb1e4e8032872e76643f45a308f5dc7882203f45905855bb86665e59033d64736f6c634300081a0033","sourceMap":"62:276:2:-:0;;;97:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;173:4;179:6;187:8;2094:4:0;:12;173:4:2;2094::0;:12;:::i;:::-;-1:-1:-1;2116:6:0;:16;2125:7;2116:6;:16;:::i;:::-;-1:-1:-1;2142:20:0;;;;;2192:13;2173:32;;2242:24;:22;:24::i;:::-;2215:51;;-1:-1:-1;62:276:2;;-1:-1:-1;;;;;62:276:2;5510:446:0;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;5269:25:4;;;;5310:18;;5303:34;;;;5833:14:0;5353:18:4;;;5346:34;5869:13:0;5396:18:4;;;5389:34;5912:4:0;5439:19:4;;;5432:61;5241:19;;5640:295:0;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;14:127:4:-;75:10;70:3;66:20;63:1;56:31;106:4;103:1;96:15;130:4;127:1;120:15;146:834;200:5;253:3;246:4;238:6;234:17;230:27;220:55;;271:1;268;261:12;220:55;298:13;;-1:-1:-1;;;;;323:30:4;;320:56;;;356:18;;:::i;:::-;405:2;399:9;497:2;459:17;;-1:-1:-1;;455:31:4;;;488:2;451:40;447:54;435:67;;-1:-1:-1;;;;;517:34:4;;553:22;;;514:62;511:88;;;579:18;;:::i;:::-;615:2;608:22;639;;;680:19;;;701:4;676:30;673:39;-1:-1:-1;670:59:4;;;725:1;722;715:12;670:59;747:1;757:143;771:6;768:1;765:13;757:143;;;883:4;867:14;;;863:25;;857:32;834:14;;;830:25;;823:67;786:12;757:143;;;-1:-1:-1;948:1:4;920:19;;;941:4;916:30;909:41;;;;924:6;146:834;-1:-1:-1;;;146:834:4:o;985:707::-;1091:6;1099;1107;1160:2;1148:9;1139:7;1135:23;1131:32;1128:52;;;1176:1;1173;1166:12;1128:52;1203:16;;-1:-1:-1;;;;;1231:30:4;;1228:50;;;1274:1;1271;1264:12;1228:50;1297:61;1350:7;1341:6;1330:9;1326:22;1297:61;:::i;:::-;1404:2;1389:18;;1383:25;1287:71;;-1:-1:-1;1383:25:4;-1:-1:-1;;;;;;1420:32:4;;1417:52;;;1465:1;1462;1455:12;1417:52;1488:63;1543:7;1532:8;1521:9;1517:24;1488:63;:::i;:::-;1478:73;;;1594:2;1583:9;1579:18;1573:25;1638:4;1631:5;1627:16;1620:5;1617:27;1607:55;;1658:1;1655;1648:12;1607:55;1681:5;1671:15;;;985:707;;;;;:::o;1697:380::-;1776:1;1772:12;;;;1819;;;1840:61;;1894:4;1886:6;1882:17;1872:27;;1840:61;1947:2;1939:6;1936:14;1916:18;1913:38;1910:161;;1993:10;1988:3;1984:20;1981:1;1974:31;2028:4;2025:1;2018:15;2056:4;2053:1;2046:15;1910:161;;1697:380;;;:::o;2208:518::-;2310:2;2305:3;2302:11;2299:421;;;2346:5;2343:1;2336:16;2390:4;2387:1;2377:18;2460:2;2448:10;2444:19;2441:1;2437:27;2431:4;2427:38;2496:4;2484:10;2481:20;2478:47;;;-1:-1:-1;2519:4:4;2478:47;2574:2;2569:3;2565:12;2562:1;2558:20;2552:4;2548:31;2538:41;;2629:81;2647:2;2640:5;2637:13;2629:81;;;2706:1;2692:16;;2673:1;2662:13;2629:81;;;2633:3;;2299:421;2208:518;;;:::o;2902:1299::-;3022:10;;-1:-1:-1;;;;;3044:30:4;;3041:56;;;3077:18;;:::i;:::-;3106:97;3196:6;3156:38;3188:4;3182:11;3156:38;:::i;:::-;3150:4;3106:97;:::i;:::-;3252:4;3283:2;3272:14;;3300:1;3295:649;;;;3988:1;4005:6;4002:89;;;-1:-1:-1;4057:19:4;;;4051:26;4002:89;-1:-1:-1;;2859:1:4;2855:11;;;2851:24;2847:29;2837:40;2883:1;2879:11;;;2834:57;4104:81;;3265:930;;3295:649;2155:1;2148:14;;;2192:4;2179:18;;-1:-1:-1;;3331:20:4;;;3449:222;3463:7;3460:1;3457:14;3449:222;;;3545:19;;;3539:26;3524:42;;3652:4;3637:20;;;;3605:1;3593:14;;;;3479:12;3449:222;;;3453:3;3699:6;3690:7;3687:19;3684:201;;;3760:19;;;3754:26;-1:-1:-1;;3843:1:4;3839:14;;;3855:3;3835:24;3831:37;3827:42;3812:58;3797:74;;3684:201;-1:-1:-1;;;;3931:1:4;3915:14;;;3911:22;3898:36;;-1:-1:-1;2902:1299:4:o;4206:799::-;4336:3;4365:1;4398:6;4392:13;4428:36;4454:9;4428:36;:::i;:::-;4495:1;4480:17;;4506:133;;;;4653:1;4648:332;;;;4473:507;;4506:133;-1:-1:-1;;4539:24:4;;4527:37;;4612:14;;4605:22;4593:35;;4584:45;;;-1:-1:-1;4506:133:4;;4648:332;4679:6;4676:1;4669:17;4727:4;4724:1;4714:18;4754:1;4768:166;4782:6;4779:1;4776:13;4768:166;;;4862:14;;4849:11;;;4842:35;4918:1;4905:15;;;;4804:4;4797:12;4768:166;;;4772:3;;4963:6;4958:3;4954:16;4947:23;;4473:507;-1:-1:-1;4996:3:4;;4206:799;-1:-1:-1;;;;;4206:799:4:o;5010:489::-;62:276:2;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806340c10f191161008c57806395d89b411161006657806395d89b41146101d3578063a9059cbb146101db578063d505accf146101ee578063dd62ed3e1461020357600080fd5b806340c10f191461018057806370a08231146101935780637ecebe00146101b357600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd1461012c578063313ce5671461013f5780633644e51514610178575b600080fd5b6100dc61022e565b6040516100e9919061085e565b60405180910390f35b6101056101003660046108c8565b6102bc565b60405190151581526020016100e9565b61011e60025481565b6040519081526020016100e9565b61010561013a3660046108f2565b610329565b6101667f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100e9565b61011e61041b565b61010561018e3660046108c8565b610476565b61011e6101a136600461092f565b60036020526000908152604090205481565b61011e6101c136600461092f565b60056020526000908152604090205481565b6100dc61048b565b6101056101e93660046108c8565b610498565b6102016101fc366004610951565b610510565b005b61011e6102113660046109c4565b600460209081526000928352604080842090915290825290205481565b6000805461023b906109f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610267906109f7565b80156102b45780601f10610289576101008083540402835291602001916102b4565b820191906000526020600020905b81548152906001019060200180831161029757829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103179086815260200190565b60405180910390a35060015b92915050565b6001600160a01b03831660009081526004602090815260408083203384529091528120546000198114610385576103608382610a47565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103ad908490610a47565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104089087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104515761044c610759565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b600061048283836107f3565b50600192915050565b6001805461023b906109f7565b336000908152600360205260408120805483919083906104b9908490610a47565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103179086815260200190565b428410156105655760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161057161041b565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa15801561067d573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106b35750876001600160a01b0316816001600160a01b0316145b6106f05760405162461bcd60e51b815260206004820152600e60248201526d24a72b20a624a22fa9a4a3a722a960911b604482015260640161055c565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f600060405161078b9190610a5a565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546108059190610af9565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b602081526000825180602084015260005b8181101561088c576020818601810151604086840101520161086f565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b03811681146108c357600080fd5b919050565b600080604083850312156108db57600080fd5b6108e4836108ac565b946020939093013593505050565b60008060006060848603121561090757600080fd5b610910846108ac565b925061091e602085016108ac565b929592945050506040919091013590565b60006020828403121561094157600080fd5b61094a826108ac565b9392505050565b600080600080600080600060e0888a03121561096c57600080fd5b610975886108ac565b9650610983602089016108ac565b95506040880135945060608801359350608088013560ff811681146109a757600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156109d757600080fd5b6109e0836108ac565b91506109ee602084016108ac565b90509250929050565b600181811c90821680610a0b57607f821691505b602082108103610a2b57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561032357610323610a31565b6000808354818160011c90506001821680610a7657607f821691505b602082108103610a9457634e487b7160e01b84526022600452602484fd5b808015610aa85760018114610abd57610aed565b60ff1984168752821515830287019450610aed565b60008881526020902060005b84811015610ae557815489820152600190910190602001610ac9565b505082870194505b50929695505050505050565b8082018082111561032357610323610a3156fea2646970667358221220ccfebb1e4e8032872e76643f45a308f5dc7882203f45905855bb86665e59033d64736f6c634300081a0033","sourceMap":"62:276:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1031:18:0;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2461:211;;;;;;:::i;:::-;;:::i;:::-;;;1194:14:4;;1187:22;1169:41;;1157:2;1142:18;2461:211:0;1029:187:4;1304:26:0;;;;;;;;;1367:25:4;;;1355:2;1340:18;1304:26:0;1221:177:4;3057:592:0;;;;;;:::i;:::-;;:::i;1083:31::-;;;;;;;;1954:4:4;1942:17;;;1924:36;;1912:2;1897:18;1083:31:0;1782:184:4;5327:177:0;;;:::i;205:131:2:-;;;;;;:::i;:::-;;:::i;1337:44:0:-;;;;;;:::i;:::-;;;;;;;;;;;;;;1751:41;;;;;;:::i;:::-;;;;;;;;;;;;;;1056:20;;;:::i;2678:373::-;;;;;;:::i;:::-;;:::i;3838:1483::-;;;;;;:::i;:::-;;:::i;:::-;;1388:64;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1031:18;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2461:211::-;2561:10;2535:4;2551:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;2551:30:0;;;;;;;;;;:39;;;2606:37;2535:4;;2551:30;;2606:37;;;;2584:6;1367:25:4;;1355:2;1340:18;;1221:177;2606:37:0;;;;;;;;-1:-1:-1;2661:4:0;2461:211;;;;;:::o;3057:592::-;-1:-1:-1;;;;;3209:15:0;;3175:4;3209:15;;;:9;:15;;;;;;;;3225:10;3209:27;;;;;;;;-1:-1:-1;;3287:28:0;;3283:80;;3347:16;3357:6;3347:7;:16;:::i;:::-;-1:-1:-1;;;;;3317:15:0;;;;;;:9;:15;;;;;;;;3333:10;3317:27;;;;;;;:46;3283:80;-1:-1:-1;;;;;3374:15:0;;;;;;:9;:15;;;;;:25;;3393:6;;3374:15;:25;;3393:6;;3374:25;:::i;:::-;;;;-1:-1:-1;;;;;;;3545:13:0;;;;;;;:9;:13;;;;;;;:23;;;;;;3594:26;3545:13;;3594:26;;;;;;;3562:6;1367:25:4;;1355:2;1340:18;;1221:177;3594:26:0;;;;;;;;-1:-1:-1;3638:4:0;;3057:592;-1:-1:-1;;;;3057:592:0:o;5327:177::-;5384:7;5427:16;5410:13;:33;:87;;5473:24;:22;:24::i;:::-;5403:94;;5327:177;:::o;5410:87::-;-1:-1:-1;5446:24:0;;5327:177::o;205:131:2:-;269:4;285:23;291:8;301:6;285:5;:23::i;:::-;-1:-1:-1;325:4:2;205:131;;;;:::o;1056:20:0:-;;;;;;;:::i;2678:373::-;2774:10;2748:4;2764:21;;;:9;:21;;;;;:31;;2789:6;;2764:21;2748:4;;2764:31;;2789:6;;2764:31;:::i;:::-;;;;-1:-1:-1;;;;;;;2941:13:0;;;;;;:9;:13;;;;;;;:23;;;;;;2990:32;2999:10;;2990:32;;;;2958:6;1367:25:4;;1355:2;1340:18;;1221:177;3838:1483:0;4057:15;4045:8;:27;;4037:63;;;;-1:-1:-1;;;4037:63:0;;4369:2:4;4037:63:0;;;4351:21:4;4408:2;4388:18;;;4381:30;4447:25;4427:18;;;4420:53;4490:18;;4037:63:0;;;;;;;;;4265:24;4292:805;4428:18;:16;:18::i;:::-;-1:-1:-1;;;;;4873:13:0;;;;;;;:6;:13;;;;;;;;;:15;;;;;;;;4511:449;;4555:165;4511:449;;;4806:25:4;4847:18;;;4840:60;;;;4936:32;;;4916:18;;;4909:60;4985:18;;;4978:34;;;5028:19;;;5021:35;;;;5072:19;;;;5065:35;;;4511:449:0;;;;;;;;;;4778:19:4;;;4511:449:0;;;4472:514;;;;;;;;-1:-1:-1;;;4350:658:0;;;5369:27:4;5412:11;;;5405:27;;;;5448:12;;;5441:28;;;;5485:12;;4350:658:0;;;-1:-1:-1;;4350:658:0;;;;;;;;;4319:707;;4350:658;4319:707;;;;4292:805;;;;;;;;;5735:25:4;5808:4;5796:17;;5776:18;;;5769:45;5830:18;;;5823:34;;;5873:18;;;5866:34;;;5707:19;;4292:805:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4292:805:0;;-1:-1:-1;;4292:805:0;;;-1:-1:-1;;;;;;;5120:30:0;;;;;;:59;;;5174:5;-1:-1:-1;;;;;5154:25:0;:16;-1:-1:-1;;;;;5154:25:0;;5120:59;5112:86;;;;-1:-1:-1;;;5112:86:0;;6113:2:4;5112:86:0;;;6095:21:4;6152:2;6132:18;;;6125:30;-1:-1:-1;;;6171:18:4;;;6164:44;6225:18;;5112:86:0;5911:338:4;5112:86:0;-1:-1:-1;;;;;5213:27:0;;;;;;;:9;:27;;;;;;;;:36;;;;;;;;;;;;;:44;;;5283:31;1367:25:4;;;5213:36:0;;5283:31;;;;;1340:18:4;5283:31:0;;;;;;;3838:1483;;;;;;;:::o;5510:446::-;5575:7;5672:95;5805:4;5789:22;;;;;;:::i;:::-;;;;;;;;;;5640:295;;;7736:25:4;;;;7777:18;;7770:34;;;;5833:14:0;7820:18:4;;;7813:34;5869:13:0;7863:18:4;;;7856:34;5912:4:0;7906:19:4;;;7899:61;7708:19;;5640:295:0;;;;;;;;;;;;5613:336;;;;;;5594:355;;5510:446;:::o;6150:325::-;6235:6;6220:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;6387:13:0;;;;;;:9;:13;;;;;;;;:23;;;;;;6436:32;1367:25:4;;;6436:32:0;;1340:18:4;6436:32:0;;;;;;;6150:325;;:::o;14:527:4:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;263:1;273:140;287:6;284:1;281:13;273:140;;;398:2;382:14;;;378:23;;372:30;367:2;348:17;;;344:26;337:66;302:10;273:140;;;277:3;462:1;457:2;448:6;437:9;433:22;429:31;422:42;532:2;525;521:7;516:2;508:6;504:15;500:29;489:9;485:45;481:54;473:62;;;14:527;;;;:::o;546:173::-;614:20;;-1:-1:-1;;;;;663:31:4;;653:42;;643:70;;709:1;706;699:12;643:70;546:173;;;:::o;724:300::-;792:6;800;853:2;841:9;832:7;828:23;824:32;821:52;;;869:1;866;859:12;821:52;892:29;911:9;892:29;:::i;:::-;882:39;990:2;975:18;;;;962:32;;-1:-1:-1;;;724:300:4:o;1403:374::-;1480:6;1488;1496;1549:2;1537:9;1528:7;1524:23;1520:32;1517:52;;;1565:1;1562;1555:12;1517:52;1588:29;1607:9;1588:29;:::i;:::-;1578:39;;1636:38;1670:2;1659:9;1655:18;1636:38;:::i;:::-;1403:374;;1626:48;;-1:-1:-1;;;1743:2:4;1728:18;;;;1715:32;;1403:374::o;2153:186::-;2212:6;2265:2;2253:9;2244:7;2240:23;2236:32;2233:52;;;2281:1;2278;2271:12;2233:52;2304:29;2323:9;2304:29;:::i;:::-;2294:39;2153:186;-1:-1:-1;;;2153:186:4:o;2344:903::-;2455:6;2463;2471;2479;2487;2495;2503;2556:3;2544:9;2535:7;2531:23;2527:33;2524:53;;;2573:1;2570;2563:12;2524:53;2596:29;2615:9;2596:29;:::i;:::-;2586:39;;2644:38;2678:2;2667:9;2663:18;2644:38;:::i;:::-;2634:48;-1:-1:-1;2751:2:4;2736:18;;2723:32;;-1:-1:-1;2852:2:4;2837:18;;2824:32;;-1:-1:-1;2934:3:4;2919:19;;2906:33;2983:4;2970:18;;2958:31;;2948:59;;3003:1;3000;2993:12;2948:59;2344:903;;;;-1:-1:-1;2344:903:4;;;;3026:7;3106:3;3091:19;;3078:33;;-1:-1:-1;3210:3:4;3195:19;;;3182:33;;2344:903;-1:-1:-1;;2344:903:4:o;3252:260::-;3320:6;3328;3381:2;3369:9;3360:7;3356:23;3352:32;3349:52;;;3397:1;3394;3387:12;3349:52;3420:29;3439:9;3420:29;:::i;:::-;3410:39;;3468:38;3502:2;3491:9;3487:18;3468:38;:::i;:::-;3458:48;;3252:260;;;;;:::o;3517:380::-;3596:1;3592:12;;;;3639;;;3660:61;;3714:4;3706:6;3702:17;3692:27;;3660:61;3767:2;3759:6;3756:14;3736:18;3733:38;3730:161;;3813:10;3808:3;3804:20;3801:1;3794:31;3848:4;3845:1;3838:15;3876:4;3873:1;3866:15;3730:161;;3517:380;;;:::o;3902:127::-;3963:10;3958:3;3954:20;3951:1;3944:31;3994:4;3991:1;3984:15;4018:4;4015:1;4008:15;4034:128;4101:9;;;4122:11;;;4119:37;;;4136:18;;:::i;6383:1089::-;6513:3;6542:1;6575:6;6569:13;6605:3;6634:9;6631:1;6627:17;6617:27;;6694:1;6683:9;6679:17;6715:18;6705:61;;6759:4;6751:6;6747:17;6737:27;;6705:61;6812:2;6804:6;6801:14;6781:18;6778:38;6775:165;;-1:-1:-1;;;6839:33:4;;6895:4;6892:1;6885:15;6925:4;6846:3;6913:17;6775:165;6956:18;6983:133;;;;7130:1;7125:322;;;;6949:498;;6983:133;-1:-1:-1;;7016:24:4;;7004:37;;7089:14;;7082:22;7070:35;;7061:45;;;-1:-1:-1;6983:133:4;;7125:322;6330:1;6323:14;;;6367:4;6354:18;;7223:1;7237:164;7251:6;7248:1;7245:13;7237:164;;;7329:14;;7316:11;;;7309:35;7385:1;7372:15;;;;7273:2;7266:10;7237:164;;;7241:3;;7430:6;7425:3;7421:16;7414:23;;6949:498;-1:-1:-1;7463:3:4;;6383:1089;-1:-1:-1;;;;;;6383:1089:4:o;7971:125::-;8036:9;;;8057:10;;;8054:36;;;8070:18;;:::i","linkReferences":{},"immutableReferences":{"24":[{"start":324,"length":32}],"38":[{"start":1055,"length":32}],"40":[{"start":1108,"length":32}]}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","mint(address,uint256)":"40c10f19","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/ArenaToken.sol\":\"ArenaToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/solmate/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"src/ArenaToken.sol\":{\"keccak256\":\"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a\",\"urls\":[\"bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105\",\"dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"},{"internalType":"uint8","name":"decimals","type":"uint8"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"permit"},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["ds-test/=lib/solmate/lib/ds-test/src/","forge-std/=lib/forge-std/src/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/ArenaToken.sol":"ArenaToken"},"evmVersion":"paris","libraries":{}},"sources":{"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"src/ArenaToken.sol":{"keccak256":"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a","urls":["bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105","dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF"],"license":null}},"version":1},"id":2} \ No newline at end of file diff --git a/src/artifacts/LiquidExchange.json b/src/artifacts/LiquidExchange.json deleted file mode 100644 index 971feac..0000000 --- a/src/artifacts/LiquidExchange.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"arenaTokenX_","type":"address","internalType":"address"},{"name":"arenaTokenY_","type":"address","internalType":"address"},{"name":"price_","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"arenaTokenX","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"arenaTokenY","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"price","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setPrice","inputs":[{"name":"_price","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"swap","inputs":[{"name":"tokenIn","type":"address","internalType":"address"},{"name":"amountIn","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"PriceChange","inputs":[{"name":"price","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"tokenIn","type":"address","indexed":false,"internalType":"address"},{"name":"tokenOut","type":"address","indexed":false,"internalType":"address"},{"name":"amountIn","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amountOut","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"to","type":"address","indexed":false,"internalType":"address"}],"anonymous":false}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b50604051610542380380610542833981016040819052602c91607e565b600080546001600160a01b039485166001600160a01b031991821617909155600180549390941692169190911790915560025560b5565b80516001600160a01b0381168114607957600080fd5b919050565b600080600060608486031215609257600080fd5b6099846063565b925060a5602085016063565b9150604084015190509250925092565b61047e806100c46000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c806358dbbe811461005c57806391b7f5ed1461008c578063a035b1fe146100a1578063d004f0f7146100b8578063f5992699146100cb575b600080fd5b60015461006f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009f61009a3660046103d5565b6100de565b005b6100aa60025481565b604051908152602001610083565b61009f6100c63660046103ee565b610119565b60005461006f906001600160a01b031681565b60028190556040518181527ff347ee99503bf19c028bd6b18f3c676e82a9bb5b2bb5225aebe0fd62fd6a0d199060200160405180910390a150565b6000805481906001600160a01b039081169085160361015757506001546002546001600160a01b039091169061015090849061038a565b91506101c8565b6001546001600160a01b039081169085160361018b57506000546002546001600160a01b03909116906101509084906103a6565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b60448201526064015b60405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd906064016020604051808303816000875af115801561021b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023f9190610426565b61027d5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101bf565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0382169063a9059cbb906044016020604051808303816000875af11580156102ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ee9190610426565b61032c5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101bf565b604080516001600160a01b03808716825283166020820152908101849052606081018390523360808201527fb39c9bc43f811e1a7ce159c5f147458fdb80266bf23c17322013316e27e086d09060a00160405180910390a150505050565b600061039f8383670de0b6b3a76400006103b7565b9392505050565b600061039f83670de0b6b3a7640000845b60008260001904841183021582026103ce57600080fd5b5091020490565b6000602082840312156103e757600080fd5b5035919050565b6000806040838503121561040157600080fd5b82356001600160a01b038116811461041857600080fd5b946020939093013593505050565b60006020828403121561043857600080fd5b8151801515811461039f57600080fdfea264697066735822122046949de5dd33fffb53ee34004519f8e0867392736ad6f958075fab6090afbbb264736f6c634300081a0033","sourceMap":"251:1413:3:-:0;;;492:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;574:11;:26;;-1:-1:-1;;;;;574:26:3;;;-1:-1:-1;;;;;;574:26:3;;;;;;;;610;;;;;;;;;;;;;;;647:5;:14;251:1413;;14:177:4;93:13;;-1:-1:-1;;;;;135:31:4;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:354::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;540:2;529:9;525:18;519:25;509:35;;196:354;;;;;:::o;:::-;251:1413:3;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100575760003560e01c806358dbbe811461005c57806391b7f5ed1461008c578063a035b1fe146100a1578063d004f0f7146100b8578063f5992699146100cb575b600080fd5b60015461006f906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009f61009a3660046103d5565b6100de565b005b6100aa60025481565b604051908152602001610083565b61009f6100c63660046103ee565b610119565b60005461006f906001600160a01b031681565b60028190556040518181527ff347ee99503bf19c028bd6b18f3c676e82a9bb5b2bb5225aebe0fd62fd6a0d199060200160405180910390a150565b6000805481906001600160a01b039081169085160361015757506001546002546001600160a01b039091169061015090849061038a565b91506101c8565b6001546001600160a01b039081169085160361018b57506000546002546001600160a01b03909116906101509084906103a6565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b2103a37b5b2b760991b60448201526064015b60405180910390fd5b6040516323b872dd60e01b8152336004820152306024820152604481018490526001600160a01b038516906323b872dd906064016020604051808303816000875af115801561021b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061023f9190610426565b61027d5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101bf565b60405163a9059cbb60e01b8152336004820152602481018390526001600160a01b0382169063a9059cbb906044016020604051808303816000875af11580156102ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102ee9190610426565b61032c5760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b60448201526064016101bf565b604080516001600160a01b03808716825283166020820152908101849052606081018390523360808201527fb39c9bc43f811e1a7ce159c5f147458fdb80266bf23c17322013316e27e086d09060a00160405180910390a150505050565b600061039f8383670de0b6b3a76400006103b7565b9392505050565b600061039f83670de0b6b3a7640000845b60008260001904841183021582026103ce57600080fd5b5091020490565b6000602082840312156103e757600080fd5b5035919050565b6000806040838503121561040157600080fd5b82356001600160a01b038116811461041857600080fd5b946020939093013593505050565b60006020828403121561043857600080fd5b8151801515811461039f57600080fdfea264697066735822122046949de5dd33fffb53ee34004519f8e0867392736ad6f958075fab6090afbbb264736f6c634300081a0033","sourceMap":"251:1413:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:26;;;;;-1:-1:-1;;;;;395:26:3;;;;;;-1:-1:-1;;;;;178:32:4;;;160:51;;148:2;133:18;395:26:3;;;;;;;;813:105;;;;;;:::i;:::-;;:::i;:::-;;428:20;;;;;;;;;599:25:4;;;587:2;572:18;428:20:3;453:177:4;924:738:3;;;;;;:::i;:::-;;:::i;363:26::-;;;;;-1:-1:-1;;;;;363:26:3;;;813:105;864:5;:14;;;893:18;;599:25:4;;;893:18:3;;587:2:4;572:18;893::3;;;;;;;813:105;:::o;924:738::-;990:17;1059:11;;990:17;;-1:-1:-1;;;;;1059:11:3;;;1048:22;;;;1044:352;;-1:-1:-1;1097:11:3;;1173:5;;-1:-1:-1;;;;;1097:11:3;;;;1134:45;;1163:8;;1134:28;:45::i;:::-;1122:57;;1044:352;;;1211:11;;-1:-1:-1;;;;;1211:11:3;;;1200:22;;;;1196:200;;-1:-1:-1;1249:11:3;;1325:5;;-1:-1:-1;;;;;1249:11:3;;;;1286:45;;1315:8;;1286:28;:45::i;1196:200::-;1362:23;;-1:-1:-1;;;1362:23:3;;1248:2:4;1362:23:3;;;1230:21:4;1287:2;1267:18;;;1260:30;-1:-1:-1;;;1306:18:4;;;1299:43;1359:18;;1362:23:3;;;;;;;;1196:200;1414:64;;-1:-1:-1;;;1414:64:3;;1442:10;1414:64;;;1590:51:4;1462:4:3;1657:18:4;;;1650:60;1726:18;;;1719:34;;;-1:-1:-1;;;;;1414:27:3;;;;;1563:18:4;;1414:64:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1406:92;;;;-1:-1:-1;;;1406:92:3;;2248:2:4;1406:92:3;;;2230:21:4;2287:2;2267:18;;;2260:30;-1:-1:-1;;;2306:18:4;;;2299:45;2361:18;;1406:92:3;2046:339:4;1406:92:3;1516:47;;-1:-1:-1;;;1516:47:3;;1541:10;1516:47;;;2564:51:4;2631:18;;;2624:34;;;-1:-1:-1;;;;;1516:24:3;;;;;2537:18:4;;1516:47:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1508:75;;;;-1:-1:-1;;;1508:75:3;;2248:2:4;1508:75:3;;;2230:21:4;2287:2;2267:18;;;2260:30;-1:-1:-1;;;2306:18:4;;;2299:45;2361:18;;1508:75:3;2046:339:4;1508:75:3;1599:56;;;-1:-1:-1;;;;;2946:32:4;;;2928:51;;3015:32;;3010:2;2995:18;;2988:60;3064:18;;;3057:34;;;3122:2;3107:18;;3100:34;;;1644:10:3;3165:3:4;3150:19;;3143:61;1599:56:3;;2915:3:4;2900:19;1599:56:3;;;;;;;980:682;;924:738;;:::o;704:164:1:-;769:7;795:21;806:1;809;655:4;795:10;:21::i;:::-;788:28;704:164;-1:-1:-1;;;704:164:1:o;1038:::-;1103:7;1129:21;1140:1;655:4;1148:1;1564:526;1680:9;1928:1;-1:-1:-1;;1911:19:1;1908:1;1905:26;1902:1;1898:34;1891:42;1878:11;1874:60;1864:116;;1964:1;1961;1954:12;1864:116;-1:-1:-1;2051:9:1;;2047:27;;1564:526::o;222:226:4:-;281:6;334:2;322:9;313:7;309:23;305:32;302:52;;;350:1;347;340:12;302:52;-1:-1:-1;395:23:4;;222:226;-1:-1:-1;222:226:4:o;635:406::-;703:6;711;764:2;752:9;743:7;739:23;735:32;732:52;;;780:1;777;770:12;732:52;806:23;;-1:-1:-1;;;;;858:31:4;;848:42;;838:70;;904:1;901;894:12;838:70;927:5;1005:2;990:18;;;;977:32;;-1:-1:-1;;;635:406:4:o;1764:277::-;1831:6;1884:2;1872:9;1863:7;1859:23;1855:32;1852:52;;;1900:1;1897;1890:12;1852:52;1932:9;1926:16;1985:5;1978:13;1971:21;1964:5;1961:32;1951:60;;2007:1;2004;1997:12","linkReferences":{}},"methodIdentifiers":{"arenaTokenX()":"f5992699","arenaTokenY()":"58dbbe81","price()":"a035b1fe","setPrice(uint256)":"91b7f5ed","swap(address,uint256)":"d004f0f7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"arenaTokenX_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"arenaTokenY_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"price_\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"PriceChange\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"arenaTokenX\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"arenaTokenY\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_price\",\"type\":\"uint256\"}],\"name\":\"setPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Implementation of the test interface for Arbiter writing contracts.\",\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LiquidExchange.sol\":\"LiquidExchange\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":ds-test/=lib/solmate/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/solmate/src/tokens/ERC20.sol\":{\"keccak256\":\"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35\",\"dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9\",\"dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi\"]},\"src/ArenaToken.sol\":{\"keccak256\":\"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a\",\"urls\":[\"bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105\",\"dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF\"]},\"src/LiquidExchange.sol\":{\"keccak256\":\"0xc979e540abc8a2d1bc82f2c741beb4ea9037c7e69ab11a5a20ef11ab7b9cee22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e5f08cb7b8685020a78fd9b84d740649dcbf9ba92057cc5914d829f275d396c5\",\"dweb:/ipfs/QmQKVvRCmSumaf2xtbLey6KdUyt9bfTLeq9gPGssisJi17\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"arenaTokenX_","type":"address"},{"internalType":"address","name":"arenaTokenY_","type":"address"},{"internalType":"uint256","name":"price_","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"price","type":"uint256","indexed":false}],"type":"event","name":"PriceChange","anonymous":false},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address","indexed":false},{"internalType":"address","name":"tokenOut","type":"address","indexed":false},{"internalType":"uint256","name":"amountIn","type":"uint256","indexed":false},{"internalType":"uint256","name":"amountOut","type":"uint256","indexed":false},{"internalType":"address","name":"to","type":"address","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"arenaTokenX","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"arenaTokenY","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"price","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_price","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPrice"},{"inputs":[{"internalType":"address","name":"tokenIn","type":"address"},{"internalType":"uint256","name":"amountIn","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"swap"}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["ds-test/=lib/solmate/lib/ds-test/src/","forge-std/=lib/forge-std/src/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LiquidExchange.sol":"LiquidExchange"},"evmVersion":"paris","libraries":{}},"sources":{"lib/solmate/src/tokens/ERC20.sol":{"keccak256":"0xcdfd8db76b2a3415620e4d18cc5545f3d50de792dbf2c3dd5adb40cbe6f94b10","urls":["bzz-raw://57b3ab70cde374af1cf2c9888636e8de6cf660f087b1c9abd805e9271e19fa35","dweb:/ipfs/QmNrLDBAHYFjpjSd12jerm1AdBkDqEYUUaXgnT854BUZ97"],"license":"AGPL-3.0-only"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x1b62af9baf5b8e991ed7531bc87f45550ba9d61e8dbff5caf237ccaf3a3fd843","urls":["bzz-raw://b7b38b977c5305b18ceefbeed4c9ceaaaefa419b520de62de6604ea661f8c0a9","dweb:/ipfs/QmecMRzgfMyDVa2pvBqMMDLYBappaj7Aa3qcMoQYEQrhWi"],"license":"AGPL-3.0-only"},"src/ArenaToken.sol":{"keccak256":"0x59ea858a9c33398efbfb770c958c1f544425ad32d73a3cd3991f6834ec04028a","urls":["bzz-raw://242a38f560c8dc312e27a30dad15ddf2fccb4163f4f0692f814b3cfa71180105","dweb:/ipfs/QmZqhSdNeRiVf5rJJYgX48SiUi1dwgpYAvMo6a7XBVRjXF"],"license":null},"src/LiquidExchange.sol":{"keccak256":"0xc979e540abc8a2d1bc82f2c741beb4ea9037c7e69ab11a5a20ef11ab7b9cee22","urls":["bzz-raw://e5f08cb7b8685020a78fd9b84d740649dcbf9ba92057cc5914d829f275d396c5","dweb:/ipfs/QmQKVvRCmSumaf2xtbLey6KdUyt9bfTLeq9gPGssisJi17"],"license":"MIT"}},"version":1},"id":3} \ No newline at end of file diff --git a/src/artifacts/PoolManager.json b/src/artifacts/PoolManager.json deleted file mode 100644 index 45711ba..0000000 --- a/src/artifacts/PoolManager.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"controllerGasLimit","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"burn","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"clear","inputs":[{"name":"currency","type":"address","internalType":"Currency"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolFees","inputs":[{"name":"recipient","type":"address","internalType":"address"},{"name":"currency","type":"address","internalType":"Currency"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"amountCollected","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"donate","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"amount0","type":"uint256","internalType":"uint256"},{"name":"amount1","type":"uint256","internalType":"uint256"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"delta","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"extsload","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"extsload","inputs":[{"name":"startSlot","type":"bytes32","internalType":"bytes32"},{"name":"nSlots","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"extsload","inputs":[{"name":"slots","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"exttload","inputs":[{"name":"slots","type":"bytes32[]","internalType":"bytes32[]"}],"outputs":[{"name":"","type":"bytes32[]","internalType":"bytes32[]"}],"stateMutability":"view"},{"type":"function","name":"exttload","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"sqrtPriceX96","type":"uint160","internalType":"uint160"},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"tick","type":"int24","internalType":"int24"}],"stateMutability":"nonpayable"},{"type":"function","name":"isOperator","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"isOperator","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"mint","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"modifyLiquidity","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct IPoolManager.ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"callerDelta","type":"int256","internalType":"BalanceDelta"},{"name":"feesAccrued","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"protocolFeeController","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IProtocolFeeController"}],"stateMutability":"view"},{"type":"function","name":"protocolFeesAccrued","inputs":[{"name":"currency","type":"address","internalType":"Currency"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setOperator","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFee","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"newProtocolFee","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFeeController","inputs":[{"name":"controller","type":"address","internalType":"contract IProtocolFeeController"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settle","inputs":[],"outputs":[{"name":"paid","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"settleFor","inputs":[{"name":"recipient","type":"address","internalType":"address"}],"outputs":[{"name":"paid","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct IPoolManager.SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"swapDelta","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"nonpayable"},{"type":"function","name":"sync","inputs":[{"name":"currency","type":"address","internalType":"Currency"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"take","inputs":[{"name":"currency","type":"address","internalType":"Currency"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transfer","inputs":[{"name":"receiver","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"receiver","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlock","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"updateDynamicLPFee","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"newDynamicLPFee","type":"uint24","internalType":"uint24"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"spender","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialize","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"currency0","type":"address","indexed":true,"internalType":"Currency"},{"name":"currency1","type":"address","indexed":true,"internalType":"Currency"},{"name":"fee","type":"uint24","indexed":false,"internalType":"uint24"},{"name":"tickSpacing","type":"int24","indexed":false,"internalType":"int24"},{"name":"hooks","type":"address","indexed":false,"internalType":"contract IHooks"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"}],"anonymous":false},{"type":"event","name":"ModifyLiquidity","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"tickLower","type":"int24","indexed":false,"internalType":"int24"},{"name":"tickUpper","type":"int24","indexed":false,"internalType":"int24"},{"name":"liquidityDelta","type":"int256","indexed":false,"internalType":"int256"},{"name":"salt","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"OperatorSet","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeControllerUpdated","inputs":[{"name":"protocolFeeController","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ProtocolFeeUpdated","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"protocolFee","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"Swap","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"int128","indexed":false,"internalType":"int128"},{"name":"amount1","type":"int128","indexed":false,"internalType":"int128"},{"name":"sqrtPriceX96","type":"uint160","indexed":false,"internalType":"uint160"},{"name":"liquidity","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"tick","type":"int24","indexed":false,"internalType":"int24"},{"name":"fee","type":"uint24","indexed":false,"internalType":"uint24"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AlreadyUnlocked","inputs":[]},{"type":"error","name":"CurrenciesOutOfOrderOrEqual","inputs":[{"name":"currency0","type":"address","internalType":"address"},{"name":"currency1","type":"address","internalType":"address"}]},{"type":"error","name":"CurrencyNotSettled","inputs":[]},{"type":"error","name":"DelegateCallNotAllowed","inputs":[]},{"type":"error","name":"InvalidCaller","inputs":[]},{"type":"error","name":"ManagerLocked","inputs":[]},{"type":"error","name":"MustClearExactPositiveDelta","inputs":[]},{"type":"error","name":"NonZeroNativeValue","inputs":[]},{"type":"error","name":"PoolNotInitialized","inputs":[]},{"type":"error","name":"ProtocolFeeCannotBeFetched","inputs":[]},{"type":"error","name":"ProtocolFeeTooLarge","inputs":[{"name":"fee","type":"uint24","internalType":"uint24"}]},{"type":"error","name":"SwapAmountCannotBeZero","inputs":[]},{"type":"error","name":"TickSpacingTooLarge","inputs":[{"name":"tickSpacing","type":"int24","internalType":"int24"}]},{"type":"error","name":"TickSpacingTooSmall","inputs":[{"name":"tickSpacing","type":"int24","internalType":"int24"}]},{"type":"error","name":"UnauthorizedDynamicLPFeeUpdate","inputs":[]}],"bytecode":{"object":"0x60c034609d57601f615fff38819003918201601f19168301916001600160401b0383118484101760a157808492602094604052833981010312609d57515f80546001600160a01b03191633908117825560405192917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a36080523060a052615f4990816100b6823960805181611317015260a051816135f40152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60a0806040526004361015610012575f80fd5b5f3560e01c908162fdd58e14612d7f5750806301ffc9a714612cc0578063095bcdb614612c165780630b0d9c0914612b8a57806311da60b414612b2f578063156e29f614612a7f5780631e2eaeaf14612a45578063234266d7146127ce5780632d7713891461270c57806335fd631a146126985780633dd45adb14612634578063426a8493146125b057806348c8949114612325578063527596511461220d578063558a729714612136578063598af9e71461209e5780635a6bcfda146115e2578063695c5bf514610f3f5780637e87ce7d14610e0257806380f0b44c14610ce15780638161b87414610be95780638da5cb5b14610b9957806397e8cd4e14610b365780639bf6645f14610ae9578063a584119414610aa8578063b6363cf214610a17578063dbd035ff146109c1578063f02de3b214610970578063f135baaa14610936578063f2fde38b1461088a578063f3cd914c146104ff578063f5298aca146103345763fe99049a14610186575f80fd5b346103305760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576101bd612de9565b6101c5612e0c565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885961027973ffffffffffffffffffffffffffffffffffffffff80606435951693843314158061030d575b610287575b845f52600460205260405f20875f5260205260405f2061023a878254613097565b90551693845f52600460205260405f20865f5260205260405f2061025f8282546130a4565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600560205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036102da575b5050610219565b6102e391613097565b855f52600560205260405f208333165f5260205260405f20885f5260205260405f20555f866102d3565b50845f52600360205260405f208233165f5260205260ff60405f20541615610214565b5f80fd5b346103305761034236612e2f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f9516956103bb6103b38661322a565b339089613270565b169233841415806104a0575b6103f2575b8385526004602052604085208686526020526040852061025f828254613097565b0390a4005b83855260056020526040852073ffffffffffffffffffffffffffffffffffffffff33168652602052604085208686526020526040852054817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610459575b50506103cc565b61046291613097565b84865260056020526040862073ffffffffffffffffffffffffffffffffffffffff331687526020526040862087875260205260408620558681610452565b5083855260036020526040852073ffffffffffffffffffffffffffffffffffffffff3316865260205260ff604086205416156103c7565b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610330576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761053836612f2b565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261033057604051906060820182811067ffffffffffffffff82111761085d5760405260a4358015158103610330578252602082019060c435825260e4359073ffffffffffffffffffffffffffffffffffffffff8216820361033057604084019182526101043567ffffffffffffffff8111610330576105e1903690600401612ff7565b9290937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576106136135dd565b51156108355760a0822092835f52600660205260405f209061063482613644565b60808401958482828a8a5173ffffffffffffffffffffffffffffffffffffffff169361065f94613c01565b90949195606088015160020b968b511515915173ffffffffffffffffffffffffffffffffffffffff1691604051986106968a612ebc565b895260208901526040880152606087015262ffffff166080860152885115155f149862ffffff6107b7986106ec6107a49860209d6108155773ffffffffffffffffffffffffffffffffffffffff8b511695614d47565b9492968291926107e8575b505073ffffffffffffffffffffffffffffffffffffffff6040850151169360606fffffffffffffffffffffffffffffffff60a08301511691015160020b90604051958860801d600f0b875288600f0b60208801526040870152606086015260808501521660a08301527f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c03393a38673ffffffffffffffffffffffffffffffffffffffff8a5116613e3e565b809491946107bf575b5050823391613720565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6107e19251169083613720565b84806107ad565b73ffffffffffffffffffffffffffffffffffffffff165f5260018f5260405f209081540190558e806106f7565b73ffffffffffffffffffffffffffffffffffffffff8e8c01511695614d47565b7fbe8b8507000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fffffffffffffffffffffffff00000000000000000000000000000000000000006108e2612de9565b73ffffffffffffffffffffffffffffffffffffffff5f549161090782841633146130b1565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004355c5f5260205ff35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b34610330576109cf36613025565b6040519160408360208152836020820152019160051b8301916020806040850193925b8335548152019101908483821015610a0e5750602080916109f2565b60408186030190f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a4e612de9565b73ffffffffffffffffffffffffffffffffffffffff610a6b612e0c565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610ae7610ae2612de9565b613154565b005b3461033057610af736613025565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c8152019101908483821015610a0e575060208091610b1a565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff610b82612de9565b165f526001602052602060405f2054604051908152f35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610c20612de9565b610c28612e0c565b9060443573ffffffffffffffffffffffffffffffffffffffff600254163303610cb9576020926107b79180610cb1575073ffffffffffffffffffffffffffffffffffffffff81165f526001845260405f20549283915b73ffffffffffffffffffffffffffffffffffffffff81165f526001865260405f20610caa848254613097565b9055613378565b928391610c7e565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610d18612de9565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757335f90815273ffffffffffffffffffffffffffffffffffffffff8216602052604090205c610d6e60243561322a565b600f0b908103610dda577fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610dad57610ae79133915f0390613270565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fbda73abf000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610e3a36612f2b565b610e42612f19565b9073ffffffffffffffffffffffffffffffffffffffff600254163303610cb9576103e9610fff831610623e900062fff0008416101615610f0e57602060a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9922092835f526006825260405f20610eb881613644565b805479ffffff00000000000000000000000000000000000000000000008360b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617905562ffffff60405191168152a2005b62ffffff827fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b346103305760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610f7736612f2b565b60a4359073ffffffffffffffffffffffffffffffffffffffff82168083036103305760c43567ffffffffffffffff811161033057610fb9903690600401612ff7565b90610fc26135dd565b6060840193845160020b617fff81136115b75750845160020b6001811261158c575073ffffffffffffffffffffffffffffffffffffffff81511692602082019373ffffffffffffffffffffffffffffffffffffffff855116908181101561155e5750506080820173ffffffffffffffffffffffffffffffffffffffff81511695604084019661105762ffffff89511682613a74565b15611533575061106c62ffffff885116613b32565b91805173ffffffffffffffffffffffffffffffffffffffff811690813303611470575b505060a08520955f73ffffffffffffffffffffffffffffffffffffffff6002541680611312575b50875f52600660205260405f2090815473ffffffffffffffffffffffffffffffffffffffff166112ea5773ffffffffffffffffffffffffffffffffffffffff7fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d64389860a09860209f98839662ffffff96859661114e7cffffff00000000000000000000000000000000000000000000000000009d614989565b9c8d9460d01b169079ffffff00000000000000000000000000000000000000000000008f76ffffff00000000000000000000000000000000000000008f9188901b16179160b81b16171790558851908a868316928333036111e8575b5050505050505116995116995116995160020b91511690604051998a528a8a01526040890152606088015260020b95866080820152a4604051908152f35b611000166111f7575b816111aa565b6112ae6112da926112df96604051966020947fa910f80f00000000000000000000000000000000000000000000000000000000899687015233602487015261128c604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60e486015260020b610104850152610120610124850152610144840191613116565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612ed8565b613fe2565b508f8881808a6111f1565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b90505a7f0000000000000000000000000000000000000000000000000000000000000000809110611448575f8091604051938260208601917f553bfc370000000000000000000000000000000000000000000000000000000083526113c58d602489019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a487526113d460c488612ed8565b81965193f160203d141680611435575b80611427575b8061140c575b156114045762ffffff600191165b906110b6565b505f806113fe565b506103e9610fff821610623e900062fff000831610166113f0565b5062ffffff811681146113ea565b60405191503d5f833e5f825192526113e4565b7f1ee49702000000000000000000000000000000000000000000000000000000005f5260045ffd5b6120001661147f575b8061108f565b61152c90604051907f3440d82000000000000000000000000000000000000000000000000000000000602083015233602483015261150a604483018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8460e48301526101006101048301526112da826112ae61012482018a8d613116565b508a611479565b7fe65af6a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f6e6c9830000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b34610330576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761161b36612f2b565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610330576040519061165282612e84565b60a4358060020b810361033057825260c4358060020b810361033057602083015260e43560408301526101043560608301526101243567ffffffffffffffff8111610330576116a5903690600401612ff7565b92907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576116d66135dd565b60a0832093845f52600660205260405f20906116f182613644565b608085015173ffffffffffffffffffffffffffffffffffffffff811690813303611fc5575b5050835160020b92602085015160020b966117346040870151613853565b95606088015160020b9860608201516040519a6117508c612ea0565b338c528860208d01528260408d015289600f0b60608d015260808c015260a08b01525f9080881215611f8e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188812611f6257620d89e88113611f3757604051986117ba8a612e84565b5f8a525f60208b01525f60408b01525f60608b015280600f0b611c87575b60048801988060020b5f528960205260405f20998360020b5f5260205260405f20895460a01c60020b8281125f14611c35575060028060018d0154600184015490039c015491015490039c5b60a073ffffffffffffffffffffffffffffffffffffffff8251169101519060405191602683015284600683015282600383015281525f603a600c83012091816040820152816020820152525f526006890160205260405f20986fffffffffffffffffffffffffffffffff8a54169a83600f0b155f14611bd8578b15611bb0576118e760409f6119c59c6118e1916119d79f5b60018301956118d960026118cd848a5485036141c1565b950192835485036141c1565b96555561322a565b9161322a565b6fffffffffffffffffffffffffffffffff169060801b179b5f84600f0b12611b46575b5082600f0b611a0f575b5050505061193b61192c8960801d8360801d01613853565b9189600f0b90600f0b01613853565b6fffffffffffffffffffffffffffffffff169060801b1791815160020b90602083015160020b8b8401516060850151918d5194855260208501528c84015260608301527ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec60803393a38773ffffffffffffffffffffffffffffffffffffffff608082015116613922565b809491946119e3575b50833391613720565b82519182526020820152f35b611a099073ffffffffffffffffffffffffffffffffffffffff6080840151169083613720565b856119ce565b809192939450548060a01c60020b9073ffffffffffffffffffffffffffffffffffffffff16908381125f14611a775750505091611a6591611a5f611a55611a6a956144e5565b91600f0b926144e5565b906148b4565b613853565b60801b5b8a808080611914565b948091939295125f14611b12576fffffffffffffffffffffffffffffffff92611acf611a65611ae594611abc611a65600396611ab68b600f0b916144e5565b876148b4565b93611aca89600f0b926144e5565b614857565b84169060801b17940192600f0b828454166148fb565b167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055611a6e565b9150611b2f935091611b29611a55611a65946144e5565b90614857565b6fffffffffffffffffffffffffffffffff16611a6e565b808f9151611b86575b0151611b5c575b8e61190a565b611b81848260049160020b5f52016020525f6002604082208281558260018201550155565b611b56565b611bab848460049160020b5f52016020525f6002604082208281558260018201550155565b611b4f565b7faefeb924000000000000000000000000000000000000000000000000000000005f5260045ffd5b6118e760409f6119c59c6118e1916119d79f6fffffffffffffffffffffffffffffffff611c088a600f0b836148fb565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008454161783556118b6565b909a908413611c5b5760028060018d0154600184015490039c015491015490039c611824565b99600260018b015460018d01549003600183015490039b81808d0154910154900391015490039c611824565b8860020b5f5260048801602052886fffffffffffffffffffffffffffffffff60405f20805490611ce1838316928d611cc288600f0b866148fb565b9415968787871615141597611f08575b505086600f0b9060801d613df7565b60801b8383161790551660208c01528a528160020b5f526004880160205260405f208054906fffffffffffffffffffffffffffffffff8216611d2684600f0b826148fb565b901592836fffffffffffffffffffffffffffffffff831615141593611ee1575b84600f0b9060801d600f0b03916f7fffffffffffffffffffffffffffffff83137fffffffffffffffffffffffffffffffff80000000000000000000000000000000841217610dad57826fffffffffffffffffffffffffffffffff935060801b8383161790551660608c015260408b0152898c5f83600f0b1215611e09575b5051611def575b60408a0151156117d857611dea60808d015160020b8360058b01614499565b6117d8565b611e0460808d015160020b8a60058b01614499565b611dcb565b60016fffffffffffffffffffffffffffffffff602060808294015160020b940151169280807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761805028180620d89e80502030501810416809111611eb5576fffffffffffffffffffffffffffffffff60608c01511611611e8957898c611dc4565b507fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b897fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b8b5460a01c60020b8613611d465760018c0154600184015560028c01546002840155611d46565b815460a01c60020b1215611f1d575b8f611cd2565b80600160029201546001860155015460028401558d611f17565b7f1ad777f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b877fd5e2f7ab000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b87604491604051917fc4433ed500000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b5f604087015113808091612091575b156120265750506040517f259982e500000000000000000000000000000000000000000000000000000000602082015261201d916112da826112ae86898b8d3360248701613799565b505b8680611716565b159081612083575b5061203a575b5061201f565b6040517f21d0ee7000000000000000000000000000000000000000000000000000000000602082015261207c916112da826112ae86898b8d3360248701613799565b5086612034565b61020091501615158861202e565b5061080082161515611fd4565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576120d5612de9565b73ffffffffffffffffffffffffffffffffffffffff6120f2612e0c565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761216d612de9565b602435908115158092036103305773ffffffffffffffffffffffffffffffffffffffff90335f52600360205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761224536612f2b565b61224d612f19565b906280000062ffffff60408301511614801590612301575b6122d95760a0906122758361375c565b205f52600660205260405f209061228b82613644565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1660d09190911b7cffffff000000000000000000000000000000000000000000000000000016179055005b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff608082015116331415612265565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043567ffffffffffffffff811161033057612374903690600401612ff7565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61258857612400915f9160017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d60405193849283927f91dd7346000000000000000000000000000000000000000000000000000000008452602060048501526024840191613116565b038183335af190811561257d575f916124d5575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c6124ad5760406020915f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835194859381855280519182918282880152018686015e5f85828601015201168101030190f35b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90503d805f833e6124e68183612ed8565b8101906020818303126103305780519067ffffffffffffffff8211610330570181601f820112156103305780519067ffffffffffffffff821161085d576040519261255960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612ed8565b8284526020838301011161033057815f9260208093018386015e8301015281612414565b6040513d5f823e3d90fd5b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305773ffffffffffffffffffffffffffffffffffffffff6125d336612e2f565b91929092335f52600560205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612666612de9565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576107b76020916134fb565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576024356004356040519160408360208152826020820152019060051b8301916001602060408501935b83548152019101908483821015610a0e575060206001916126f0565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043573ffffffffffffffffffffffffffffffffffffffff81168091036103305761277e73ffffffffffffffffffffffffffffffffffffffff5f541633146130b1565b807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b34610330576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761280736612f2b565b60c4359060a43560e43567ffffffffffffffff81116103305761282e903690600401612ff7565b9190937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576128606135dd565b60a084205f52600660205260405f209461287986613644565b6080850194855173ffffffffffffffffffffffffffffffffffffffff8116908133036129ed575b50506fffffffffffffffffffffffffffffffff6003880154169586156129c5576020976128cc8661322a565b5f036128d78661322a565b5f036fffffffffffffffffffffffffffffffff169060801b1797866129ac575b85612991575b505061290a338884613720565b519273ffffffffffffffffffffffffffffffffffffffff841693843303612936575b8888604051908152f35b601016612944575b8061292c565b612985956112da936112ae926040519788957fe1b4af69000000000000000000000000000000000000000000000000000000008d880152336024880161368a565b5082808080808061293e565b61299d60029187614100565b910190815401905588806128fd565b6129b68188614100565b600183019081540190556128f7565b7fa74f97ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b6020166129fb575b806128a0565b6040517fb6a8b0fa000000000000000000000000000000000000000000000000000000006020820152612a3e916112da826112ae8a888a8c8a336024880161368a565b50876129f5565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057600435545f5260205ff35b3461033057612a8d36612e2f565b907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f941695612b0c612aff8761322a565b8603600f0b339089613270565b16938484526004602052604084208685526020526040842061025f8282546130a4565b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75760206107b7336134fb565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612bc1612de9565b612bc9612e0c565b604435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757610ae792612c11612c048461322a565b5f03600f0b339083613270565b613378565b346103305773ffffffffffffffffffffffffffffffffffffffff612c3936612e2f565b91929092335f52600460205260405f20845f5260205260405f20612c5e848254613097565b90551690815f52600460205260405f20835f5260205260405f20612c838282546130a4565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288599181908101610279565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361033057807f01ffc9a70000000000000000000000000000000000000000000000000000000060209214908115612d55575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482612d4a565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760209073ffffffffffffffffffffffffffffffffffffffff612dce612de9565b165f526004825260405f206024355f52825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126103305760043573ffffffffffffffffffffffffffffffffffffffff8116810361033057906024359060443590565b6080810190811067ffffffffffffffff82111761085d57604052565b60c0810190811067ffffffffffffffff82111761085d57604052565b60a0810190811067ffffffffffffffff82111761085d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761085d57604052565b60a4359062ffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126103305760405190612f6282612ebc565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361033057815260243573ffffffffffffffffffffffffffffffffffffffff8116810361033057602082015260443562ffffff811681036103305760408201526064358060020b81036103305760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036103305760800152565b9181601f840112156103305782359167ffffffffffffffff8311610330576020838186019501011161033057565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103305760043567ffffffffffffffff811161033057826023820112156103305780600401359267ffffffffffffffff84116103305760248460051b83010111610330576024019190565b91908203918211610dad57565b91908201809211610dad57565b156130b857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b73ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c166132025773ffffffffffffffffffffffffffffffffffffffff81169081156131fe576131b790613b4f565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d565b5050565b7f996caf65000000000000000000000000000000000000000000000000000000005f5260045ffd5b6f8000000000000000000000000000000081101561324857600f0b90565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190600f0b918215613373576132a6919073ffffffffffffffffffffffffffffffffffffffff8092165f521660205260405f2090565b6132b2815c9283613be6565b80915d61332357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d5b565b1561332a57565b60017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d565b505050565b90919073ffffffffffffffffffffffffffffffffffffffff811690816134165750505f80808093855af1156133aa5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d604051937f8549db59000000000000000000000000000000000000000000000000000000008552600485015260406024850152806044850152805f606486013e011660640190fd5b60205f60448194968260409573ffffffffffffffffffffffffffffffffffffffff988751998a947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af13d15601f3d1160018551141617169282815282602082015201521561348f5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d604051937fb12c5f9c000000000000000000000000000000000000000000000000000000008552600485015260406024850152806044850152805f606486013e011660640190fd5b7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c919073ffffffffffffffffffffffffffffffffffffffff8316613550576133219034935b61354a8561322a565b90613270565b346135b5576133219061358c7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c61358786613b4f565b613097565b935f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d613541565b7f19d245cf000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361361c57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5473ffffffffffffffffffffffffffffffffffffffff161561366257565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b91926137056101209473ffffffffffffffffffffffffffffffffffffffff61371d999794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c083015260e0820152816101008201520191613116565b90565b9073ffffffffffffffffffffffffffffffffffffffff6020613321949361374f85848351168660801d90613270565b01511690600f0b90613270565b62ffffff16620f4240811161376e5750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9061371d95936138166101609473ffffffffffffffffffffffffffffffffffffffff61384594168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08501526020820151900b60e0840152604081015161010084015260600151610120830152565b816101408201520191613116565b9081600f0b91820361324857565b91610180936138df61390e9273ffffffffffffffffffffffffffffffffffffffff61371d9a9895168652602086019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08601526020820151900b60e0850152604081015161010085015260600151610120840152565b610140820152816101608201520191613116565b929593945f9573ffffffffffffffffffffffffffffffffffffffff85163314613a6a57875f6040860151135f146139fc576104008616613965575b505050505050565b6139f0969897506139dd926139e9969594926139b1926040519687957f5a2a81000000000000000000000000000000000000000000000000000000000060208801523360248801613861565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612ed8565b6002821615159161492c565b809261494c565b915f808080808061395d565b94939291906101008516613a1257505050505050565b6139f0969850859750613a5e92916139b1916139e9976040519687957f8db2b6520000000000000000000000000000000000000000000000000000000060208801523360248801613861565b6001821615159161492c565b505f955050505050565b608081161580613b26575b613afc57604081161580613b1a575b613afc5761040081161580613b0e575b613afc5761010081161580613b02575b613afc5773ffffffffffffffffffffffffffffffffffffffff8116613adc575062ffffff1662800000141590565b613fff161590811591613aed575090565b62800000915062ffffff161490565b50505f90565b50600181161515613aae565b50600281161515613a9e565b50600481161515613a8e565b50600881161515613a7f565b6280000062ffffff821614613b4a5761371d8161375c565b505f90565b73ffffffffffffffffffffffffffffffffffffffff1680613b6f57504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa90811561257d575f91613bb7575090565b90506020813d602011613bde575b81613bd260209383612ed8565b81010312610330575190565b3d9150613bc5565b9190915f8382019384129112908015821691151617610dad57565b6020830151955f9586959194913373ffffffffffffffffffffffffffffffffffffffff851614613dea5760808416613c3b575b5050505050565b613d23926139b1613d1d92613d09946040519586947f575e24b4000000000000000000000000000000000000000000000000000000006020870152336024870152613cd3604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560e487015260208101516101048701526040015173ffffffffffffffffffffffffffffffffffffffff16610124860152565b610140610144850152610164840191613116565b82613fe2565b916060835103613dc2576040015162ffffff166280000014613db6575b600816613d51575b80808080613c34565b604001519250608083901d600f0b8015613d4857613d72905f861295613be6565b9315613dae575f84135b613d86575f613d48565b7ffa0b71d6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f8412613d7c565b60608201519350613d40565b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f965086955050505050565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff831317610dad57565b9196959394929473ffffffffffffffffffffffffffffffffffffffff83163314613fd5578460801d94600f0b938860408516613efd575b50505050505f9481600f0b15801590613ef1575b613e95575b5050509190565b613ecc9395505f60208201511290511515145f14613ed4576fffffffffffffffffffffffffffffffff169060801b175b809361494c565b5f8080613e8e565b906fffffffffffffffffffffffffffffffff169060801b17613ec5565b5082600f0b1515613e89565b613fb9613fc5946139b1611a6595613fcb999895613f9e613cd3966040519788967fb47b2fb1000000000000000000000000000000000000000000000000000000006020890152336024890152604488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8c610144850152610160610164850152610184840191613116565b6004821615159161492c565b90613df7565b5f80808088613e75565b5050505050909150905f90565b9190915f80602085519501948582855af11561407e5750604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e602084511091821561404a575b5050613dc257565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f80614042565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d73ffffffffffffffffffffffffffffffffffffffff604051947f319d54c300000000000000000000000000000000000000000000000000000000865216600485015260406024850152806044850152805f606486013e011660640190fd5b908160801b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70010000000000000000000000000000000084099282808510940393808503948584111561033057146141ba5770010000000000000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393847001000000000000000000000000000000001115610330571461423a57700100000000000000000000000000000000910990828211900360801b910360801c1790565b50505060801c90565b818102907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83820990828083109203918083039283620f4240111561033057146142c2577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c010000000000000000000000001115610330571461433f576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c0100000000000000000000000084099282808510940393808503948584111561033057146141ba576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395868511156103305714614491579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b919060020b9060020b908181076144c75705908160081d5f52602052600160ff60405f2092161b8154189055565b601c906044926040519163d4d8f3e683526020830152604082015201fd5b60020b908160ff1d82810118620d89e8811161482b5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018916002811661480f575b600481166147f3575b600881166147d7575b601081166147bb575b6020811661479f575b60408116614783575b60808116614767575b610100811661474b575b610200811661472f575b6104008116614713575b61080081166146f7575b61100081166146db575b61200081166146bf575b61400081166146a3575b6180008116614687575b62010000811661466b575b620200008116614650575b620400008116614635575b620800001661461c575b5f126145f5575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff046145ee565b6b048a170391f7dc42444e8fa290910260801c906145e7565b6d2216e584f5fa1ea926041bedfe9890920260801c916145dd565b916e5d6af8dedb81196699c329225ee6040260801c916145d2565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916145c7565b916f31be135f97d08fd981231505542fcfa60260801c916145bc565b916f70d869a156d2a1b890bb3df62baf32f70260801c916145b2565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916145a8565b916fd097f3bdfd2022b8845ad8f792aa58250260801c9161459e565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614594565b916ff3392b0822b70005940c7a398e4b70f30260801c9161458a565b916ff987a7253ac413176f2b074cf7815e540260801c91614580565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91614576565b916ffe5dee046a99a2a811c461f1969c30530260801c9161456c565b916fff2ea16466c96a3843ec78b326b528610260801c91614563565b916fff973b41fa98c081472e6896dfb254c00260801c9161455a565b916fffcb9843d60f6159c9db58835c9266440260801c91614551565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91614548565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161453f565b916ffff97272373d413259a46990580e213a0260801c91614536565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b905f83600f0b125f1461488c57614882925f036fffffffffffffffffffffffffffffffff1691615c21565b5f81126132485790565b6148a8926fffffffffffffffffffffffffffffffff1691615bc6565b5f8112613248575f0390565b905f83600f0b125f146148df57614882925f036fffffffffffffffffffffffffffffffff1691615d18565b6148a8926fffffffffffffffffffffffffffffffff1691615c61565b906fffffffffffffffffffffffffffffffff90600f0b911601908160801c61491f57565b6393dafdf15f526004601cfd5b9061493691613fe2565b9015613b4a576040815103613dc2576040015190565b61496f906149618360801d8260801d03613853565b92600f0b90600f0b03613853565b6fffffffffffffffffffffffffffffffff169060801b1790565b73fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d83011611614cce5777ffffffffffffffffffffffffffffffffffffffff000000008160201b16806fffffffffffffffffffffffffffffffff811160071b90811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c9060ff821160031b91821c92600f841160021b93841c94600160038711811b96871c1196171717171717179060808210155f14614cc4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8182011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c67800000000000000016907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800160401b1717171717171717171717171717693627a301d71055774c85027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f14614c815750905090565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff614cb5846144e5565b1611614cbf575090565b905090565b81607f031b614a99565b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b8115614d1a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9190915f604051614d5781612ea0565b5f815260208101905f8252604081015f815260608201965f885260808301965f885260a08401975f895284998854906020850151159a6fffffffffffffffffffffffffffffffff60038c0154169384928d155f14615bb7575f610fff8660b81c169b5b60408a01518c52528473ffffffffffffffffffffffffffffffffffffffff168099528460a01c60020b90528c155f14615bac5760018c0154905b5252608084015162400000811615615b9d5762bfffff16614e148161375c565b61ffff8816615b7757945b855f60408701511297620f424062ffffff83161480615b6f575b615b4757604087015115615b315750508a615ad157606085019073ffffffffffffffffffffffffffffffffffffffff82511681811015615a9a5750505173ffffffffffffffffffffffffffffffffffffffff166401000276a38110615a6f57505b60405160805260e060805101608051811067ffffffffffffffff82111761085d576040525f608051525f602060805101525f604060805101525f606060805101525f6080805101525f60a060805101525f60c060805101525b8a51158015615a32575b6158e55773ffffffffffffffffffffffffffffffffffffffff60408c0151166080515260608b015160020b845160020b90815f818307129105038b155f1461578c5760ff8116918160020b60081d60010b5f5260058c0160205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60018086011b0190541691821592831593845f1461575757610330577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761894817f07060605060205040602030205040301060502050303040105050304000000006f8421084210842108cc6318c6db6d54be60ff946fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c861060031b1792831c1c601f161a1790031660020b900360020b0260020b5b905b15156040608051015260020b8060206080510152131561572a575b620d89e86020608051015160020b121561571a575b8973ffffffffffffffffffffffffffffffffffffffff6150aa6020608051015160020b6144e5565b1680606060805101528c73ffffffffffffffffffffffffffffffffffffffff60408201511673ffffffffffffffffffffffffffffffffffffffff606089015116906fffffffffffffffffffffffffffffffff60a08401511692519262ffffff8b169473ffffffffffffffffffffffffffffffffffffffff60ff8815168583101885831802851816831015935f86125f1461554a5786620f4240039161515183885f03614243565b861561552b57615170858760ff8d151686861018868618028618615c61565b975b8882106154525750508160ff73ffffffffffffffffffffffffffffffffffffffff9a15168183101891180218958691620f424082145f14615443575050845b935b1561543557916151c292615c21565b905b60c0608051015260a060805101526080805101521660408c015285155f146153f75760a060805101515f8112613248578b51038b5261520f60808051015160c06080510151906130a4565b5f81126132485760208c018051918203918213600116610dad57525b61ffff87166153c4575b6fffffffffffffffffffffffffffffffff60a08c015116806153a4575b5073ffffffffffffffffffffffffffffffffffffffff60408c01511673ffffffffffffffffffffffffffffffffffffffff606060805101511681145f146153665750604060805101516152bd575b60ff8a15166020608051015160020b0360020b60608c0152614ef3565b89615342576fffffffffffffffffffffffffffffffff61532960808d015160028c01545b6020608051015160020b60020b5f5260048d0160205260405f2091600183019081549003905560028201908154900390555460801d8d8d15615334575b60a0015183166148fb565b1660a08c01526152a0565b5f91909103600f0b9061531e565b6fffffffffffffffffffffffffffffffff6153298c608060018d01549101516152e1565b73ffffffffffffffffffffffffffffffffffffffff6080515116810361538d575b50614ef3565b61539690614989565b60020b60608c01525f615387565b6153b49060c06080510151614100565b60808c019081510190525f615252565b96620f424060808051015161ffff89169060c06080510151010204908160c060805101510360c060805101520196615235565b60808051015160c06080510151015f8112613248578b51018b5260a060805101515f81126132485761542e60208d01918251613be6565b905261522b565b61543e92615d18565b6151c2565b61544d9187615dbf565b6151b1565b975098505050508094501581151761551e5773ffffffffffffffffffffffffffffffffffffffff9482156154ba5761548b908583615e5e565b935b8480828486156154ab576154a092615c61565b8095015f03936151b3565b916154b592615bc6565b6154a0565b6154f6906154f1908781116154fc576154e9906fffffffffffffffffffffffffffffffff88169060601b614d10565b8784166130a4565b615ef2565b9361548d565b615519906fffffffffffffffffffffffffffffffff881690614348565b6154e9565b634f2461b85f526004601cfd5b6155448560ff8c15168585101885851802851888615bc6565b97615172565b91969395949386156156fb5761556f888560ff84151686861018868618028618615c21565b945b8581106155d657509173ffffffffffffffffffffffffffffffffffffffff97918160ff6155c396951516818310189118021880965b156155c857916155b592615c61565b809380620f42400391615dbf565b6151c4565b6155d192615bc6565b6155b5565b945050505081851582151761551e5784156156d15773ffffffffffffffffffffffffffffffffffffffff81116156785760601b6fffffffffffffffffffffffffffffffff86168082061515910401905b73ffffffffffffffffffffffffffffffffffffffff8116958287111561566b5773ffffffffffffffffffffffffffffffffffffffff6155c393819803165b80966155a6565b634323a5555f526004601cfd5b6fffffffffffffffffffffffffffffffff86166156a3816c01000000000000000000000000846143fa565b918115614d1a576c0100000000000000000000000090096156c5575b90615626565b600101806156bf575f80fd5b90856156f66155c39373ffffffffffffffffffffffffffffffffffffffff9884615de8565b615664565b6157148860ff8315168585101885851802851886615d18565b94615571565b620d89e860206080510152615082565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186020608051015261506d565b50507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276189360020b900360020b0260020b615050565b600101908160020b908260ff16928260081d60010b5f5260058d016020527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160ff60405f2093161b011990541691821592831593845f146158ac57610330577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276189481600160ff931901167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f6101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff860260f81c161b60f71c1692831c63d76453e004161a17031660020b0160020b0260020b5b90615052565b505060ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276189481031660020b0160020b0260020b6158a6565b90919996989397929550606087015160a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff60408a0151169216171782556fffffffffffffffffffffffffffffffff60a0870151168091036159ed575b5081156159de57600260808601519101555b15146159c1576159a7604061599b6020850151613853565b92015183519003613853565b6fffffffffffffffffffffffffffffffff169060801b1793565b6040015181516159d19103613853565b6159a76020830151613853565b60016080860151910155615983565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000006003830154161760038201555f615971565b5073ffffffffffffffffffffffffffffffffffffffff60408c01511673ffffffffffffffffffffffffffffffffffffffff60608601511614614efd565b7f9e4d7cc7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f7c9c6e8f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606085019073ffffffffffffffffffffffffffffffffffffffff82511681811115615a9a5750505173ffffffffffffffffffffffffffffffffffffffff1673fffd8963efd1fc6a506488495d951d5263988d26811015615a6f5750614e9a565b9a509a50505050975050505050505f925f929190565b7f96206246000000000000000000000000000000000000000000000000000000005f5260045ffd5b508815614e39565b62ffffff168061ffff891602620f424080820615159104019061ffff8916010394614e1f565b508060d01c62ffffff16614e14565b60028c015490614df4565b5f610fff8660c41c169b614dba565b6fffffffffffffffffffffffffffffffff6c010000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff80600195169116038060ff1d90810118931692615c1881856142ce565b93091515160190565b6fffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff8061371d9594169116038060ff1d9081011891166142ce565b9073ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff831611615d12575b73ffffffffffffffffffffffffffffffffffffffff8216928315615d06577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615cfa948185169403169160601b16615dbf565b90808206151591040190565b62bfc9215f526004601cfd5b90615c96565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821611615db9575b73ffffffffffffffffffffffffffffffffffffffff8116918215615d065761371d937bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615db4948185169403169160601b166143fa565b614d10565b90615d4c565b929190615dcd8282866143fa565b938215614d1a5709615ddb57565b9060010190811561033057565b91908115615e59577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff9160601b169216918282029183838311918404141615615e4c5761371d926154f192820391615dbf565b63f5c787f15f526004601cfd5b505090565b90918015615eec5773ffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffff000000000000000000000000819460601b16921680820281615eae8483614d10565b14615ed4575b5090615ec3615ec89284614d10565b6130a4565b80820615159104011690565b8301838110615eb4579150615ee892615dbf565b1690565b50905090565b9073ffffffffffffffffffffffffffffffffffffffff82169182036132485756fea2646970667358221220869bd0bb084561b6548d25f7df7705a61a4ab603a2e434d0334613bc910ea31364736f6c634300081a0033","sourceMap":"4729:12013:35:-:0;;;;;;;;;;;;;-1:-1:-1;;4729:12013:35;;;;-1:-1:-1;;;;;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4729:12013:35;;-1:-1:-1;;;;;;4729:12013:35;1165:10:36;4729:12013:35;;;;;;;;;1075:40:27;-1:-1:-1;;1075:40:27;1187::36;;724:4:34;705:24;;4729:12013:35;;;;;;1187:40:36;4729:12013:35;;;;;705:24:34;4729:12013:35;;;;;;;-1:-1:-1;4729:12013:35;;;;;;-1:-1:-1;4729:12013:35;;;;;-1:-1:-1;4729:12013:35","linkReferences":{}},"deployedBytecode":{"object":"0x60a0806040526004361015610012575f80fd5b5f3560e01c908162fdd58e14612d7f5750806301ffc9a714612cc0578063095bcdb614612c165780630b0d9c0914612b8a57806311da60b414612b2f578063156e29f614612a7f5780631e2eaeaf14612a45578063234266d7146127ce5780632d7713891461270c57806335fd631a146126985780633dd45adb14612634578063426a8493146125b057806348c8949114612325578063527596511461220d578063558a729714612136578063598af9e71461209e5780635a6bcfda146115e2578063695c5bf514610f3f5780637e87ce7d14610e0257806380f0b44c14610ce15780638161b87414610be95780638da5cb5b14610b9957806397e8cd4e14610b365780639bf6645f14610ae9578063a584119414610aa8578063b6363cf214610a17578063dbd035ff146109c1578063f02de3b214610970578063f135baaa14610936578063f2fde38b1461088a578063f3cd914c146104ff578063f5298aca146103345763fe99049a14610186575f80fd5b346103305760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576101bd612de9565b6101c5612e0c565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885961027973ffffffffffffffffffffffffffffffffffffffff80606435951693843314158061030d575b610287575b845f52600460205260405f20875f5260205260405f2061023a878254613097565b90551693845f52600460205260405f20865f5260205260405f2061025f8282546130a4565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600560205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036102da575b5050610219565b6102e391613097565b855f52600560205260405f208333165f5260205260405f20885f5260205260405f20555f866102d3565b50845f52600360205260405f208233165f5260205260ff60405f20541615610214565b5f80fd5b346103305761034236612e2f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f9516956103bb6103b38661322a565b339089613270565b169233841415806104a0575b6103f2575b8385526004602052604085208686526020526040852061025f828254613097565b0390a4005b83855260056020526040852073ffffffffffffffffffffffffffffffffffffffff33168652602052604085208686526020526040852054817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610459575b50506103cc565b61046291613097565b84865260056020526040862073ffffffffffffffffffffffffffffffffffffffff331687526020526040862087875260205260408620558681610452565b5083855260036020526040852073ffffffffffffffffffffffffffffffffffffffff3316865260205260ff604086205416156103c7565b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610330576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761053836612f2b565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261033057604051906060820182811067ffffffffffffffff82111761085d5760405260a4358015158103610330578252602082019060c435825260e4359073ffffffffffffffffffffffffffffffffffffffff8216820361033057604084019182526101043567ffffffffffffffff8111610330576105e1903690600401612ff7565b9290937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576106136135dd565b51156108355760a0822092835f52600660205260405f209061063482613644565b60808401958482828a8a5173ffffffffffffffffffffffffffffffffffffffff169361065f94613c01565b90949195606088015160020b968b511515915173ffffffffffffffffffffffffffffffffffffffff1691604051986106968a612ebc565b895260208901526040880152606087015262ffffff166080860152885115155f149862ffffff6107b7986106ec6107a49860209d6108155773ffffffffffffffffffffffffffffffffffffffff8b511695614d47565b9492968291926107e8575b505073ffffffffffffffffffffffffffffffffffffffff6040850151169360606fffffffffffffffffffffffffffffffff60a08301511691015160020b90604051958860801d600f0b875288600f0b60208801526040870152606086015260808501521660a08301527f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c03393a38673ffffffffffffffffffffffffffffffffffffffff8a5116613e3e565b809491946107bf575b5050823391613720565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6107e19251169083613720565b84806107ad565b73ffffffffffffffffffffffffffffffffffffffff165f5260018f5260405f209081540190558e806106f7565b73ffffffffffffffffffffffffffffffffffffffff8e8c01511695614d47565b7fbe8b8507000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fffffffffffffffffffffffff00000000000000000000000000000000000000006108e2612de9565b73ffffffffffffffffffffffffffffffffffffffff5f549161090782841633146130b1565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004355c5f5260205ff35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b34610330576109cf36613025565b6040519160408360208152836020820152019160051b8301916020806040850193925b8335548152019101908483821015610a0e5750602080916109f2565b60408186030190f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a4e612de9565b73ffffffffffffffffffffffffffffffffffffffff610a6b612e0c565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610ae7610ae2612de9565b613154565b005b3461033057610af736613025565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c8152019101908483821015610a0e575060208091610b1a565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff610b82612de9565b165f526001602052602060405f2054604051908152f35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610c20612de9565b610c28612e0c565b9060443573ffffffffffffffffffffffffffffffffffffffff600254163303610cb9576020926107b79180610cb1575073ffffffffffffffffffffffffffffffffffffffff81165f526001845260405f20549283915b73ffffffffffffffffffffffffffffffffffffffff81165f526001865260405f20610caa848254613097565b9055613378565b928391610c7e565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610d18612de9565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757335f90815273ffffffffffffffffffffffffffffffffffffffff8216602052604090205c610d6e60243561322a565b600f0b908103610dda577fffffffffffffffffffffffffffffffff800000000000000000000000000000008114610dad57610ae79133915f0390613270565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b7fbda73abf000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610e3a36612f2b565b610e42612f19565b9073ffffffffffffffffffffffffffffffffffffffff600254163303610cb9576103e9610fff831610623e900062fff0008416101615610f0e57602060a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9922092835f526006825260405f20610eb881613644565b805479ffffff00000000000000000000000000000000000000000000008360b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617905562ffffff60405191168152a2005b62ffffff827fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b346103305760e07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610f7736612f2b565b60a4359073ffffffffffffffffffffffffffffffffffffffff82168083036103305760c43567ffffffffffffffff811161033057610fb9903690600401612ff7565b90610fc26135dd565b6060840193845160020b617fff81136115b75750845160020b6001811261158c575073ffffffffffffffffffffffffffffffffffffffff81511692602082019373ffffffffffffffffffffffffffffffffffffffff855116908181101561155e5750506080820173ffffffffffffffffffffffffffffffffffffffff81511695604084019661105762ffffff89511682613a74565b15611533575061106c62ffffff885116613b32565b91805173ffffffffffffffffffffffffffffffffffffffff811690813303611470575b505060a08520955f73ffffffffffffffffffffffffffffffffffffffff6002541680611312575b50875f52600660205260405f2090815473ffffffffffffffffffffffffffffffffffffffff166112ea5773ffffffffffffffffffffffffffffffffffffffff7fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d64389860a09860209f98839662ffffff96859661114e7cffffff00000000000000000000000000000000000000000000000000009d614989565b9c8d9460d01b169079ffffff00000000000000000000000000000000000000000000008f76ffffff00000000000000000000000000000000000000008f9188901b16179160b81b16171790558851908a868316928333036111e8575b5050505050505116995116995116995160020b91511690604051998a528a8a01526040890152606088015260020b95866080820152a4604051908152f35b611000166111f7575b816111aa565b6112ae6112da926112df96604051966020947fa910f80f00000000000000000000000000000000000000000000000000000000899687015233602487015261128c604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60e486015260020b610104850152610120610124850152610144840191613116565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612ed8565b613fe2565b508f8881808a6111f1565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b90505a7f0000000000000000000000000000000000000000000000000000000000000000809110611448575f8091604051938260208601917f553bfc370000000000000000000000000000000000000000000000000000000083526113c58d602489019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a487526113d460c488612ed8565b81965193f160203d141680611435575b80611427575b8061140c575b156114045762ffffff600191165b906110b6565b505f806113fe565b506103e9610fff821610623e900062fff000831610166113f0565b5062ffffff811681146113ea565b60405191503d5f833e5f825192526113e4565b7f1ee49702000000000000000000000000000000000000000000000000000000005f5260045ffd5b6120001661147f575b8061108f565b61152c90604051907f3440d82000000000000000000000000000000000000000000000000000000000602083015233602483015261150a604483018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8460e48301526101006101048301526112da826112ae61012482018a8d613116565b508a611479565b7fe65af6a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f6e6c9830000000000000000000000000000000000000000000000000000000005f5260045260245260445ffd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b34610330576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761161b36612f2b565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610330576040519061165282612e84565b60a4358060020b810361033057825260c4358060020b810361033057602083015260e43560408301526101043560608301526101243567ffffffffffffffff8111610330576116a5903690600401612ff7565b92907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576116d66135dd565b60a0832093845f52600660205260405f20906116f182613644565b608085015173ffffffffffffffffffffffffffffffffffffffff811690813303611fc5575b5050835160020b92602085015160020b966117346040870151613853565b95606088015160020b9860608201516040519a6117508c612ea0565b338c528860208d01528260408d015289600f0b60608d015260808c015260a08b01525f9080881215611f8e577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188812611f6257620d89e88113611f3757604051986117ba8a612e84565b5f8a525f60208b01525f60408b01525f60608b015280600f0b611c87575b60048801988060020b5f528960205260405f20998360020b5f5260205260405f20895460a01c60020b8281125f14611c35575060028060018d0154600184015490039c015491015490039c5b60a073ffffffffffffffffffffffffffffffffffffffff8251169101519060405191602683015284600683015282600383015281525f603a600c83012091816040820152816020820152525f526006890160205260405f20986fffffffffffffffffffffffffffffffff8a54169a83600f0b155f14611bd8578b15611bb0576118e760409f6119c59c6118e1916119d79f5b60018301956118d960026118cd848a5485036141c1565b950192835485036141c1565b96555561322a565b9161322a565b6fffffffffffffffffffffffffffffffff169060801b179b5f84600f0b12611b46575b5082600f0b611a0f575b5050505061193b61192c8960801d8360801d01613853565b9189600f0b90600f0b01613853565b6fffffffffffffffffffffffffffffffff169060801b1791815160020b90602083015160020b8b8401516060850151918d5194855260208501528c84015260608301527ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec60803393a38773ffffffffffffffffffffffffffffffffffffffff608082015116613922565b809491946119e3575b50833391613720565b82519182526020820152f35b611a099073ffffffffffffffffffffffffffffffffffffffff6080840151169083613720565b856119ce565b809192939450548060a01c60020b9073ffffffffffffffffffffffffffffffffffffffff16908381125f14611a775750505091611a6591611a5f611a55611a6a956144e5565b91600f0b926144e5565b906148b4565b613853565b60801b5b8a808080611914565b948091939295125f14611b12576fffffffffffffffffffffffffffffffff92611acf611a65611ae594611abc611a65600396611ab68b600f0b916144e5565b876148b4565b93611aca89600f0b926144e5565b614857565b84169060801b17940192600f0b828454166148fb565b167fffffffffffffffffffffffffffffffff00000000000000000000000000000000825416179055611a6e565b9150611b2f935091611b29611a55611a65946144e5565b90614857565b6fffffffffffffffffffffffffffffffff16611a6e565b808f9151611b86575b0151611b5c575b8e61190a565b611b81848260049160020b5f52016020525f6002604082208281558260018201550155565b611b56565b611bab848460049160020b5f52016020525f6002604082208281558260018201550155565b611b4f565b7faefeb924000000000000000000000000000000000000000000000000000000005f5260045ffd5b6118e760409f6119c59c6118e1916119d79f6fffffffffffffffffffffffffffffffff611c088a600f0b836148fb565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008454161783556118b6565b909a908413611c5b5760028060018d0154600184015490039c015491015490039c611824565b99600260018b015460018d01549003600183015490039b81808d0154910154900391015490039c611824565b8860020b5f5260048801602052886fffffffffffffffffffffffffffffffff60405f20805490611ce1838316928d611cc288600f0b866148fb565b9415968787871615141597611f08575b505086600f0b9060801d613df7565b60801b8383161790551660208c01528a528160020b5f526004880160205260405f208054906fffffffffffffffffffffffffffffffff8216611d2684600f0b826148fb565b901592836fffffffffffffffffffffffffffffffff831615141593611ee1575b84600f0b9060801d600f0b03916f7fffffffffffffffffffffffffffffff83137fffffffffffffffffffffffffffffffff80000000000000000000000000000000841217610dad57826fffffffffffffffffffffffffffffffff935060801b8383161790551660608c015260408b0152898c5f83600f0b1215611e09575b5051611def575b60408a0151156117d857611dea60808d015160020b8360058b01614499565b6117d8565b611e0460808d015160020b8a60058b01614499565b611dcb565b60016fffffffffffffffffffffffffffffffff602060808294015160020b940151169280807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761805028180620d89e80502030501810416809111611eb5576fffffffffffffffffffffffffffffffff60608c01511611611e8957898c611dc4565b507fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b897fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b8b5460a01c60020b8613611d465760018c0154600184015560028c01546002840155611d46565b815460a01c60020b1215611f1d575b8f611cd2565b80600160029201546001860155015460028401558d611f17565b7f1ad777f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b877fd5e2f7ab000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b87604491604051917fc4433ed500000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b5f604087015113808091612091575b156120265750506040517f259982e500000000000000000000000000000000000000000000000000000000602082015261201d916112da826112ae86898b8d3360248701613799565b505b8680611716565b159081612083575b5061203a575b5061201f565b6040517f21d0ee7000000000000000000000000000000000000000000000000000000000602082015261207c916112da826112ae86898b8d3360248701613799565b5086612034565b61020091501615158861202e565b5061080082161515611fd4565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576120d5612de9565b73ffffffffffffffffffffffffffffffffffffffff6120f2612e0c565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761216d612de9565b602435908115158092036103305773ffffffffffffffffffffffffffffffffffffffff90335f52600360205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761224536612f2b565b61224d612f19565b906280000062ffffff60408301511614801590612301575b6122d95760a0906122758361375c565b205f52600660205260405f209061228b82613644565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1660d09190911b7cffffff000000000000000000000000000000000000000000000000000016179055005b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff608082015116331415612265565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043567ffffffffffffffff811161033057612374903690600401612ff7565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c61258857612400915f9160017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d60405193849283927f91dd7346000000000000000000000000000000000000000000000000000000008452602060048501526024840191613116565b038183335af190811561257d575f916124d5575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c6124ad5760406020915f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835194859381855280519182918282880152018686015e5f85828601015201168101030190f35b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90503d805f833e6124e68183612ed8565b8101906020818303126103305780519067ffffffffffffffff8211610330570181601f820112156103305780519067ffffffffffffffff821161085d576040519261255960207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612ed8565b8284526020838301011161033057815f9260208093018386015e8301015281612414565b6040513d5f823e3d90fd5b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305773ffffffffffffffffffffffffffffffffffffffff6125d336612e2f565b91929092335f52600560205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612666612de9565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576107b76020916134fb565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576024356004356040519160408360208152826020820152019060051b8301916001602060408501935b83548152019101908483821015610a0e575060206001916126f0565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043573ffffffffffffffffffffffffffffffffffffffff81168091036103305761277e73ffffffffffffffffffffffffffffffffffffffff5f541633146130b1565b807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b34610330576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761280736612f2b565b60c4359060a43560e43567ffffffffffffffff81116103305761282e903690600401612ff7565b9190937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576128606135dd565b60a084205f52600660205260405f209461287986613644565b6080850194855173ffffffffffffffffffffffffffffffffffffffff8116908133036129ed575b50506fffffffffffffffffffffffffffffffff6003880154169586156129c5576020976128cc8661322a565b5f036128d78661322a565b5f036fffffffffffffffffffffffffffffffff169060801b1797866129ac575b85612991575b505061290a338884613720565b519273ffffffffffffffffffffffffffffffffffffffff841693843303612936575b8888604051908152f35b601016612944575b8061292c565b612985956112da936112ae926040519788957fe1b4af69000000000000000000000000000000000000000000000000000000008d880152336024880161368a565b5082808080808061293e565b61299d60029187614100565b910190815401905588806128fd565b6129b68188614100565b600183019081540190556128f7565b7fa74f97ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b6020166129fb575b806128a0565b6040517fb6a8b0fa000000000000000000000000000000000000000000000000000000006020820152612a3e916112da826112ae8a888a8c8a336024880161368a565b50876129f5565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057600435545f5260205ff35b3461033057612a8d36612e2f565b907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f941695612b0c612aff8761322a565b8603600f0b339089613270565b16938484526004602052604084208685526020526040842061025f8282546130a4565b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75760206107b7336134fb565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612bc1612de9565b612bc9612e0c565b604435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757610ae792612c11612c048461322a565b5f03600f0b339083613270565b613378565b346103305773ffffffffffffffffffffffffffffffffffffffff612c3936612e2f565b91929092335f52600460205260405f20845f5260205260405f20612c5e848254613097565b90551690815f52600460205260405f20835f5260205260405f20612c838282546130a4565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288599181908101610279565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361033057807f01ffc9a70000000000000000000000000000000000000000000000000000000060209214908115612d55575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482612d4a565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760209073ffffffffffffffffffffffffffffffffffffffff612dce612de9565b165f526004825260405f206024355f52825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126103305760043573ffffffffffffffffffffffffffffffffffffffff8116810361033057906024359060443590565b6080810190811067ffffffffffffffff82111761085d57604052565b60c0810190811067ffffffffffffffff82111761085d57604052565b60a0810190811067ffffffffffffffff82111761085d57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761085d57604052565b60a4359062ffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126103305760405190612f6282612ebc565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361033057815260243573ffffffffffffffffffffffffffffffffffffffff8116810361033057602082015260443562ffffff811681036103305760408201526064358060020b81036103305760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036103305760800152565b9181601f840112156103305782359167ffffffffffffffff8311610330576020838186019501011161033057565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103305760043567ffffffffffffffff811161033057826023820112156103305780600401359267ffffffffffffffff84116103305760248460051b83010111610330576024019190565b91908203918211610dad57565b91908201809211610dad57565b156130b857565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b73ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c166132025773ffffffffffffffffffffffffffffffffffffffff81169081156131fe576131b790613b4f565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d565b5050565b7f996caf65000000000000000000000000000000000000000000000000000000005f5260045ffd5b6f8000000000000000000000000000000081101561324857600f0b90565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190600f0b918215613373576132a6919073ffffffffffffffffffffffffffffffffffffffff8092165f521660205260405f2090565b6132b2815c9283613be6565b80915d61332357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d5b565b1561332a57565b60017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d565b505050565b90919073ffffffffffffffffffffffffffffffffffffffff811690816134165750505f80808093855af1156133aa5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d604051937f8549db59000000000000000000000000000000000000000000000000000000008552600485015260406024850152806044850152805f606486013e011660640190fd5b60205f60448194968260409573ffffffffffffffffffffffffffffffffffffffff988751998a947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af13d15601f3d1160018551141617169282815282602082015201521561348f5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d604051937fb12c5f9c000000000000000000000000000000000000000000000000000000008552600485015260406024850152806044850152805f606486013e011660640190fd5b7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c919073ffffffffffffffffffffffffffffffffffffffff8316613550576133219034935b61354a8561322a565b90613270565b346135b5576133219061358c7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c61358786613b4f565b613097565b935f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d613541565b7f19d245cf000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361361c57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5473ffffffffffffffffffffffffffffffffffffffff161561366257565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b91926137056101209473ffffffffffffffffffffffffffffffffffffffff61371d999794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c083015260e0820152816101008201520191613116565b90565b9073ffffffffffffffffffffffffffffffffffffffff6020613321949361374f85848351168660801d90613270565b01511690600f0b90613270565b62ffffff16620f4240811161376e5750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9061371d95936138166101609473ffffffffffffffffffffffffffffffffffffffff61384594168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08501526020820151900b60e0840152604081015161010084015260600151610120830152565b816101408201520191613116565b9081600f0b91820361324857565b91610180936138df61390e9273ffffffffffffffffffffffffffffffffffffffff61371d9a9895168652602086019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08601526020820151900b60e0850152604081015161010085015260600151610120840152565b610140820152816101608201520191613116565b929593945f9573ffffffffffffffffffffffffffffffffffffffff85163314613a6a57875f6040860151135f146139fc576104008616613965575b505050505050565b6139f0969897506139dd926139e9969594926139b1926040519687957f5a2a81000000000000000000000000000000000000000000000000000000000060208801523360248801613861565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612ed8565b6002821615159161492c565b809261494c565b915f808080808061395d565b94939291906101008516613a1257505050505050565b6139f0969850859750613a5e92916139b1916139e9976040519687957f8db2b6520000000000000000000000000000000000000000000000000000000060208801523360248801613861565b6001821615159161492c565b505f955050505050565b608081161580613b26575b613afc57604081161580613b1a575b613afc5761040081161580613b0e575b613afc5761010081161580613b02575b613afc5773ffffffffffffffffffffffffffffffffffffffff8116613adc575062ffffff1662800000141590565b613fff161590811591613aed575090565b62800000915062ffffff161490565b50505f90565b50600181161515613aae565b50600281161515613a9e565b50600481161515613a8e565b50600881161515613a7f565b6280000062ffffff821614613b4a5761371d8161375c565b505f90565b73ffffffffffffffffffffffffffffffffffffffff1680613b6f57504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa90811561257d575f91613bb7575090565b90506020813d602011613bde575b81613bd260209383612ed8565b81010312610330575190565b3d9150613bc5565b9190915f8382019384129112908015821691151617610dad57565b6020830151955f9586959194913373ffffffffffffffffffffffffffffffffffffffff851614613dea5760808416613c3b575b5050505050565b613d23926139b1613d1d92613d09946040519586947f575e24b4000000000000000000000000000000000000000000000000000000006020870152336024870152613cd3604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560e487015260208101516101048701526040015173ffffffffffffffffffffffffffffffffffffffff16610124860152565b610140610144850152610164840191613116565b82613fe2565b916060835103613dc2576040015162ffffff166280000014613db6575b600816613d51575b80808080613c34565b604001519250608083901d600f0b8015613d4857613d72905f861295613be6565b9315613dae575f84135b613d86575f613d48565b7ffa0b71d6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f8412613d7c565b60608201519350613d40565b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f965086955050505050565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff831317610dad57565b9196959394929473ffffffffffffffffffffffffffffffffffffffff83163314613fd5578460801d94600f0b938860408516613efd575b50505050505f9481600f0b15801590613ef1575b613e95575b5050509190565b613ecc9395505f60208201511290511515145f14613ed4576fffffffffffffffffffffffffffffffff169060801b175b809361494c565b5f8080613e8e565b906fffffffffffffffffffffffffffffffff169060801b17613ec5565b5082600f0b1515613e89565b613fb9613fc5946139b1611a6595613fcb999895613f9e613cd3966040519788967fb47b2fb1000000000000000000000000000000000000000000000000000000006020890152336024890152604488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8c610144850152610160610164850152610184840191613116565b6004821615159161492c565b90613df7565b5f80808088613e75565b5050505050909150905f90565b9190915f80602085519501948582855af11561407e5750604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e602084511091821561404a575b5050613dc257565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f80614042565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d73ffffffffffffffffffffffffffffffffffffffff604051947f319d54c300000000000000000000000000000000000000000000000000000000865216600485015260406024850152806044850152805f606486013e011660640190fd5b908160801b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff70010000000000000000000000000000000084099282808510940393808503948584111561033057146141ba5770010000000000000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393847001000000000000000000000000000000001115610330571461423a57700100000000000000000000000000000000910990828211900360801b910360801c1790565b50505060801c90565b818102907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83820990828083109203918083039283620f4240111561033057146142c2577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c010000000000000000000000001115610330571461433f576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c0100000000000000000000000084099282808510940393808503948584111561033057146141ba576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395868511156103305714614491579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b919060020b9060020b908181076144c75705908160081d5f52602052600160ff60405f2092161b8154189055565b601c906044926040519163d4d8f3e683526020830152604082015201fd5b60020b908160ff1d82810118620d89e8811161482b5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018916002811661480f575b600481166147f3575b600881166147d7575b601081166147bb575b6020811661479f575b60408116614783575b60808116614767575b610100811661474b575b610200811661472f575b6104008116614713575b61080081166146f7575b61100081166146db575b61200081166146bf575b61400081166146a3575b6180008116614687575b62010000811661466b575b620200008116614650575b620400008116614635575b620800001661461c575b5f126145f5575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff046145ee565b6b048a170391f7dc42444e8fa290910260801c906145e7565b6d2216e584f5fa1ea926041bedfe9890920260801c916145dd565b916e5d6af8dedb81196699c329225ee6040260801c916145d2565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916145c7565b916f31be135f97d08fd981231505542fcfa60260801c916145bc565b916f70d869a156d2a1b890bb3df62baf32f70260801c916145b2565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916145a8565b916fd097f3bdfd2022b8845ad8f792aa58250260801c9161459e565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614594565b916ff3392b0822b70005940c7a398e4b70f30260801c9161458a565b916ff987a7253ac413176f2b074cf7815e540260801c91614580565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91614576565b916ffe5dee046a99a2a811c461f1969c30530260801c9161456c565b916fff2ea16466c96a3843ec78b326b528610260801c91614563565b916fff973b41fa98c081472e6896dfb254c00260801c9161455a565b916fffcb9843d60f6159c9db58835c9266440260801c91614551565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91614548565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161453f565b916ffff97272373d413259a46990580e213a0260801c91614536565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b905f83600f0b125f1461488c57614882925f036fffffffffffffffffffffffffffffffff1691615c21565b5f81126132485790565b6148a8926fffffffffffffffffffffffffffffffff1691615bc6565b5f8112613248575f0390565b905f83600f0b125f146148df57614882925f036fffffffffffffffffffffffffffffffff1691615d18565b6148a8926fffffffffffffffffffffffffffffffff1691615c61565b906fffffffffffffffffffffffffffffffff90600f0b911601908160801c61491f57565b6393dafdf15f526004601cfd5b9061493691613fe2565b9015613b4a576040815103613dc2576040015190565b61496f906149618360801d8260801d03613853565b92600f0b90600f0b03613853565b6fffffffffffffffffffffffffffffffff169060801b1790565b73fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d83011611614cce5777ffffffffffffffffffffffffffffffffffffffff000000008160201b16806fffffffffffffffffffffffffffffffff811160071b90811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c9060ff821160031b91821c92600f841160021b93841c94600160038711811b96871c1196171717171717179060808210155f14614cc4577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8182011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c67800000000000000016907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800160401b1717171717171717171717171717693627a301d71055774c85027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f14614c815750905090565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff614cb5846144e5565b1611614cbf575090565b905090565b81607f031b614a99565b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b8115614d1a570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b9190915f604051614d5781612ea0565b5f815260208101905f8252604081015f815260608201965f885260808301965f885260a08401975f895284998854906020850151159a6fffffffffffffffffffffffffffffffff60038c0154169384928d155f14615bb7575f610fff8660b81c169b5b60408a01518c52528473ffffffffffffffffffffffffffffffffffffffff168099528460a01c60020b90528c155f14615bac5760018c0154905b5252608084015162400000811615615b9d5762bfffff16614e148161375c565b61ffff8816615b7757945b855f60408701511297620f424062ffffff83161480615b6f575b615b4757604087015115615b315750508a615ad157606085019073ffffffffffffffffffffffffffffffffffffffff82511681811015615a9a5750505173ffffffffffffffffffffffffffffffffffffffff166401000276a38110615a6f57505b60405160805260e060805101608051811067ffffffffffffffff82111761085d576040525f608051525f602060805101525f604060805101525f606060805101525f6080805101525f60a060805101525f60c060805101525b8a51158015615a32575b6158e55773ffffffffffffffffffffffffffffffffffffffff60408c0151166080515260608b015160020b845160020b90815f818307129105038b155f1461578c5760ff8116918160020b60081d60010b5f5260058c0160205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60018086011b0190541691821592831593845f1461575757610330577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761894817f07060605060205040602030205040301060502050303040105050304000000006f8421084210842108cc6318c6db6d54be60ff946fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c861060031b1792831c1c601f161a1790031660020b900360020b0260020b5b905b15156040608051015260020b8060206080510152131561572a575b620d89e86020608051015160020b121561571a575b8973ffffffffffffffffffffffffffffffffffffffff6150aa6020608051015160020b6144e5565b1680606060805101528c73ffffffffffffffffffffffffffffffffffffffff60408201511673ffffffffffffffffffffffffffffffffffffffff606089015116906fffffffffffffffffffffffffffffffff60a08401511692519262ffffff8b169473ffffffffffffffffffffffffffffffffffffffff60ff8815168583101885831802851816831015935f86125f1461554a5786620f4240039161515183885f03614243565b861561552b57615170858760ff8d151686861018868618028618615c61565b975b8882106154525750508160ff73ffffffffffffffffffffffffffffffffffffffff9a15168183101891180218958691620f424082145f14615443575050845b935b1561543557916151c292615c21565b905b60c0608051015260a060805101526080805101521660408c015285155f146153f75760a060805101515f8112613248578b51038b5261520f60808051015160c06080510151906130a4565b5f81126132485760208c018051918203918213600116610dad57525b61ffff87166153c4575b6fffffffffffffffffffffffffffffffff60a08c015116806153a4575b5073ffffffffffffffffffffffffffffffffffffffff60408c01511673ffffffffffffffffffffffffffffffffffffffff606060805101511681145f146153665750604060805101516152bd575b60ff8a15166020608051015160020b0360020b60608c0152614ef3565b89615342576fffffffffffffffffffffffffffffffff61532960808d015160028c01545b6020608051015160020b60020b5f5260048d0160205260405f2091600183019081549003905560028201908154900390555460801d8d8d15615334575b60a0015183166148fb565b1660a08c01526152a0565b5f91909103600f0b9061531e565b6fffffffffffffffffffffffffffffffff6153298c608060018d01549101516152e1565b73ffffffffffffffffffffffffffffffffffffffff6080515116810361538d575b50614ef3565b61539690614989565b60020b60608c01525f615387565b6153b49060c06080510151614100565b60808c019081510190525f615252565b96620f424060808051015161ffff89169060c06080510151010204908160c060805101510360c060805101520196615235565b60808051015160c06080510151015f8112613248578b51018b5260a060805101515f81126132485761542e60208d01918251613be6565b905261522b565b61543e92615d18565b6151c2565b61544d9187615dbf565b6151b1565b975098505050508094501581151761551e5773ffffffffffffffffffffffffffffffffffffffff9482156154ba5761548b908583615e5e565b935b8480828486156154ab576154a092615c61565b8095015f03936151b3565b916154b592615bc6565b6154a0565b6154f6906154f1908781116154fc576154e9906fffffffffffffffffffffffffffffffff88169060601b614d10565b8784166130a4565b615ef2565b9361548d565b615519906fffffffffffffffffffffffffffffffff881690614348565b6154e9565b634f2461b85f526004601cfd5b6155448560ff8c15168585101885851802851888615bc6565b97615172565b91969395949386156156fb5761556f888560ff84151686861018868618028618615c21565b945b8581106155d657509173ffffffffffffffffffffffffffffffffffffffff97918160ff6155c396951516818310189118021880965b156155c857916155b592615c61565b809380620f42400391615dbf565b6151c4565b6155d192615bc6565b6155b5565b945050505081851582151761551e5784156156d15773ffffffffffffffffffffffffffffffffffffffff81116156785760601b6fffffffffffffffffffffffffffffffff86168082061515910401905b73ffffffffffffffffffffffffffffffffffffffff8116958287111561566b5773ffffffffffffffffffffffffffffffffffffffff6155c393819803165b80966155a6565b634323a5555f526004601cfd5b6fffffffffffffffffffffffffffffffff86166156a3816c01000000000000000000000000846143fa565b918115614d1a576c0100000000000000000000000090096156c5575b90615626565b600101806156bf575f80fd5b90856156f66155c39373ffffffffffffffffffffffffffffffffffffffff9884615de8565b615664565b6157148860ff8315168585101885851802851886615d18565b94615571565b620d89e860206080510152615082565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186020608051015261506d565b50507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276189360020b900360020b0260020b615050565b600101908160020b908260ff16928260081d60010b5f5260058d016020527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160ff60405f2093161b011990541691821592831593845f146158ac57610330577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276189481600160ff931901167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f6101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff860260f81c161b60f71c1692831c63d76453e004161a17031660020b0160020b0260020b5b90615052565b505060ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276189481031660020b0160020b0260020b6158a6565b90919996989397929550606087015160a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff60408a0151169216171782556fffffffffffffffffffffffffffffffff60a0870151168091036159ed575b5081156159de57600260808601519101555b15146159c1576159a7604061599b6020850151613853565b92015183519003613853565b6fffffffffffffffffffffffffffffffff169060801b1793565b6040015181516159d19103613853565b6159a76020830151613853565b60016080860151910155615983565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000006003830154161760038201555f615971565b5073ffffffffffffffffffffffffffffffffffffffff60408c01511673ffffffffffffffffffffffffffffffffffffffff60608601511614614efd565b7f9e4d7cc7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f7c9c6e8f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606085019073ffffffffffffffffffffffffffffffffffffffff82511681811115615a9a5750505173ffffffffffffffffffffffffffffffffffffffff1673fffd8963efd1fc6a506488495d951d5263988d26811015615a6f5750614e9a565b9a509a50505050975050505050505f925f929190565b7f96206246000000000000000000000000000000000000000000000000000000005f5260045ffd5b508815614e39565b62ffffff168061ffff891602620f424080820615159104019061ffff8916010394614e1f565b508060d01c62ffffff16614e14565b60028c015490614df4565b5f610fff8660c41c169b614dba565b6fffffffffffffffffffffffffffffffff6c010000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff80600195169116038060ff1d90810118931692615c1881856142ce565b93091515160190565b6fffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff8061371d9594169116038060ff1d9081011891166142ce565b9073ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff831611615d12575b73ffffffffffffffffffffffffffffffffffffffff8216928315615d06577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615cfa948185169403169160601b16615dbf565b90808206151591040190565b62bfc9215f526004601cfd5b90615c96565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821611615db9575b73ffffffffffffffffffffffffffffffffffffffff8116918215615d065761371d937bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615db4948185169403169160601b166143fa565b614d10565b90615d4c565b929190615dcd8282866143fa565b938215614d1a5709615ddb57565b9060010190811561033057565b91908115615e59577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff9160601b169216918282029183838311918404141615615e4c5761371d926154f192820391615dbf565b63f5c787f15f526004601cfd5b505090565b90918015615eec5773ffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffff000000000000000000000000819460601b16921680820281615eae8483614d10565b14615ed4575b5090615ec3615ec89284614d10565b6130a4565b80820615159104011690565b8301838110615eb4579150615ee892615dbf565b1690565b50905090565b9073ffffffffffffffffffffffffffffffffffffffff82169182036132485756fea2646970667358221220869bd0bb084561b6548d25f7df7705a61a4ab603a2e434d0334613bc910ea31364736f6c634300081a0033","sourceMap":"4729:12013:35:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6668:13;4729:12013;6668:13;;;4729:12013;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;1928:50:30;;4729:12013:35;;;;;;1594:10:30;;;:20;;:55;;;4729:12013:35;1590:237:30;;4729:12013:35;;;;;;;;;;;;;;;;;;1837:31:30;4729:12013:35;;;1837:31:30;:::i;:::-;4729:12013:35;;;;;;;;;;;;;;;;;;;;;1879:33:30;4729:12013:35;;;1879:33:30;:::i;:::-;4729:12013:35;;;;;1594:10:30;4729:12013:35;;;;;;;;;;;;;;;;;1928:50:30;;;;4729:12013:35;;;;;;;1590:237:30;4729:12013:35;;;1683:9:30;4729:12013:35;;;;;1594:10:30;;4729:12013:35;-1:-1:-1;4729:12013:35;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;1734:28:30;1745:17;1734:28;;1730:86;;1590:237;;;;;1730:86;1800:16;;;:::i;:::-;4729:12013:35;;;1683:9:30;4729:12013:35;;;;;1594:10:30;;4729:12013:35;-1:-1:-1;4729:12013:35;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;1730:86:30;;;;1594:55;4729:12013:35;;;;1619:10:30;4729:12013:35;;;;;1594:10:30;;4729:12013:35;-1:-1:-1;4729:12013:35;;;;;-1:-1:-1;4729:12013:35;;;1618:31:30;1594:55;;4729:12013:35;;;;;;;;;;;:::i;:::-;837:84:56;;5543:18:35;5539:59;;3435:52:30;;4729:12013:35;;;;;14489:17;14508:10;14489:17;;;:::i;:::-;14508:10;;;;:::i;:::-;4729:12013;14508:10;;651:14:31;;;:43;;;4729:12013:35;647:269:31;;4729:12013:35;;;;;;;;;;;;;;;;;;3388:31:30;4729:12013:35;;;3388:31:30;:::i;3435:52::-;;;;4729:12013:35;647:269:31;4729:12013:35;;;736:9:31;4729:12013:35;;;;;;14508:10;4729:12013;;;;;;;;;;;;;;;;;781:36:31;800:17;781:36;;777:129;;647:269;;;;;777:129;867:24;;;:::i;:::-;4729:12013:35;;;736:9:31;4729:12013:35;;;;;;14508:10;4729:12013;;;;;;;;;;;;;;;;;777:129:31;;;;651:43;4729:12013:35;;;;670:10:31;4729:12013:35;;;;;;14508:10;4729:12013;;;;;;;;;;;669:25:31;651:43;;5539:59:35;5563:22;4729:12013;667:96:49;4729:12013:35;;667:96:49;4729:12013:35;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:56;;;;;5543:18:35;5539:59;;1174:76:34;;:::i;:::-;4729:12013:35;9599:27;9595:77;;4729:12013;357:89:112;;4729:12013:35;;;;16723:6;4729:12013;;;;;9762:25;;;;:::i;:::-;9971:9;;;4729:12013;;;;;;;;;9971:43;;;;:::i;:::-;10290:15;;;;4729:12013;10290:15;;4729:12013;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10239:302;;4729:12013;;10239:302;;4729:12013;;10239:302;;4729:12013;;;9971:9;10239:302;;4729:12013;;;;;10559:49;;;4729:12013;11057:10;10559:49;11458:17;10715:70;10559:49;4729:12013;10559:49;;;4729:12013;5274:25;;4729:12013;10559:49;11458:17;:::i;:::-;11534:18;;;;;;11530:74;;10559:49;11787:18;;4729:12013;;11787:18;;4729:12013;;11807:15;4729:12013;;;11807:15;;4729:12013;;11824:10;;4729:12013;;;;;;2052:83:109;;9971:9:35;2052:83:109;2241:89;4729:12013:35;;;2241:89:109;;;4729:12013:35;;;;;;;;;;;;9971:9;4729:12013;;;;;;;5274:25;11719:134;4729:12013;11741:10;11719:134;;4729:12013;;;;;10715:70;:::i;:::-;1676:48:109;;;;10896:109:35;;10559:49;11741:10;;;;11057;;:::i;:::-;4729:12013;;;;;;10896:109;4729:12013;10986:18;4729:12013;;;10986:18;;;:::i;:::-;10896:109;;;;11530:74;4729:12013;;;;;;;;;;;;;271:35:50;4729:12013:35;;11530:74;;;;10559:49;4729:12013;10595:13;;;5274:25;4729:12013;10559:49;11458:17;:::i;9595:77::-;9628:31;4729:12013;667:96:49;4729:12013:35;;667:96:49;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;756:44:27;4729:12013:35;;;764:10:27;:19;756:44;:::i;:::-;4729:12013:35;;;;;;;;764:10:27;1424:42;4729:12013:35;1424:42:27;;4729:12013:35;;;;;;;;;;;;;;422:99:33;4729:12013:35;422:99:33;4729:12013:35;;422:99:33;4729:12013:35;;;;;;;;;;;;;1009:51:36;4729:12013:35;;;;;;;;;;;;;;;:::i;:::-;;1664:936:32;;4729:12013:35;1664:936:32;;;;;;;;;;;;;;;;;;4729:12013:35;1664:936:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;4729:12013:35;1664:936:32;;;;;;4729:12013:35;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;697:88:30;4729:12013:35;;;;;;697:88:30;4729:12013:35;-1:-1:-1;4729:12013:35;;;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;658:936:33;;4729:12013:35;658:936:33;;;;;;;;;;;;;;;;;;4729:12013:35;658:936:33;;;;;;;;;;;;;;;;;;;;;;;;;;;4729:12013:35;;;;;;;;;;;;;;:::i;:::-;;;;897:71:36;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;2162:21:36;4729:12013:35;;2140:10:36;:44;2136:85;;4729:12013:35;;2401:15:36;;2251:11;;;4729:12013:35;;;;;;;;;;;;;2250:54:36;;;;4729:12013:35;;;;;;;;;;;2314:48:36;4729:12013:35;;;2314:48:36;:::i;:::-;4729:12013:35;;2401:15:36;:::i;2250:54::-;;;;;;2136:85;2186:22;4729:12013:35;667:96:49;4729:12013:35;;667:96:49;4729:12013:35;;;;;;;;;;;;;:::i;:::-;837:84:56;;5543:18:35;5539:59;;13589:10;547:238:47;;;;;;;;;;;;956:57;13708:17:35;4729:12013;;13708:17;:::i;:::-;4729:12013;;13739:22;;;13735:77;;4729:12013;;;;;13862:10;13589;;4729:12013;;;13862:10;;:::i;4729:12013::-;;;;;;;;;;13735:77;13763:36;4729:12013;667:96:49;4729:12013:35;;667:96:49;4729:12013:35;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;1629:21:36;4729:12013:35;;1607:10:36;:44;1603:85;;1101:252:61;;;;;;;;;;;1702:36:36;1698:97;;4729:12013:35;;1895:38:36;357:89:112;;4729:12013:35;;;;16723:6;4729:12013;;;;;4750:25:59;;;:::i;:::-;4729:12013:35;;2855:254:114;;;;;;;;;4729:12013:35;;;;;;;5274:25;;1895:38:36;4729:12013:35;1698:97:36;4729:12013:35;937:176:49;1740:28:36;4729:12013:35;937:176:49;4729:12013:35;;937:176:49;;4729:12013:35;937:176:49;4729:12013:35;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1174:76:34;;;:::i;:::-;6439:15:35;;;4729:12013;;;;;1400:15:67;6439:34:35;;6435:96;;4729:12013;;;;;;6545:34;;6541:96;;5274:25;4729:12013;5274:25;;4729:12013;6668:13;;;;5274:25;4729:12013;5274:25;;4729:12013;887:51:111;;;;;6647:202:35;;6863:9;;;;;4729:12013;;;;6892:7;4729:12013;6892:7;;4729:12013;6863:37;4729:12013;;;;6863:37;;:::i;:::-;6862:38;6858:109;;4729:12013;6993:25;4729:12013;;;;6993:25;:::i;:::-;4729:12013;;;;;;8765:10:53;;;:27;8761:59;;4729:12013:35;357:89:112;;4729:12013:35;357:89:112;;7152:22:35;4729:12013;;;;;3249:44:36;3245:1577;;4729:12013:35;;;;;7192:6;6668:13;4729:12013;;;;;;;;1502:93:114;4368:80:59;;4729:12013:35;7537:101;4466:41:59;4729:12013:35;4466:41:59;6668:13:35;4466:41:59;;;;4729:12013:35;4466:41:59;;;;3217:178:114;4466:41:59;;:::i;:::-;3217:178:114;;;;;;2578:157;2855:254;2578:157;;;;;;;;2855:254;;;;;3217:178;;4729:12013:35;;;;;;;;;8765:10:53;;;:27;8761:59;;4729:12013:35;5274:25;;;;;;;4729:12013;5274:25;;4729:12013;;;;;;;;;;;;;;5274:25;;;;;;4729:12013;;5274:25;;4729:12013;6439:15;5274:25;;4729:12013;;;5274:25;;6863:9;5274:25;;4729:12013;7537:101;4729:12013;;;;;;8761:59:53;4729:12013:35;16279:29:53;9522:174;;8761:59;;;;9522:174;1383:7;9597:87;4729:12013:35;9583:102:53;4729:12013:35;;;9597:87:53;6668:13:35;9597:87:53;;;;;;;8765:10;9597:87;;;4729:12013:35;1383:7:53;;;;;4729:12013:35;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;1383:7;;;;4729:12013:35;;;1383:7:53;;;4729:12013:35;1383:7:53;;;;;;;;;;:::i;:::-;9597:87;;;;;;;;:::i;:::-;9583:102;:::i;:::-;;9522:174;;;;;;;4368:80:59;4404:31;4729:12013:35;667:96:49;4729:12013:35;;667:96:49;3245:1577:36;3539:9;;;3551:18;3539:30;;;3535:84;;4729:12013:35;;;;;3770:64:36;;6668:13:35;3770:64:36;;;;;;4729:12013:35;3770:64:36;;;;4729:12013:35;;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;4729:12013:35;;3770:64:36;;;4729:12013:35;3770:64:36;;:::i;:::-;3848:18;3880:637;;;;6668:13:35;3880:637:36;;;;;;3245:1577;4665:45;;;3245:1577;4665:104;;;3245:1577;4665:146;;;4729:12013:35;;;;4665:146:36;4640:171;3245:1577;;4665:146;;4729:12013:35;;4665:146:36;;:104;-1:-1:-1;1101:252:61;;;;;;;;;;;4665:104:36;;:45;4729:12013:35;;;;4677:32:36;;4665:45;;3880:637;4729:12013:35;3880:637:36;;-1:-1:-1;3880:637:36;4729:12013:35;3880:637:36;;4729:12013:35;3880:637:36;;;;;;3535:84;3571:35;4729:12013:35;667:96:49;4729:12013:35;;667:96:49;8761:59:53;4729:12013:35;16279:29:53;9081:170;;8761:59;;;;9081:170;9143:97;4729:12013:35;;;9157:82:53;;6668:13:35;9157:82:53;;;8765:10;9157:82;;;4729:12013:35;1320:7:53;;;;;4729:12013:35;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;1320:7;;;;;4729:12013:35;1320:7:53;;;;;9157:82;1320:7;;;;;;;;:::i;9143:97::-;;9081:170;;;6858:109:35;6902:34;4729:12013;937:176:49;4729:12013:35;937:176:49;;4729:12013:35;937:176:49;6647:202:35;6697:36;4729:12013;2861:260:49;4729:12013:35;2861:260:49;;;;4729:12013:35;2861:260:49;6541:96:35;6581:28;4729:12013;1284:143:49;4729:12013:35;1284:143:49;;4729:12013:35;1284:143:49;6435:96:35;6475:28;4729:12013;1284:143:49;4729:12013:35;1284:143:49;;4729:12013:35;1284:143:49;4729:12013:35;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:56;;;;5543:18:35;5539:59;;1174:76:34;;:::i;:::-;4729:12013:35;357:89:112;;4729:12013:35;;;;16723:6;4729:12013;;;;;8026:25;;;;:::i;:::-;4729:12013;8064:9;;4729:12013;;;;8765:10:53;;;:27;8761:59;;4729:12013:35;;;;;;;;;;;;;;;8418:32;4729:12013;;;;8418:32;:::i;:::-;8481:15;4729:12013;8481:15;;4729:12013;;;;;;;;;;;;;;:::i;:::-;8765:10:53;4729:12013:35;;8232:314;4729:12013;8232:314;;4729:12013;8232:314;4729:12013;8232:314;;4729:12013;;;;;8232:314;;4729:12013;;8232:314;;4729:12013;;8232:314;;4729:12013;;3926:22:59;;;;;3922:85;;881:7:67;4021:29:59;;4017:86;;1041:6:67;4117:29:59;;4113:86;;4729:12013:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;6562:1188:59;;4729:12013:35;;21799:10:59;;:21;4729:12013:35;;;;;;;;;;;21855:21:59;4729:12013:35;;;;;;;;;;;;;1682:98:114;4729:12013:35;1682:98:114;21962:23:59;;;21958:800;21962:23;;;22028:27;4729:12013:35;22028:27:59;4729:12013:35;22028:27:59;;4729:12013:35;;22058:27:59;;4729:12013:35;;;22126:27:59;;4729:12013:35;22156:27:59;;4729:12013:35;;;21958:800:59;;4729:12013:35;;5274:25;;4729:12013;8232:314;;4729:12013;2443:609:60;4729:12013:35;2443:609:60;;;;;;;16723:6:35;2443:609:60;;;;;;;;;;4729:12013:35;2443:609:60;;;;;;;4729:12013:35;2443:609:60;;;;4729:12013:35;2443:609:60;;;;4729:12013:35;;16723:6;7963:14:59;;4729:12013:35;;;;;;;;;;;;;;6566:19:59;3965:270:60;4729:12013:35;;;4064:14:60;;4060:67;;8322:20:59;4729:12013:35;3965:270:60;8980:66:35;3965:270:60;8300:20:59;3965:270:60;9320:10:35;3965:270:60;;4729:12013:35;4429:29:60;;4729:12013:35;4532:100:60;4729:12013:35;4390:100:60;4729:12013:35;;;;;4390:100:60;:::i;:::-;4571:29;;4729:12013:35;;;;;4532:100:60;:::i;:::-;4729:12013:35;;;8300:20:59;:::i;:::-;8322;;:::i;:::-;4729:12013:35;553:115:109;;4729:12013:35;553:115:109;;4729:12013:35;;;;;8436:18:59;8432:255;;3965:270:60;4729:12013:35;;;;8707:1774:59;;3965:270:60;785:220:109;;;;1049:15;1032;785:220;4729:12013:35;785:220:109;;4729:12013:35;785:220:109;;1032:15;:::i;:::-;785:220;;4729:12013:35;785:220:109;;4729:12013:35;785:220:109;;1049:15;:::i;:::-;4729:12013:35;553:115:109;;4729:12013:35;553:115:109;;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8807:103;4729:12013;8765:10:53;8807:103:35;;8064:9;4729:12013;;8064:9;;4729:12013;;8980:66;:::i;:::-;1676:48:109;;;;9157:109:35;;3965:270:60;8765:10:53;;;9320::35;;:::i;:::-;4729:12013;;;;;;;;;;9157:109;9247:18;8064:9;4729:12013;;8064:9;;4729:12013;;9247:18;;;:::i;:::-;9157:109;;;8707:1774:59;4729:12013:35;;;;;;;1682:98:114;4729:12013:35;1682:98:114;4729:12013:35;1682:98:114;1502:93;4729:12013:35;1502:93:114;8878:16:59;;;;8874:1597;8878:16;;;9245:38;;;;9190:171;9245:38;9285;9245;9190:182;9245:38;;:::i;:::-;4729:12013:35;;;9285:38:59;;:::i;:::-;9190:171;;:::i;:::-;:182;:::i;:::-;4729:12013:35;553:115:109;8874:1597:59;8707:1774;;;;;;8874:1597;9438:16;;;;;;;9434:1037;4729:12013:35;;;;;9675:135:59;:99;9864:54;4729:12013:35;9518:135:59;:99;2443:609:60;4729:12013:35;9562:38:59;4729:12013:35;;;9562:38:59;;:::i;:::-;9518:99;;:::i;:135::-;4729:12013:35;9705:38:59;4729:12013:35;;;9705:38:59;;:::i;:::-;9675:99;:::i;:135::-;553:115:109;;;4729:12013:35;553:115:109;;9887:14:59;;4729:12013:35;;;;;;;9864:54:59;:::i;:::-;4729:12013:35;;;;;;;;8874:1597:59;;9434:1037;10311:38;;10256:182;10311:38;;;10351;10311;10256:171;10311:38;;:::i;10351:::-;10256:171;;:::i;:182::-;4729:12013:35;553:115:109;8874:1597:59;;8432:255;4729:12013:35;;;;8474:91:59;;8432:255;4729:12013:35;;8582:91:59;;8432:255;;;;8582:91;8644:9;;;27694:10;27617:100;4729:12013:35;;-1:-1:-1;4729:12013:35;27694:10:59;4729:12013:35;;27687:23:59;4729:12013:35;;;;;;;;;;;;;;27617:100:59;8644:9;8582:91;;8474;8536:9;;;27694:10;27617:100;4729:12013:35;;-1:-1:-1;4729:12013:35;27694:10:59;4729:12013:35;;27687:23:59;4729:12013:35;;;;;;;;;;;;;;27617:100:59;8536:9;8474:91;;4060:67:60;4080:34;4729:12013:35;667:96:49;4729:12013:35;;667:96:49;3965:270:60;8322:20:59;4729:12013:35;;8980:66;4729:12013;8300:20:59;4729:12013:35;9320:10;4729:12013;;4175:49:60;4729:12013:35;;;4175:49:60;;:::i;:::-;4729:12013:35;;;;;;;;3965:270:60;;21958:800:59;22208:24;;;;-1:-1:-1;4729:12013:35;;;22275:27:59;4729:12013:35;22275:27:59;;4729:12013:35;;22305:27:59;;4729:12013:35;;;22373:27:59;;4729:12013:35;22403:27:59;;4729:12013:35;;;22204:554:59;21958:800;;22204:554;22512:25;4729:12013:35;;22512:25:59;;4729:12013:35;;22540:27:59;;4729:12013:35;;;;22570:27:59;;4729:12013:35;;;22658:25:59;;;;;4729:12013:35;22686:27:59;;4729:12013:35;;;22716:27:59;;4729:12013:35;;;22204:554:59;21958:800;;6562:1188;4729:12013:35;;;;;;23715:10:59;;4729:12013:35;;;23815:554:59;4729:12013:35;;;23815:554:59;;;25100:35;23815:554;;;4729:12013:35;;24401:60:59;4729:12013:35;;;24401:60:59;;:::i;:::-;24513:25;;4729:12013:35;;;;;24483:24:59;24482:57;;24550:357;;;6562:1188;25054:81;;4729:12013:35;;;23815:554:59;4729:12013:35;23815:554:59;25100:35;:::i;:::-;4729:12013:35;25145:696:59;4729:12013:35;;;25145:696:59;;;4729:12013:35;;;;;;;;;;;;;23715:10:59;;4729:12013:35;;;;;23815:554:59;;;;;;24401:60;4729:12013:35;;;24401:60:59;;:::i;:::-;24513:25;;4729:12013:35;;23815:554:59;4729:12013:35;;24483:24:59;24482:57;;24550:357;;;6562:1188;4729:12013:35;;;23815:554:59;4729:12013:35;23815:554:59;4729:12013:35;;;;;;;;;;;;;25054:81:59;23815:554;25054:81;25145:696;4729:12013:35;25145:696:59;4729:12013:35;;;25145:696:59;;;4729:12013:35;;;;;;;;;;;;;;;6957:19:59;;6953:508;;6562:1188;4729:12013:35;;7479:120:59;;6562:1188;4729:12013:35;;;;7616:120:59;6562:1188;7616:120;7698:18;4729:12013:35;8232:314;;4729:12013;;;7662:15:59;;;;7698:18;:::i;:::-;6562:1188;;7479:120;7561:18;4729:12013:35;8232:314;;4729:12013;;;7525:15:59;;;;7561:18;:::i;:::-;7479:120;;6953:508;4729:12013:35;23815:554:59;4729:12013:35;;8232:314;;;4729:12013;;;;;;;26824:370:59;;;881:7:67;26824:370:59;;;;1041:6:67;26824:370:59;;;;;;;4729:12013:35;7108:52:59;;;7104:159;;23815:554;4729:12013:35;;;;;7288:52:59;7284:159;;6953:508;;;;7284:159;1284:143:49;7368:30:59;4729:12013:35;1284:143:49;4729:12013:35;1284:143:49;;4729:12013:35;1284:143:49;7104:159:59;1284:143:49;7188:30:59;4729:12013:35;1284:143:49;4729:12013:35;1284:143:49;;4729:12013:35;1284:143:49;24550:357:59;4729:12013:35;;;1682:98:114;4729:12013:35;1682:98:114;24711:25:59;;24550:357;24707:190;4729:12013:35;24785:25:59;;4729:12013:35;;24756:26:59;;4729:12013:35;;24857:25:59;;4729:12013:35;;24828:26:59;;4729:12013:35;24550:357:59;;;4729:12013:35;;;1682:98:114;4729:12013:35;1682:98:114;-1:-1:-1;24711:25:59;24707:190;;24550:357;;;;24707:190;24785:25;4729:12013:35;;24785:25:59;;4729:12013:35;;24756:26:59;;4729:12013:35;24857:25:59;4729:12013:35;;24828:26:59;;4729:12013:35;24707:190:59;;;4113:86;4148:29;4729:12013:35;1284:143:49;4729:12013:35;1284:143:49;;4729:12013:35;1284:143:49;4017:86:59;1284:143:49;4052:29:59;4729:12013:35;1284:143:49;4729:12013:35;1284:143:49;;4729:12013:35;1284:143:49;3922:85:59;1945:251:49;;;4729:12013:35;1945:251:49;;3950:24:59;1945:251:49;;4729:12013:35;1945:251:49;;;;;;;;8761:59:53;4729:12013:35;;;;;10017:25:53;;;:74;;;8761:59;10013:409;;;-1:-1:-1;;4729:12013:35;;10121:78:53;4729:12013:35;10121:78:53;;;10107:93;;10121:78;4729:12013:35;10121:78:53;8765:10;;;;;10121:78;;;;:::i;10107:93::-;;10013:409;8761:59;;;;10013:409;10221:26;:78;;;;10013:409;10217:205;;;10013:409;;;;10217:205;4729:12013:35;;10329:81:53;4729:12013:35;10329:81:53;;;10315:96;;10329:81;4729:12013:35;10329:81:53;8765:10;;;;;10329:81;;;;:::i;10315:96::-;;10217:205;;;10221:78;4729:12013:35;10251:48:53;;16279:29;:34;;10221:78;;;10017:74;10046:45;4729:12013:35;16279:29:53;;:34;;10017:74;;4729:12013:35;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;880:108:30;4729:12013:35;;;;;;880:108:30;4729:12013:35;-1:-1:-1;4729:12013:35;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2355:10:30;;4729:12013:35;;2344:10:30;4729:12013:35;;;;;;;;-1:-1:-1;4729:12013:35;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;;;;;;;;2355:10:30;2403:43;4729:12013:35;2355:10:30;2403:43;;4729:12013:35;;;2464:4:30;4729:12013:35;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;14711:7;564:8:54;4729:12013:35;;14711:7;;4729:12013;;1391:24:54;14710:23:35;;:59;;;4729:12013;14706:142;;4729:12013;14857:24;;;;:::i;:::-;357:89:112;4729:12013:35;;14925:6;4729:12013;;;;;4984:25:59;;;;:::i;:::-;4729:12013:35;;3217:178:114;;;;;;;;;;4729:12013:35;;;14706:142;14785:39;4729:12013;667:96:49;4729:12013:35;;667:96:49;14710:59:35;14759:9;4729:12013;14759:9;;;4729:12013;;14737:10;:32;;14710:59;;4729:12013;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:56;;5750:60:35;;4729:12013;527:101:56;4729:12013:35;527:101:56;;837:84;527:101;4729:12013:35;;5961:48;;;;;4729:12013;5961:48;;4729:12013;;5961:48;;4729:12013;;;;;;:::i;:::-;5961:48;5977:10;;;5961:48;;;;;;;4729:12013;5961:48;;;4729:12013;622:89:57;;;6020:75:35;;4729:12013;;675:80:56;;837:84;675:80;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6020:75;6055:27;4729:12013;667:96:49;4729:12013:35;;667:96:49;5961:48:35;;;;;4729:12013;5961:48;;;;;;:::i;:::-;;;4729:12013;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5961:48;;;;4729:12013;;;;;;;;;5750:60;5773:24;4729:12013;667:96:49;4729:12013:35;;667:96:49;4729:12013:35;;;;;;;;:::i;:::-;2125:10:30;;;;;4729:12013:35;;2115:9:30;4729:12013:35;;;;;;;;-1:-1:-1;4729:12013:35;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;;;;;;;;2125:10:30;2174:41;4729:12013:35;2125:10:30;2174:41;;4729:12013:35;;;2233:4:30;4729:12013:35;;;;;;;;;;;;;:::i;:::-;837:84:56;;5543:18:35;5539:59;;13404:18;4729:12013;13404:18;;:::i;4729:12013::-;;;;;;;;;;;;;;;;656:871:32;;4729:12013:35;656:871:32;4729:12013:35;656:871:32;;;4729:12013:35;656:871:32;;;;;;;;;;4729:12013:35;;;656:871:32;;;;;;;;;;;;;;;;;;;;4729:12013:35;;656:871:32;;;4729:12013:35;;;;;;;;;;;;;;;;;;;;;756:44:27;4729:12013:35;;;;764:10:27;:19;756:44;:::i;:::-;4729:12013:35;;1372:34:36;4729:12013:35;;;1372:34:36;4729:12013:35;1421:49:36;4729:12013:35;1421:49:36;;4729:12013:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:56;;;;;5543:18:35;5539:59;;1174:76:34;;:::i;:::-;4729:12013:35;357:89:112;;4729:12013:35;;16723:6;4729:12013;;;;;12189:25;;;;:::i;:::-;12227:9;;;4729:12013;;;;;;8765:10:53;;;:27;8761:59;;4729:12013:35;20507:15:59;;4729:12013:35;20507:15:59;;;4729:12013:35;;20536:14:59;;;20532:66;;4729:12013:35;20729:18:59;;;;:::i;:::-;4729:12013:35;;20752:18:59;;;:::i;:::-;4729:12013:35;;;553:115:109;;12227:9:35;553:115:109;;20790:11:59;;20786:135;;4729:12013:35;20938:11:59;20934:135;;4729:12013:35;8765:10:53;;12378::35;8765::53;12378::35;;;:::i;:::-;4729:12013;;;;;8765:10:53;;;:27;8761:59;;4729:12013:35;;;;;;;;;8761:59:53;4729:12013:35;16279:29:53;16007:164;;8761:59;;;;16007:164;16064:96;4729:12013:35;16078:81:53;4729:12013:35;16078:81:53;4729:12013:35;;;16078:81:53;;;;;;;;8765:10;16078:81;;;;:::i;16064:96::-;;16007:164;;;;;;;;20934:135:59;20999:55;20969:26;20999:55;;;:::i;:::-;20969:26;;4729:12013:35;;;271:35:50;4729:12013:35;;20934:135:59;;;;20786;20851:55;;;;:::i;:::-;4729:12013:35;20821:26:59;;4729:12013:35;;;271:35:50;4729:12013:35;;20786:135:59;;20532:66;20552:33;4729:12013:35;667:96:49;4729:12013:35;;667:96:49;8761:59:53;4729:12013:35;16279:29:53;15578:166;;8761:59;;;;15578:166;4729:12013:35;;15650:82:53;4729:12013:35;15650:82:53;;;15636:97;;15650:82;4729:12013:35;15650:82:53;8765:10;;;;;;15650:82;;;;:::i;15636:97::-;;15578:166;;;4729:12013:35;;;;;;;;;;;;;411:99:32;4729:12013:35;411:99:32;4729:12013:35;;411:99:32;4729:12013:35;;;;;;;:::i;:::-;837:84:56;;;5543:18:35;5539:59;;3235:54:30;;4729:12013:35;;;;;14182:17;14202:10;14182:17;;;:::i;:::-;4729:12013;;;;14202:10;;;;:::i;:::-;4729:12013;;;;;;;;;;;;;;;;;;;3186:33:30;4729:12013:35;;;3186:33:30;:::i;4729:12013:35:-;;;;;;;;837:84:56;;5543:18:35;5539:59;;4729:12013;13227:19;13235:10;13227:19;:::i;4729:12013::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;837:84:56;;;5543:18:35;5539:59;;13072:6;13005:17;13025:10;13005:17;;;:::i;:::-;4729:12013;;;;13025:10;;;;:::i;:::-;13072:6;:::i;4729:12013::-;;;;;;;;:::i;:::-;1292:10:30;;;;;4729:12013:35;;;;;;;;;;;;;;;;1282:35:30;4729:12013:35;;;1282:35:30;:::i;:::-;4729:12013:35;;;;;;;;;;;;;;;;;;;;;1328:33:30;4729:12013:35;;;1328:33:30;:::i;:::-;4729:12013:35;;;;;1292:10:30;4729:12013:35;;;;;;;;;;1377:54:30;;4729:12013:35;;;;1377:54:30;4729:12013:35;;;;;;;;;;;;;;;;;;;;;;2762:25:30;4729:12013:35;;2762:25:30;;:100;;;;;4729:12013:35;;;;;;;;;;2762:100:30;4729:12013:35;2837:25:30;;;2762:100;;;4729:12013:35;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4729:12013:35;;;;;;;;;;;:::o;12500:256::-;4729:12013;902:65:48;;4729:12013:35;714:95:48;;4729:12013:35;;;4932:52:111;;;12597:32:35;;12656:24;;;:::i;:::-;1178:157:48;902:65;1178:157;;;12500:256:35:o;12597:32::-;12622:7;;:::o;714:95:48:-;763:22;-1:-1:-1;667:96:49;;-1:-1:-1;667:96:49;1780:168:62;1859:8;1854:13;;;1850:57;;4729:12013:35;;1780:168:62;:::o;1850:57::-;1869:25;667:96:49;;;;;15873:356:35;;;4729:12013;;15968:10;;;15964:23;;1351:30:47;;439:352;547:238;439:352;;547:238;;;;;;;;;439:352;;1351:30;1484:16;1392:76;;1484:16;;;:::i;:::-;1510:71;;;16079:9:35;;1271:180:57;;;;;;;16075:148:35;15873:356::o;16075:148::-;16154:13;16150:73;;15873:356::o;16150:73::-;763:180:57;;;;;;15873:356:35:o;15964:23::-;15980:7;;;:::o;1588:2706:111:-;;;;4729:12013:35;;;;4932:52:111;1885:19;;1920:163;;-1:-1:-1;1920:163:111;;;;;;;2196:8;2192:75;;1881:2407;1588:2706::o;2192:75::-;3449:551:49;;;;;;2206:35:111;3449:551:49;;;;;;;;;;;;;;;;;-1:-1:-1;3449:551:49;;;;;;;;;;1881:2407:111;2298:1774;-1:-1:-1;2298:1774:111;;;;;;;4729:12013:35;2298:1774:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4184:8;4180:97;;1881:2407;1588:2706::o;4180:97::-;3449:551:49;2298:1774:111;3449:551:49;2298:1774:111;3449:551:49;;4194:34:111;3449:551:49;;2298:1774:111;3449:551:49;;;2298:1774:111;;3449:551:49;;;;2298:1774:111;3449:551:49;;;;-1:-1:-1;3449:551:49;;;;;;;;;;14974:821:35;902:65:48;;;14974:821:35;4729:12013;;;15242:19;;15778:9;15284;;15238:490;;15761:15;;;:::i;:::-;15778:9;;:::i;15238:490::-;15328:9;15324:59;;15778:9;1424:65:48;15643:28:35;1424:65:48;;15598:24:35;;;:::i;:::-;15643:28;:::i;:::-;1023:57:48;4729:12013:35;902:65:48;1023:57;15238:490:35;;15324:59;15343:27;4729:12013;667:96:49;;4729:12013:35;667:96:49;968:137:34;4729:12013:35;1044:8:34;4729:12013:35;1035:4:34;1027:25;1023:75;;968:137::o;1023:75::-;1054:31;667:96:49;;;;;27273:157:59;4729:12013:35;1502:93:114;;27351:30:59;27347:76;;27273:157::o;27347:76::-;27383:27;-1:-1:-1;667:96:49;;-1:-1:-1;667:96:49;1830:6:53;;;;;;4729:12013:35;1830:6:53;;;;4729:12013:35;;;1830:6:53;;;;4729:12013:35;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;1830:6:53;;;;;;;;:::i;:::-;;:::o;16307:232:35:-;;4729:12013;16493:13;16525:6;16307:232;;16462:6;5274:25;;;;4729:12013;2052:83:109;;;16462:6:35;;:::i;:::-;16493:13;5274:25;4729:12013;2241:89:109;;;16525:6:35;;:::i;1846:122:54:-;4729:12013:35;;1123:7:54;1680:18;;1901:60;;1846:122;:::o;1901:60::-;1922:22;-1:-1:-1;937:176:49;;;;-1:-1:-1;937:176:49;1588:6:53;;;;;;;;4729:12013:35;1588:6:53;;4729:12013:35;;;1588:6:53;;;;4729:12013:35;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;1588;;;4729:12013:35;;;;1588:6:53;;;4729:12013:35;1588:6:53;;;;4729:12013:35;;1588:6:53;;;4729:12013:35;1588:6:53;;;;;;;4729:12013:35;1588:6:53;;;;;;4729:12013:35;1588:6:53;;;;;;;;;;:::i;1142:151:62:-;;4729:12013:35;;;1240:6:62;;;1236:50;;1142:151::o;1656:6:53:-;;;;;;;4729:12013:35;1656:6:53;;;;4729:12013:35;;;1656:6:53;;;;4729:12013:35;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;1656;1588;;4729:12013:35;;;;1656:6:53;;;4729:12013:35;1588:6:53;;;;4729:12013:35;;1588:6:53;;;4729:12013:35;1588:6:53;;;;;;;4729:12013:35;1588:6:53;;;;;;4729:12013:35;1588:6:53;1656;;;;4729:12013:35;1656:6:53;;;;;;;;:::i;10525:1403::-;;;;;4729:12013:35;;;;;10811:10:53;:27;10807:79;;10897:19;4729:12013:35;10930:21:53;;;4729:12013:35;10930:25:53;10926:996;4729:12013:35;;;;16279:29:53;;10971:451;;10926:996;;;;;;;10525:1403::o;10971:451::-;11384:23;4729:12013:35;;;;11144:84:53;4729:12013:35;11090:244:53;4729:12013:35;;;;11144:84:53;4729:12013:35;10930:21:53;4729:12013:35;11144:84:53;;;;;;;;10811:10;11144:84;;;;:::i;:::-;;;;;;;;;:::i;:::-;4729:12013:35;16279:29:53;;:34;;11090:244;;:::i;:::-;11384:23;;;:::i;:::-;10971:451;;;;;;;;;10926:996;11456:47;;;;;4729:12013:35;16279:29:53;;11452:460;;10926:996;;;;;;10525:1403::o;11452:460::-;11874:23;4729:12013:35;;;;;;11628:87:53;4729:12013:35;;11628:87:53;4729:12013:35;11574:250:53;4729:12013:35;10930:21:53;4729:12013:35;11628:87:53;;;;;;;;10811:10;11628:87;;;;:::i;:::-;4729:12013:35;16279:29:53;;:34;;11574:250;;:::i;10807:79::-;-1:-1:-1;4729:12013:35;;-1:-1:-1;;;;;10840:46:53:o;5460:1119::-;4729:12013:35;16279:29:53;;:34;;5678:91;;5460:1119;5674:109;;4729:12013:35;16279:29:53;;:34;;5797:89;;5460:1119;5793:107;;4729:12013:35;16279:29:53;;:34;;5914:107;;5460:1119;5910:158;;4729:12013:35;16279:29:53;;:34;;6094:129;;5460:1119;6077:169;;4729:12013:35;;;;;-1:-1:-1;4729:12013:35;;564:8:54;1391:24;6472:19:53;;5460:1119::o;6430:142::-;1248:13;6507:38;:42;;;;:64;;;6430:142;5460:1119;:::o;6507:64::-;564:8:54;4729:12013:35;;;;1391:24:54;5460:1119:53;:::o;6077:169::-;6234:12;;4729:12013:35;6234:12:53;:::o;6094:129::-;6162:61;4729:12013:35;16279:29:53;;:34;;6094:129;;5914:107;5963:58;4729:12013:35;16279:29:53;;:34;;5914:107;;5797:89;5837:49;4729:12013:35;16279:29:53;;:34;;5797:89;;5678:91;5719:50;4729:12013:35;16279:29:53;;:34;;5678:91;;2346:220:54;564:8;4729:12013:35;;;1391:24:54;2480:33;;2523:13;;;:::i;2480:33::-;2505:8;4729:12013:35;2505:8:54;:::o;4300:271:111:-;4729:12013:35;;4932:52:111;4388:19;;4430:21;;4423:28;:::o;4384:181::-;4729:12013:35;4489:65:111;4729:12013:35;;;4489:65:111;;;;4729:12013:35;4489:65:111;;4548:4;4489:65;;;4729:12013:35;4489:65:111;;;;;;;4729:12013:35;4489:65:111;;;4482:72;;:::o;4489:65::-;;;4729:12013:35;4489:65:111;;4729:12013:35;4489:65:111;;;;;;4729:12013:35;4489:65:111;;;:::i;:::-;;;4729:12013:35;;;;;4482:72:111;:::o;4489:65::-;;;-1:-1:-1;4489:65:111;;809:23:110;;;;;;;;;;;;;;;;;;;;;;;;:::o;12015:1867:53:-;12266:22;;;4729:12013:35;;;;;;12015:1867:53;;;12302:10;4729:12013:35;;;12302:27:53;12298:104;;4729:12013:35;16279:29:53;;12413:1463;;12015:1867;;;;;;:::o;12413:1463::-;12491:86;4729:12013:35;809:23:110;12506:70:53;4729:12013:35;809:23:110;4729:12013:35;;;12506:70:53;;;;12266:22;12506:70;;;12302:10;12506:70;;;4729:12013:35;809:23:110;;;;;4729:12013:35;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;809:23:110;;;4729:12013:35;;809:23:110;;;4729:12013:35;809:23:110;;;;;;;4729:12013:35;809:23:110;;;4729:12013:35;;809:23:110;;;4729:12013:35;809:23:110;;;;;;;;;;;;:::i;12506:70:53:-;12491:86;;:::i;:::-;4729:12013:35;12712:2:53;4729:12013:35;;12695:19:53;12691:66;;4729:12013:35;12919:7:53;4729:12013:35;;;564:8:54;1391:24;12915:61:53;;12413:1463;4729:12013:35;16279:29:53;13062:804;;12413:1463;;;;;;;13062:804;4729:12013:35;1117:87:58;;;-1:-1:-1;1714:6:53;2052:83:109;;;4729:12013:35;;13520:332:53;;13062:804;13520:332;13627:34;13589:16;4729:12013:35;13589:16:53;;13627:34;;:::i;:::-;13687:48;;;;4729:12013:35;13700:16:53;;13687:48;13683:151;;13520:332;13062:804;;13683:151;13763:35;4729:12013:35;667:96:49;;4729:12013:35;667:96:49;13687:48:53;4729:12013:35;13719:16:53;;13687:48;;12915:61;12712:2;841:82:58;;;;-1:-1:-1;12915:61:53;;12691:66;12716:28;4729:12013:35;667:96:49;;4729:12013:35;667:96:49;12298:104:53;-1:-1:-1;4729:12013:35;;-1:-1:-1;4729:12013:35;;-1:-1:-1;;;;;12331:71:53:o;4729:12013:35:-;;;;;;;;;;;;;;;;;;:::o;13968:1351:53:-;;;;;;;;4729:12013:35;;;14260:10:53;:27;14256:83;;2052::109;;;2241:89;;;14515:35:53;16279:29;4729:12013:35;16279:29:53;;14511:308;;13968:1351;14829:22;;;;;4729:12013:35;;;2241:89:109;4729:12013:35;14865:25:53;;;:52;;;13968:1351;14861:413;;13968:1351;15283:29;;;;13968:1351;:::o;14861:413::-;15242:21;14946:22;;;4729:12013:35;14946:22:53;;;4729:12013:35;14946:26:53;4729:12013:35;;;;14946:47:53;14945:199;;;;553:115:109;;;2052:83;553:115;;14945:199:53;14933:211;15242:21;;:::i;:::-;14861:413;;;;;14945:199;553:115:109;;;;2052:83;553:115;;14945:199:53;;14865:52;4729:12013:35;;2241:89:109;4729:12013:35;14894:23:53;;14865:52;;14511:308;14636:80;14590:218;4729:12013:35;;14590:207:53;4729:12013:35;14566:242:53;4729:12013:35;;;;;;1770:6:53;4729:12013:35;14636:80:53;;;;;;;;14260:10;14636:80;;;4729:12013:35;;;;;;1830:6:53;;;;;;4729:12013:35;;;1830:6:53;;;;;4729:12013:35;1830:6:53;;;4729:12013:35;;1830:6:53;;;;4729:12013:35;1830:6:53;;;5274:25:35;1830:6:53;;;;4729:12013:35;;1830:6:53;;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;;4729:12013:35;1830:6:53;4729:12013:35;;;;;;;;;;;;;;;;:::i;14636:80:53:-;4729:12013:35;16279:29:53;;:34;;14590:207;;:::i;:218::-;14566:242;;:::i;:::-;14511:308;;;;;;;14256:83;14289:50;;;;;;;;;4729:12013:35;14289:50:53;:::o;6754:1254::-;;;;-1:-1:-1;6875:116:53;;;;;;;;;;;;7085:8;7081:80;;7232:504;;;;;;;;;;;;;;;;;;6875:116;7232:504;;;-1:-1:-1;7232:504:53;;6875:116;4729:12013:35;;7866:18:53;:68;;;;;6754:1254;7862:140;;;;6754:1254::o;7866:68::-;576:85:58;;;4729:12013:35;;;;;;7888:46:53;;;-1:-1:-1;7866:68:53;;;;7081:80;3449:551:49;;;4729:12013:35;3449:551:49;;;7095:29:53;3449:551:49;;4729:12013:35;3449:551:49;;;;;;;;;;;;;;;-1:-1:-1;3449:551:49;;;;;;;;;;741:4141:52;;4729:12013:35;;;1347:147:52;;271:35:50;1347:147:52;;;;;;;;;;;;;1619:19;;;;4729:12013:35;;;1720:10:52;1716:177;;271:35:50;2224:95:52;;;4729:12013:35;;;;2716:31:52;2811:94;;;3776:1;4729:12013:35;3757:1:52;4729:12013:35;3756:21:52;4729:12013:35;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;3254:96:52;;;;4729:12013:35;3254:96:52;;;2391:145;;;;;;4729:12013:35;2391:145:52;;2977:82;3363:21;4729:12013:35;741:4141:52;:::o;1716:177::-;1750:98;;;;1865:13;:::o;741:4141::-;;4729:12013:35;;;1347:147:52;;;;;;;;;;;;;;;;1619:19;;271:35:50;1619:19:52;4729:12013:35;;;1720:10:52;1716:177;;271:35:50;2224:95:52;;2391:145;;;;;;2977:82;4729:12013:35;2391:145:52;;2977:82;;3363:21;741:4141;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;741:4141::-;4729:12013:35;;;1347:147:52;;;;;;;;;;;;;;;;1619:19;;1123:7:54;1619:19:52;4729:12013:35;;;1720:10:52;1716:177;;4729:12013:35;2224:95:52;1123:7:54;2224:95:52;;2391:145;;;;;;4729:12013:35;;2391:145:52;;2977:82;;3363:21;4729:12013:35;741:4141:52;:::o;1716:177::-;1750:98;;1123:7:54;1750:98:52;;;1865:13;:::o;741:4141::-;;4729:12013:35;;;1347:147:52;;;;;;;;;;;;;;;;1619:19;;348:27:51;1619:19:52;4729:12013:35;;;1720:10:52;1716:177;;348:27:51;2224:95:52;;2391:145;;;;;;4729:12013:35;;2391:145:52;;2977:82;;3363:21;741:4141;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;741:4141::-;;4729:12013:35;;;1347:147:52;;348:27:51;1347:147:52;;;;;;;;;;;;;1619:19;;;;4729:12013:35;;;1720:10:52;1716:177;;348:27:51;2224:95:52;;;4729:12013:35;;;;2716:31:52;2811:94;;;3776:1;4729:12013:35;3757:1:52;4729:12013:35;3756:21:52;4729:12013:35;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;3254:96:52;;;;4729:12013:35;3254:96:52;;;2391:145;;;;;;4729:12013:35;2391:145:52;;2977:82;3363:21;4729:12013:35;741:4141:52;:::o;:::-;;4729:12013:35;;;1347:147:52;;;;;;;;;;;;;;;;1619:19;;;;4729:12013:35;;;1720:10:52;1716:177;;2224:95;;;;4729:12013:35;;;;2716:31:52;2811:94;;;3776:1;4729:12013:35;3757:1:52;4729:12013:35;3756:21:52;4729:12013:35;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;;;;3776:1:52;4729:12013:35;;3254:96:52;;;;4729:12013:35;3254:96:52;;;2391:145;;;;;;4729:12013:35;2391:145:52;;2977:82;3363:21;4729:12013:35;741:4141:52;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;2108:1410:66:-;;;2509:1003;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2108:1410::o;2509:1003::-;;;;;;;;;;;;;;;;;;;;;2873:3767:67;3021:459;;;;;;;;;;1041:6;3498:35;;3494:78;;5897:727;3829:13;;3856:160;;;;;;;4033:13;3021:459;4033:13;;4029:83;;2873:3767;4140:3;4130:13;;4126:83;;2873:3767;4237:3;4227:13;;4223:83;;2873:3767;4334:4;4324:14;;4320:84;;2873:3767;4432:4;4422:14;;4418:84;;2873:3767;4530:4;4520:14;;4516:84;;2873:3767;3856:160;4618:14;;4614:84;;2873:3767;4726:5;4716:15;;4712:85;;2873:3767;4825:5;4815:15;;4811:85;;2873:3767;4924:5;4914:15;;4910:85;;2873:3767;5023:5;5013:15;;5009:85;;2873:3767;5122:6;5112:16;;5108:86;;2873:3767;5222:6;5212:16;;5208:86;;2873:3767;5322:6;5312:16;;5308:86;;2873:3767;5422:6;5412:16;;5408:86;;2873:3767;5522:7;5512:17;;5508:86;;2873:3767;5622:7;5612:17;;5608:85;;2873:3767;5721:7;5711:17;;5707:83;;2873:3767;5818:7;5808:17;5804:78;;2873:3767;-1:-1:-1;;5897:727:67;;2873:3767;5897:727;4432:4;5897:727;2873:3767;:::o;5897:727::-;;;;;5804:78;5849:25;4729:12013:35;;;3856:160:67;4729:12013:35;;5804:78:67;;5707:83;5752:30;4729:12013:35;;;3856:160:67;4729:12013:35;;5707:83:67;;5608:85;4729:12013:35;5653:32:67;4729:12013:35;3856:160:67;4729:12013:35;5608:85:67;;;5508:86;4729:12013:35;5553:33:67;4729:12013:35;3856:160:67;4729:12013:35;5508:86:67;;;5408;4729:12013:35;5452:34:67;4729:12013:35;3856:160:67;4729:12013:35;5408:86:67;;;5308;4729:12013:35;5352:34:67;4729:12013:35;3856:160:67;4729:12013:35;5308:86:67;;;5208;4729:12013:35;5252:34:67;4729:12013:35;3856:160:67;4729:12013:35;5208:86:67;;;5108;4729:12013:35;5152:34:67;4729:12013:35;3856:160:67;4729:12013:35;5108:86:67;;;5009:85;4729:12013:35;5052:34:67;4729:12013:35;3856:160:67;4729:12013:35;5009:85:67;;;4910;4729:12013:35;4953:34:67;4729:12013:35;3856:160:67;4729:12013:35;4910:85:67;;;4811;4729:12013:35;4854:34:67;4729:12013:35;3856:160:67;4729:12013:35;4811:85:67;;;4712;4729:12013:35;4755:34:67;4729:12013:35;3856:160:67;4729:12013:35;4712:85:67;;;4614:84;4729:12013:35;4656:34:67;4729:12013:35;3856:160:67;4729:12013:35;4614:84:67;;;4516;4729:12013:35;4558:34:67;4729:12013:35;3856:160:67;4729:12013:35;4516:84:67;;;4418;4729:12013:35;4460:34:67;4729:12013:35;3856:160:67;4729:12013:35;4418:84:67;;;4320;4729:12013:35;4362:34:67;4729:12013:35;3856:160:67;4729:12013:35;4320:84:67;;;4223:83;4729:12013:35;4264:34:67;4729:12013:35;3856:160:67;4729:12013:35;4223:83:67;;;4126;4729:12013:35;4167:34:67;4729:12013:35;3856:160:67;4729:12013:35;4126:83:67;;;4029;4729:12013:35;4070:34:67;4729:12013:35;3856:160:67;4729:12013:35;4029:83:67;;;3494:78;1284:143:49;3535:20:67;1284:143:49;;;;;;;13802:424:63;;14003:1;4729:12013:35;;;13991:13:63;:218;14003:1;;;14023:73;4729:12013:35;14003:1:63;4729:12013:35;;;14023:73:63;;:::i;:::-;14003:1;1557:5:62;;1553:49;;13802:424:63;:::o;13991:218::-;14127:71;4729:12013:35;;;14127:71:63;;:::i;:::-;14003:1;1557:5:62;;1553:49;;14003:1:63;4729:12013:35;13802:424:63;:::o;13029:::-;;13230:1;4729:12013:35;;;13218:13:63;:218;13230:1;;;13250:73;4729:12013:35;13230:1:63;4729:12013:35;;;13250:73:63;;:::i;13218:218::-;13354:71;4729:12013:35;;;13354:71:63;;:::i;382:370:55:-;;465:281;382:370;465:281;;;;;;;;;;;382:370::o;465:281::-;;;;;;;8148:484:53;;8289:20;8148:484;8289:20;:::i;:::-;8400:12;;8396:26;;8538:2;4729:12013:35;;8521:19:53;8517:66;;8538:2;1117:87:58;;8148:484:53;:::o;1070:396:109:-;1447:15;1070:396;1430:15;1183:220;;;;;;;1430:15;:::i;:::-;1183:220;;;;;;;1447:15;:::i;:::-;553:115;;;1183:220;553:115;;1070:396;:::o;7059:5619:67:-;2006:66;4729:12013:35;1586:10:67;;;4729:12013:35;7614:79:67;7610:168;;4729:12013:35;;7833:2:67;4729:12013:35;;2006:66:67;7911:180;;;;;;;;8104:164;;;;;;;;8281:156;;;;;;;;8450:152;;;;;;;;8615:150;4729:12013:35;8615:150:67;;;;;;;8778:149;;;;;;;;;8940;;8615:150;8940:149;;;;;;;9102:110;8104:164;;8281:156;8450:152;8615:150;8778:149;8940;9102:110;9230:10;9237:3;9230:10;;;9226:83;9237:3;;;4729:12013:35;;;;9226:83:67;9379:196;;;;;;4729:12013:35;9379:196:67;;9588;;;9379;9588;;4729:12013:35;9588:196:67;;9797;;;9379;9797;;4729:12013:35;9797:196:67;;10006;;;9379;10006;;4729:12013:35;10006:196:67;;10215;;;9379;10215;;4729:12013:35;10215:196:67;;10424;;;9379;10424;;4729:12013:35;10424:196:67;;10633;;;;9379;10633;;4729:12013:35;10633:196:67;;10842;;;;9379;10842;;4729:12013:35;10842:196:67;;11051;;;;9379;11051;;4729:12013:35;11051:196:67;;11260;;;;9379;11260;;4729:12013:35;11260:196:67;;11469;;;;9379;11469;;4729:12013:35;11469:196:67;;11678;;;;9379;11678;;4729:12013:35;11678:196:67;;11887;;;;;9379;11887;;4729:12013:35;11887:196:67;;12096:165;;;;;;11887:196;;;;;11678;;;;;11469;;;;;11260;;;;;11051;;;;;10842;;;;;10633;;;;;10424;;;;;10215;;;;;10006;;;;;9797;;;;;9588;;;;;9379;;;;;2006:66;;;9362:2;4729:12013:35;9379:196:67;9588;9797;10006;10215;10424;10633;10842;11051;11260;11469;11678;11887;12096:165;12306:24;2006:66;;;;9237:3;2006:66;8778:149;4729:12013:35;2006:66:67;12500:39;2006:66;9237:3;2006:66;8778:149;4729:12013:35;12570:91:67;:17;;;:91;4729:12013:35;;;12570:91:67;;;7059:5619;:::o;12570:91::-;4729:12013:35;;;12600:26:67;;;:::i;:::-;4729:12013:35;12600:42:67;:61;;;7059:5619;:::o;12600:61::-;;;1830:6:53;:::o;9226:83:67:-;4729:12013:35;9299:3:67;4729:12013:35;;9226:83:67;;7610:168;4729:12013:35;937:176:49;7713:25:67;937:176:49;;;;;;;;646:9:61;;;;;;;:::o;:::-;;;;;;;;;;12083:8199:59;;;;4729:12013:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12238:22:59;4729:12013:35;;;12333:17:59;4729:12013:35;12333:17:59;;4729:12013:35;;12386:14:59;4729:12013:35;12386:14:59;;;4729:12013:35;;12444:102:59;;;4729:12013:35;;12444:102:59;4729:12013:35;;;;763:5:61;1882:117:114;;;756:12:61;12444:102:59;;4729:12013:35;12590:22:59;;4729:12013:35;;;;1502:93:114;;;4729:12013:35;;;1682:98:114;4729:12013:35;1682:98:114;;;4729:12013:35;;;;12782:66:59;4729:12013:35;;;12795:25:59;;;4729:12013:35;12782:66:59;;4729:12013:35;;;13047:20:59;;4729:12013:35;831:8:54;2849:24;;:29;831:8;;987;3160:27;3585:12;;;:::i;:::-;4729:12013:35;;;;;13213:70:59;;13203:80;4729:12013:35;;12590:22:59;;4729:12013:35;13322:26:59;4729:12013:35;1123:7:54;4729:12013:35;;;13363:34:59;:49;;;13213:70;13359:123;;4729:12013:35;12590:22:59;;4729:12013:35;13496:27:59;13492:91;;-1:-1:-1;;4729:12013:35;;;;13628:24:59;;4729:12013:35;1502:93:114;4729:12013:35;;;13628:53:59;;;;13624:190;;-1:-1:-1;;4729:12013:35;1502:93:114;4729:12013:35;1586:10:67;13831:50:59;;13827:156;;13594:789;;4729:12013:35;;;;1766:49:67;4729:12013:35;;;;;;;;;;;;;;;;1766:49:67;;;4729:12013:35;;1766:49:67;;;;4729:12013:35;;1766:49:67;;;;4729:12013:35;;1766:49:67;;;;4729:12013:35;;1766:49:67;;;;4729:12013:35;;1766:49:67;;;;4729:12013:35;;1766:49:67;;;;14548:4771:59;4729:12013:35;;14557:35:59;:85;;;;14548:4771;14555:88;;1502:93:114;4729:12013:35;14684:18:59;;4729:12013:35;;;;;;14818:10:59;;4729:12013:35;1682:98:114;4729:12013:35;;;1682:98:114;4729:12013:35;14769:92:59;846:396:66;4729:12013:35;846:396:66;;;;;;;4729:12013:35;;4565:1658:66;4729:12013:35;;;;1676:170:66;;4815:13;1676:170;1682:98:114;1676:170:66;;;4729:12013:35;;-1:-1:-1;4729:12013:35;14769:15:59;;;4729:12013:35;;;-1:-1:-1;4729:12013:35;;4749:1:66;271:35:50;;;4729:12013:35;;;;4815:20:66;4990:11;;;;;;5140:194;;;;;;4729:12013:35;;881:7:67;772:575:46;;;;4729:12013:35;772:575:46;4729:12013:35;772:575:46;;;;;;4729:12013:35;772:575:46;;;;;;;;;14769:15:59;772:575:46;;;;;4729:12013:35;772:575:46;;;;;;;;;12386:14:59;772:575:46;;;;;;4729:12013:35;772:575:46;;;4729:12013:35;;;1682:98:114;4729:12013:35;646:9:61;;1682:98:114;4729:12013:35;;1682:98:114;4729:12013:35;5140:194:66;4565:1658;;4729:12013:35;;;1766:49:67;;;4729:12013:35;1682:98:114;4729:12013:35;1766:49:67;4729:12013:35;1766:49:67;;;4729:12013:35;14993:34:59;;14989:106;;4565:1658:66;1041:6:67;4729:12013:35;1766:49:67;;;4729:12013:35;1682:98:114;4729:12013:35;15112:34:59;;15108:106;;4565:1658:66;1766:49:67;1502:93:114;15299:42:59;4729:12013:35;1766:49:67;;;4729:12013:35;1682:98:114;4729:12013:35;15299:42:59;:::i;:::-;4729:12013:35;1766:49:67;4729:12013:35;1766:49:67;;;4729:12013:35;14684:18:59;1502:93:114;4729:12013:35;14684:18:59;;4729:12013:35;;1502:93:114;4729:12013:35;15686:24:59;;4729:12013:35;;15729:15:59;4729:12013:35;;15729:15:59;;4729:12013:35;;;;15545:286:59;4729:12013:35;;;;1502:93:114;4729:12013:35;;;1165:920:65;;;;;;;;;;;4729:12013:35;3762:41:65;;;3832:19;4729:12013:35;3832:19:65;;3866:2982;4729:12013:35;;;;1123:7:54;4729:12013:35;;3950:81:65;4729:12013:35;;;;3950:81:65;:::i;:::-;4060:230;;;;4093:87;4729:12013:35;;;;;1165:920:65;;;;;;;;;;;4093:87;:::i;:::-;4060:230;;4312:34;;;;;4729:12013:35;;;;1502:93:114;4729:12013:35;;1165:920:65;;;;;;;;;4505:156;;;1123:7:54;4505:24:65;;:156;1123:7:54;;;4505:156:65;;;;4308:1029;;5366:228;;;5399:86;;;;:::i;:::-;3866:2982;;4729:12013:35;1766:49:67;;;4729:12013:35;;1766:49:67;;;4729:12013:35;;1766:49:67;;;4729:12013:35;;;14684:18:59;;4729:12013:35;15850:11:59;;15846:577;15850:11;;;4729:12013:35;1766:49:67;;;;4729:12013:35;1557:5:62;;1553:49;;4729:12013:35;;;;;16035:30:59;4729:12013:35;1766:49:67;;;;4729:12013:35;1766:49:67;;;;16035:30:59;;:::i;:::-;4729:12013:35;1557:5:62;;1553:49;;4729:12013:35;16008:22:59;;4729:12013:35;;1766:49:67;;;;;;;;;;4729:12013:35;15846:577:59;4729:12013:35;;;16554:730:59;;15846:577;4729:12013:35;;15729:15:59;;4729:12013:35;;17343:19:59;17339:205;;15846:577;14684:18;1502:93:114;4729:12013:35;14684:18:59;;4729:12013:35;;1502:93:114;4729:12013:35;1766:49:67;;;4729:12013:35;;17617:43:59;;17613:1696;1502:93:114;;;1766:49:67;4729:12013:35;1766:49:67;;;4729:12013:35;17751:835:59;;17613:1696;4729:12013:35;;;1165:920:65;4729:12013:35;1766:49:67;;;4729:12013:35;1682:98:114;4729:12013:35;646:9:61;1682:98:114;4729:12013:35;;14818:10:59;;4729:12013:35;14548:4771:59;;17751:835;4729:12013:35;;;;18514:53:59;4729:12013:35;17896:25:59;;1766:49:67;1682:98:114;17923:25:59;;4729:12013:35;17858:172:59;4729:12013:35;1766:49:67;;;4729:12013:35;1682:98:114;4729:12013:35;;;-1:-1:-1;4729:12013:35;28451:10:59;;;4729:12013:35;;;-1:-1:-1;4729:12013:35;28533:26:59;;;;4729:12013:35;;;;;;;1682:98:114;28625:26:59;;4729:12013:35;;;;;;;;;;;;;18407:44:59;;17858:172;4729:12013:35;15729:15:59;4729:12013:35;;;18514:53:59;:::i;:::-;4729:12013:35;;15729:15:59;;4729:12013:35;17751:835:59;;18407:44;4729:12013:35;;;;;;;;18407:44:59;;17858:172;4729:12013:35;18514:53:59;17977:25;4729:12013:35;17977:25:59;;;4729:12013:35;18004:25:59;;1766:49:67;17858:172:59;;17613:1696;1502:93:114;19072:22:59;;4729:12013:35;;19050:44:59;;19046:263;;17613:1696;;14548:4771;;19046:263;19247:47;;;:::i;:::-;1682:98:114;4729:12013:35;;14818:10:59;;4729:12013:35;19046:263:59;;;17339:205;17443:68;1766:49:67;4729:12013:35;1766:49:67;;;;17443:68:59;:::i;:::-;4729:12013:35;17414:25:59;;1766:49:67;;;271:35:50;4729:12013:35;;17339:205:59;;;16554:730;1766:49:67;1123:7:54;4729:12013:35;1766:49:67;;;;4729:12013:35;;;1766:49:67;4729:12013:35;1766:49:67;;;;271:35:50;4729:12013:35;646:9:61;1766:49:67;;4729:12013:35;1766:49:67;;;;4729:12013:35;;1766:49:67;;;4729:12013:35;271:35:50;16554:730:59;;;15846:577;4729:12013:35;1766:49:67;;;;4729:12013:35;1766:49:67;;;;271:35:50;4729:12013:35;1557:5:62;;1553:49;;4729:12013:35;;271:35:50;4729:12013:35;;;1766:49:67;;;;4729:12013:35;1557:5:62;;1553:49;;16357:51:59;4729:12013:35;16357:22:59;;4729:12013:35;;;16357:51:59;:::i;:::-;4729:12013:35;;15846:577:59;;5366:228:65;5508:86;;;:::i;:::-;5366:228;;4505:156;4591:70;;;;:::i;:::-;4505:156;;4308:1029;6744:358:63;;;;;;;;;;;;;;;;1502:93:114;;7185:190:63;;;;7210:74;;;;;:::i;:::-;7185:190;;4708:172:65;;4913:234;;;;;;4950:85;;;:::i;:::-;4902:245;4729:12013:35;;;;4308:1029:65;;;4913:234;5062:85;;;;:::i;:::-;4913:234;;7185:190:63;5055:42;;5056:28;;4847:27;;;4729:12013:35;;4897:47:63;4729:12013:35;;;;;308:2:51;4729:12013:35;4897:47:63;:::i;:::-;4729:12013:35;;;5056:28:63;:::i;:::-;5055:42;:::i;:::-;7185:190;;;4847:172;4967:52;4729:12013:35;;;;4967:52:63;;:::i;:::-;4847:172;;6744:358;;4729:12013:35;6744:358:63;;;;4060:230:65;4203:87;4729:12013:35;;;;1165:920:65;;;;;;;;;;;4203:87;;:::i;:::-;4060:230;;;3866:2982;5645:232;;;;;;;;;;5678:88;4729:12013:35;;;;;1165:920:65;;;;;;;;;;;5678:88;:::i;:::-;5645:232;;5899:37;;;;;4729:12013:35;;1502:93:114;4729:12013:35;;;;6763:70:65;4729:12013:35;;;1165:920:65;;;;;;;;;5895:516;;;6439:226;;;6472:85;;;;:::i;:::-;6428:237;4729:12013:35;;1123:7:54;4729:12013:35;6763:70:65;;:::i;:::-;3866:2982;;6439:226;6580:85;;;:::i;:::-;6439:226;;5895:516;6196:36;;;;;;8224:358:63;;;;;;;8659:194;;;;4729:12013:35;5165:27:63;;4729:12013:35;;308:2:51;4729:12013:35;;;;604:94:69;;;;;;;;5165:205:63;;4729:12013:35;5481:277:63;;;;;;;;;4729:12013:35;6763:70:65;4729:12013:35;;;;;8659:194:63;5895:516:65;;;;5481:277:63;;4729:12013:35;5481:277:63;;;;5165:205;4729:12013:35;;;5315:25:52;;348:27:51;5315:25:52;;:::i;:::-;5358;;;;;348:27:51;5358:25:52;;5354:90;;5165:205:63;;;;5354:90:52;4729:12013:35;;5416:12:52;5354:90;4729:12013:35;;;;8659:194:63;8777:76;;;6763:70:65;8777:76:63;1502:93:114;8777:76:63;;;:::i;:::-;8659:194;;5645:232:65;5789:88;4729:12013:35;;;;1165:920:65;;;;;;;;;;;5789:88;;:::i;:::-;5645:232;;;15108:106:59;1041:6:67;4729:12013:35;1766:49:67;;;4729:12013:35;15108:106:59;;14989;881:7:67;4729:12013:35;1766:49:67;;;4729:12013:35;14989:106:59;;5140:194:66;4729:12013:35;;881:7:67;4729:12013:35;1682:98:114;4729:12013:35;646:9:61;;1682:98:114;4729:12013:35;;1682:98:114;4729:12013:35;5140:194:66;;4565:1658;4729:12013:35;;;;1682:98:114;4729:12013:35;1676:170:66;;4729:12013:35;1676:170:66;5678:13;1676:170;;;4729:12013:35;;;;14769:15:59;;;4729:12013:35;;;;;;;;;;;;5623:20:66;4729:12013:35;;5678:20:66;5845:11;;;;;;5995:213;;;;;;4729:12013:35;;881:7:67;1802:839:46;;4729:12013:35;;1802:839:46;;;;;4729:12013:35;1802:839:46;;;;;;;;;;;;;;;;;;;;;4729:12013:35;;1682:98:114;4729:12013:35;;1682:98:114;4729:12013:35;;1682:98:114;4729:12013:35;5995:213:66;4565:1658;;;5995:213;4729:12013:35;;;881:7:67;4729:12013:35;;;;1682:98:114;4729:12013:35;;1682:98:114;4729:12013:35;;1682:98:114;4729:12013:35;5995:213:66;;14555:88:59;;;;;;;;;;;4729:12013:35;19361:10:59;;4729:12013:35;;2578:157:114;;;2342:131;1502:93;4729:12013:35;19389:18:59;;4729:12013:35;;2342:131:114;;;;4729:12013:35;;;;19483:15:59;;4729:12013:35;;19465:33:59;;;19461:71;;14548:4771;-1:-1:-1;4729:12013:35;;;;1682:98:114;4729:12013:35;19638:25:59;;1766:49:67;19610:25:59;;4729:12013:35;19579:179:59;4729:12013:35;19796:24:59;4729:12013:35;;19940:68:59;4729:12013:35;19885:33:59;4729:12013:35;19885:22:59;;4729:12013:35;19885:33:59;:::i;:::-;12590:22;;4729:12013:35;;;;;19940:68:59;:::i;:::-;4729:12013:35;553:115:109;;4729:12013:35;553:115:109;;19792:474:59;12083:8199::o;19792:474::-;4729:12013:35;12590:22:59;4729:12013:35;;;20110:68:59;;4729:12013:35;20110:68:59;:::i;:::-;20200:33;4729:12013:35;20200:22:59;;4729:12013:35;20200:33:59;:::i;19579:179::-;19694:25;4729:12013:35;19722:25:59;;1766:49:67;19694:25:59;;4729:12013:35;19579:179:59;;19461:71;4729:12013:35;;;12386:14:59;;;4729:12013:35;;;12386:14:59;;;4729:12013:35;19461:71:59;;;14557:85;14596:18;1502:93:114;4729:12013:35;14596:18:59;;4729:12013:35;;1502:93:114;4729:12013:35;14618:24:59;;4729:12013:35;;14596:46:59;14557:85;;13827:156;13901:30;4729:12013:35;937:176:49;;;;4729:12013:35;937:176:49;13624:190:59;2369:319:49;;;4729:12013:35;2369:319:49;;13701:34:59;2369:319:49;;;;;;;;;;;13594:789:59;4729:12013:35;14017:24:59;;4729:12013:35;1502:93:114;4729:12013:35;;;14017:53:59;;;;14013:190;;-1:-1:-1;;4729:12013:35;1502:93:114;4729:12013:35;1766:49:67;14220:51:59;;;14216:157;;13594:789;;;13492:91;13525:58;;;;;;;;;;;;;;4729:12013:35;13525:58:59;4729:12013:35;13525:58:59;;;:::o;13359:123::-;13428:30;4729:12013:35;667:96:49;;4729:12013:35;667:96:49;13363:49:59;13401:11;;;13363:49;;13213:70;4729:12013:35;1911:334:61;4729:12013:35;;;;1911:334:61;;;;;;;;;;4729:12013:35;;;;1911:334:61;;13213:70:59;;;13047:141;2089:105:114;;;;4729:12013:35;2089:105:114;13047:141:59;;12782:66;1682:98:114;12823:25:59;;4729:12013:35;12782:66:59;;;12444:102;4729:12013:35;;;;;;12444:102:59;;;11602:1078:63;11927:153;348:27:51;11602:1078:63;10608:530;11602:1078;14193:4;11602:1078;10608:530;;;;;;;;;;;11927:153;;12476:51;;;;;:::i;:::-;12537:137;;;;;;11602:1078;:::o;:::-;11927:153;11602:1078;10608:530;11602:1078;12476:51;11602:1078;;10608:530;;;;;;;;;;;11927:153;;12476:51;:::i;9411:1050::-;;4729:12013:35;;;;;;9613:29:63;9609:98;;9411:1050;4729:12013:35;9796:262:63;;;;;;;4729:12013:35;;10275:64:63;10224:220;4729:12013:35;;;1586:10:67;;4729:12013:35;;308:2:51;4729:12013:35;;10275:64:63;:::i;:::-;604:94:69;;;;;;;;;9411:1050:63;:::o;9796:262::-;;;;;;;9609:98;;;;9411:1050;4729:12013:35;;;;;;9613:29:63;9609:98;;9411:1050;4729:12013:35;9796:262:63;;;;;;;10374:70;10224:220;4729:12013:35;;10374:54:63;10224:220;4729:12013:35;;;1586:10:67;;4729:12013:35;;308:2:51;4729:12013:35;;10374:54:63;:::i;:::-;:70;:::i;9609:98::-;9644:63;9609:98;;5164:296:52;;;;5315:25;;;;;:::i;:::-;5358;;;;;;5354:90;;5164:296::o;5354:90::-;4729:12013:35;;;5416:12:52;;;4729:12013:35;;5164:296:52:o;1548:2065:63:-;;;1844:11;;1840:32;;4729:12013:35;;;308:2:51;4729:12013:35;;1959:1648:63;4729:12013:35;;;;;2964:462:63;;;;;;;;;;;;;3510:72;4729:12013:35;3510:60:63;4729:12013:35;;;3510:60:63;;:::i;2964:462::-;;1959:1648;2964:462;;;;1840:32;1857:15;;;:::o;1548:2065::-;;;1844:11;;1840:32;;4729:12013:35;;;;308:2:51;4729:12013:35;;;;;;;2067:16:63;;;;;:::i;:::-;:28;2063:345;;1548:2065;2539:21;;;2538:32;2539:21;;;:::i;:::-;2538:32;:::i;:::-;604:94:69;;;;;;;;4729:12013:35;1548:2065:63;:::o;2063:345::-;271:35:50;;2187:25:63;;;2063:345;2183:207;2306:60;;;;;:::i;:::-;4729:12013:35;2291:76:63;:::o;1840:32::-;1857:15;;;;:::o;473:155:62:-;;4729:12013:35;;;575:6:62;;;571:50;;473:155::o","linkReferences":{},"immutableReferences":{"48289":[{"start":13812,"length":32}],"49587":[{"start":4887,"length":32}]}},"methodIdentifiers":{"allowance(address,address,uint256)":"598af9e7","approve(address,uint256,uint256)":"426a8493","balanceOf(address,uint256)":"00fdd58e","burn(address,uint256,uint256)":"f5298aca","clear(address,uint256)":"80f0b44c","collectProtocolFees(address,address,uint256)":"8161b874","donate((address,address,uint24,int24,address),uint256,uint256,bytes)":"234266d7","extsload(bytes32)":"1e2eaeaf","extsload(bytes32,uint256)":"35fd631a","extsload(bytes32[])":"dbd035ff","exttload(bytes32)":"f135baaa","exttload(bytes32[])":"9bf6645f","initialize((address,address,uint24,int24,address),uint160,bytes)":"695c5bf5","isOperator(address,address)":"b6363cf2","mint(address,uint256,uint256)":"156e29f6","modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"5a6bcfda","owner()":"8da5cb5b","protocolFeeController()":"f02de3b2","protocolFeesAccrued(address)":"97e8cd4e","setOperator(address,bool)":"558a7297","setProtocolFee((address,address,uint24,int24,address),uint24)":"7e87ce7d","setProtocolFeeController(address)":"2d771389","settle()":"11da60b4","settleFor(address)":"3dd45adb","supportsInterface(bytes4)":"01ffc9a7","swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":"f3cd914c","sync(address)":"a5841194","take(address,address,uint256)":"0b0d9c09","transfer(address,uint256,uint256)":"095bcdb6","transferFrom(address,address,uint256,uint256)":"fe99049a","transferOwnership(address)":"f2fde38b","unlock(bytes)":"48c89491","updateDynamicLPFee((address,address,uint24,int24,address),uint24)":"52759651"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"controllerGasLimit\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AlreadyUnlocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"currency1\",\"type\":\"address\"}],\"name\":\"CurrenciesOutOfOrderOrEqual\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CurrencyNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegateCallNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ManagerLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MustClearExactPositiveDelta\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonZeroNativeValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeCannotBeFetched\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"ProtocolFeeTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapAmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"TickSpacingTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"TickSpacingTooSmall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnauthorizedDynamicLPFeeUpdate\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"name\":\"ModifyLiquidity\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"OperatorSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"protocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"protocolFee\",\"type\":\"uint24\"}],\"name\":\"ProtocolFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount0\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount1\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"clear\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"collectProtocolFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCollected\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"donate\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"startSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nSlots\",\"type\":\"uint256\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slots\",\"type\":\"bytes32[]\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"slots\",\"type\":\"bytes32[]\"}],\"name\":\"exttload\",\"outputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"\",\"type\":\"bytes32[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"exttload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"isOperator\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPoolManager.ModifyLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"modifyLiquidity\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"callerDelta\",\"type\":\"int256\"},{\"internalType\":\"BalanceDelta\",\"name\":\"feesAccrued\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"protocolFeesAccrued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint24\",\"name\":\"newProtocolFee\",\"type\":\"uint24\"}],\"name\":\"setProtocolFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"settleFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct IPoolManager.SwapParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"swapDelta\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"sync\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"take\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlock\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint24\",\"name\":\"newDynamicLPFee\",\"type\":\"uint24\"}],\"name\":\"updateDynamicLPFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"Initialize(bytes32,address,address,uint24,int24,address,uint160,int24)\":{\"params\":{\"currency0\":\"The first currency of the pool by address sort order\",\"currency1\":\"The second currency of the pool by address sort order\",\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"hooks\":\"The hooks contract address for the pool, or address(0) if none\",\"id\":\"The abi encoded hash of the pool key struct for the new pool\",\"sqrtPriceX96\":\"The price of the pool on initialization\",\"tick\":\"The initial tick of the pool corresponding to the intialized price\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks\"}},\"ModifyLiquidity(bytes32,address,int24,int24,int256,bytes32)\":{\"params\":{\"id\":\"The abi encoded hash of the pool key struct for the pool that was modified\",\"liquidityDelta\":\"The amount of liquidity that was added or removed\",\"salt\":\"The extra data to make positions unique\",\"sender\":\"The address that modified the pool\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"Swap(bytes32,address,int128,int128,uint160,uint128,int24,uint24)\":{\"params\":{\"amount0\":\"The delta of the currency0 balance of the pool\",\"amount1\":\"The delta of the currency1 balance of the pool\",\"fee\":\"The swap fee in hundredths of a bip\",\"id\":\"The abi encoded hash of the pool key struct for the pool that was modified\",\"liquidity\":\"The liquidity of the pool after the swap\",\"sender\":\"The address that initiated the swap call, and that received the callback\",\"sqrtPriceX96\":\"The sqrt(price) of the pool after the swap, as a Q64.96\",\"tick\":\"The log base 1.0001 of the price of the pool after the swap\"}}},\"kind\":\"dev\",\"methods\":{\"approve(address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of the token.\",\"id\":\"The id of the token.\",\"spender\":\"The address of the spender.\"},\"returns\":{\"_0\":\"bool True, always\"}},\"burn(address,uint256,uint256)\":{\"details\":\"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out\",\"params\":{\"amount\":\"The amount of currency to burn\",\"from\":\"The address to burn the tokens from\",\"id\":\"The currency address to burn from ERC6909s, as a uint256\"}},\"clear(address,uint256)\":{\"details\":\"This could be used to clear a balance that is considered dust. Additionally, the amount must be the exact positive balance. This is to enforce that the caller is aware of the amount being cleared.\"},\"collectProtocolFees(address,address,uint256)\":{\"params\":{\"amount\":\"The amount of currency to withdraw\",\"currency\":\"The currency to withdraw\",\"recipient\":\"The address to receive the protocol fees\"},\"returns\":{\"amountCollected\":\"The amount of currency successfully withdrawn\"}},\"donate((address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"params\":{\"amount0\":\"The amount of currency0 to donate\",\"amount1\":\"The amount of currency1 to donate\",\"hookData\":\"The data to pass through to the donate hooks\",\"key\":\"The key of the pool to donate to\"},\"returns\":{\"delta\":\"BalanceDelta The delta of the caller after the donate\"}},\"extsload(bytes32)\":{\"params\":{\"slot\":\"Key of slot to sload\"},\"returns\":{\"_0\":\"The value of the slot as bytes32\"}},\"extsload(bytes32,uint256)\":{\"params\":{\"nSlots\":\"Number of slots to load into return value\",\"startSlot\":\"Key of slot to start sloading from\"},\"returns\":{\"_0\":\"List of loaded values.\"}},\"extsload(bytes32[])\":{\"params\":{\"slots\":\"List of slots to SLOAD from.\"},\"returns\":{\"_0\":\"List of loaded values.\"}},\"exttload(bytes32)\":{\"params\":{\"slot\":\"Key of slot to tload\"},\"returns\":{\"_0\":\"The value of the slot as bytes32\"}},\"exttload(bytes32[])\":{\"params\":{\"slots\":\"List of slots to tload\"},\"returns\":{\"_0\":\"List of loaded values\"}},\"initialize((address,address,uint24,int24,address),uint160,bytes)\":{\"params\":{\"hookData\":\"The data to pass through to the initialize hooks\",\"key\":\"The pool key for the pool to initialize\",\"sqrtPriceX96\":\"The initial square root price\"},\"returns\":{\"tick\":\"The initial tick of the pool\"}},\"mint(address,uint256,uint256)\":{\"details\":\"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out\",\"params\":{\"amount\":\"The amount of currency to mint\",\"id\":\"The currency address to mint to ERC6909s, as a uint256\",\"to\":\"The address to mint the tokens to\"}},\"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\":{\"details\":\"Poke by calling with a zero liquidityDelta\",\"params\":{\"hookData\":\"The data to pass through to the add/removeLiquidity hooks\",\"key\":\"The pool to modify liquidity in\",\"params\":\"The parameters for modifying the liquidity\"},\"returns\":{\"callerDelta\":\"The balance delta of the caller of modifyLiquidity. This is the total of both principal and fee deltas.\",\"feesAccrued\":\"The balance delta of the fees generated in the liquidity range. Returned for informational purposes.\"}},\"setOperator(address,bool)\":{\"params\":{\"approved\":\"The approval status.\",\"operator\":\"The address of the operator.\"},\"returns\":{\"_0\":\"bool True, always\"}},\"setProtocolFee((address,address,uint24,int24,address),uint24)\":{\"params\":{\"key\":\"The key of the pool to set a protocol fee for\",\"newProtocolFee\":\"The fee to set\"}},\"setProtocolFeeController(address)\":{\"params\":{\"controller\":\"The new protocol fee controller\"}},\"settle()\":{\"returns\":{\"paid\":\"The amount of currency settled\"}},\"settleFor(address)\":{\"params\":{\"recipient\":\"The address to credit for the payment\"},\"returns\":{\"paid\":\"The amount of currency settled\"}},\"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)\":{\"details\":\"Swapping on low liquidity pools may cause unexpected swap amounts when liquidity available is less than amountSpecified. Additionally note that if interacting with hooks that have the BEFORE_SWAP_RETURNS_DELTA_FLAG or AFTER_SWAP_RETURNS_DELTA_FLAG the hook may alter the swap input/output. Integrators should perform checks on the returned swapDelta.\",\"params\":{\"hookData\":\"The data to pass through to the swap hooks\",\"key\":\"The pool to swap in\",\"params\":\"The parameters for swapping\"},\"returns\":{\"swapDelta\":\"The balance delta of the address swapping\"}},\"sync(address)\":{\"details\":\"This MUST be called before any ERC20 tokens are sent into the contract, but can be skipped for native tokens because the amount to settle is determined by the sent value.\",\"params\":{\"currency\":\"The currency whose balance to sync\"}},\"take(address,address,uint256)\":{\"details\":\"Can also be used as a mechanism for _free_ flash loans\",\"params\":{\"amount\":\"The amount of currency to withdraw\",\"currency\":\"The currency to withdraw from the pool manager\",\"to\":\"The address to withdraw to\"}},\"transfer(address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of the token.\",\"id\":\"The id of the token.\",\"receiver\":\"The address of the receiver.\"},\"returns\":{\"_0\":\"bool True, always, unless the function reverts\"}},\"transferFrom(address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The amount of the token.\",\"id\":\"The id of the token.\",\"receiver\":\"The address of the receiver.\",\"sender\":\"The address of the sender.\"},\"returns\":{\"_0\":\"bool True, always, unless the function reverts\"}},\"unlock(bytes)\":{\"details\":\"The only functions callable without an unlocking are `initialize` and `updateDynamicLPFee`\",\"params\":{\"data\":\"Any data to pass to the callback, via `IUnlockCallback(msg.sender).unlockCallback(data)`\"},\"returns\":{\"result\":\"The data returned by the call to `IUnlockCallback(msg.sender).unlockCallback(data)`\"}},\"updateDynamicLPFee((address,address,uint24,int24,address),uint24)\":{\"params\":{\"key\":\"The key of the pool to update dynamic LP fees for\",\"newDynamicLPFee\":\"The new dynamic pool LP fee\"}}},\"title\":\"PoolManager\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyUnlocked()\":[{\"notice\":\"Thrown when unlock is called, but the contract is already unlocked\"}],\"CurrenciesOutOfOrderOrEqual(address,address)\":[{\"notice\":\"PoolKey must have currencies where address(currency0) < address(currency1)\"}],\"CurrencyNotSettled()\":[{\"notice\":\"Thrown when a currency is not netted out after the contract is unlocked\"}],\"InvalidCaller()\":[{\"notice\":\"Thrown when collectProtocolFees or setProtocolFee is not called by the controller.\"}],\"ManagerLocked()\":[{\"notice\":\"Thrown when a function is called that requires the contract to be unlocked, but it is not\"}],\"MustClearExactPositiveDelta()\":[{\"notice\":\"Thrown when `clear` is called with an amount that is not exactly equal to the open currency delta.\"}],\"NonZeroNativeValue()\":[{\"notice\":\"Thrown when native currency is passed to a non native settlement\"}],\"PoolNotInitialized()\":[{\"notice\":\"Thrown when trying to interact with a non-initialized pool\"}],\"ProtocolFeeCannotBeFetched()\":[{\"notice\":\"Thrown when not enough gas is provided to look up the protocol fee\"}],\"ProtocolFeeTooLarge(uint24)\":[{\"notice\":\"Thrown when protocol fee is set too high\"}],\"SwapAmountCannotBeZero()\":[{\"notice\":\"Thrown when trying to swap amount of 0\"}],\"TickSpacingTooLarge(int24)\":[{\"notice\":\"Pools are limited to type(int16).max tickSpacing in #initialize, to prevent overflow\"}],\"TickSpacingTooSmall(int24)\":[{\"notice\":\"Pools must have a positive non-zero tickSpacing passed to #initialize\"}],\"UnauthorizedDynamicLPFeeUpdate()\":[{\"notice\":\"Thrown when a call to updateDynamicLPFee is made by an address that is not the hook, or on a pool that does not have a dynamic swap fee.\"}]},\"events\":{\"Initialize(bytes32,address,address,uint24,int24,address,uint160,int24)\":{\"notice\":\"Emitted when a new pool is initialized\"},\"ModifyLiquidity(bytes32,address,int24,int24,int256,bytes32)\":{\"notice\":\"Emitted when a liquidity position is modified\"},\"ProtocolFeeControllerUpdated(address)\":{\"notice\":\"Emitted when the protocol fee controller address is updated in setProtocolFeeController.\"},\"ProtocolFeeUpdated(bytes32,uint24)\":{\"notice\":\"Emitted when the protocol fee is updated for a pool.\"},\"Swap(bytes32,address,int128,int128,uint160,uint128,int24,uint24)\":{\"notice\":\"Emitted for swaps between currency0 and currency1\"}},\"kind\":\"user\",\"methods\":{\"allowance(address,address,uint256)\":{\"notice\":\"Spender allowance of an id.\"},\"approve(address,uint256,uint256)\":{\"notice\":\"Approves an amount of an id to a spender.\"},\"balanceOf(address,uint256)\":{\"notice\":\"Owner balance of an id.\"},\"burn(address,uint256,uint256)\":{\"notice\":\"Called by the user to move value from ERC6909 balance\"},\"clear(address,uint256)\":{\"notice\":\"WARNING - Any currency that is cleared, will be non-retreivable, and locked in the contract permanently. A call to clear will zero out a positive balance WITHOUT a corresponding transfer.\"},\"collectProtocolFees(address,address,uint256)\":{\"notice\":\"Collects the protocol fees for a given recipient and currency, returning the amount collected\"},\"donate((address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"notice\":\"Donate the given currency amounts to the pool with the given pool key\"},\"extsload(bytes32)\":{\"notice\":\"Called by external contracts to access granular pool state\"},\"extsload(bytes32,uint256)\":{\"notice\":\"Called by external contracts to access granular pool state\"},\"extsload(bytes32[])\":{\"notice\":\"Called by external contracts to access sparse pool state\"},\"exttload(bytes32)\":{\"notice\":\"Called by external contracts to access transient storage of the contract\"},\"exttload(bytes32[])\":{\"notice\":\"Called by external contracts to access sparse transient pool state\"},\"initialize((address,address,uint24,int24,address),uint160,bytes)\":{\"notice\":\"Initialize the state for a given pool ID\"},\"isOperator(address,address)\":{\"notice\":\"Checks if a spender is approved by an owner as an operator\"},\"mint(address,uint256,uint256)\":{\"notice\":\"Called by the user to move value into ERC6909 balance\"},\"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)\":{\"notice\":\"Modify the liquidity for the given pool\"},\"protocolFeeController()\":{\"notice\":\"Returns the current protocol fee controller address\"},\"protocolFeesAccrued(address)\":{\"notice\":\"Given a currency address, returns the protocol fees accrued in that currency\"},\"setOperator(address,bool)\":{\"notice\":\"Sets or removes an operator for the caller.\"},\"setProtocolFee((address,address,uint24,int24,address),uint24)\":{\"notice\":\"Sets the protocol fee for the given pool\"},\"setProtocolFeeController(address)\":{\"notice\":\"Sets the protocol fee controller\"},\"settle()\":{\"notice\":\"Called by the user to pay what is owed\"},\"settleFor(address)\":{\"notice\":\"Called by the user to pay on behalf of another address\"},\"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)\":{\"notice\":\"Swap against the given pool\"},\"sync(address)\":{\"notice\":\"Writes the current ERC20 balance of the specified currency to transient storage This is used to checkpoint balances for the manager and derive deltas for the caller.\"},\"take(address,address,uint256)\":{\"notice\":\"Called by the user to net out some value owed to the user\"},\"transfer(address,uint256,uint256)\":{\"notice\":\"Transfers an amount of an id from the caller to a receiver.\"},\"transferFrom(address,address,uint256,uint256)\":{\"notice\":\"Transfers an amount of an id from a sender to a receiver.\"},\"unlock(bytes)\":{\"notice\":\"All interactions on the contract that account deltas require unlocking. A caller that calls `unlock` must implement `IUnlockCallback(msg.sender).unlockCallback(data)`, where they interact with the remaining functions on this contract.\"},\"updateDynamicLPFee((address,address,uint24,int24,address),uint24)\":{\"notice\":\"Updates the pools lp fees for the a pool that has enabled dynamic lp fees.\"}},\"notice\":\"Holds the state for all pools\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PoolManager.sol\":\"PoolManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/\"],\"viaIR\":true},\"sources\":{\"lib/solmate/src/auth/Owned.sol\":{\"keccak256\":\"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4\",\"dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx\"]},\"src/ERC6909.sol\":{\"keccak256\":\"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6\",\"dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q\"]},\"src/ERC6909Claims.sol\":{\"keccak256\":\"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c\",\"dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i\"]},\"src/Extsload.sol\":{\"keccak256\":\"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51\",\"dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU\"]},\"src/Exttload.sol\":{\"keccak256\":\"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c\",\"dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG\"]},\"src/NoDelegateCall.sol\":{\"keccak256\":\"0x5c238701785d16c58a1598daec0f72a2aaf47d5d017b9dd7441cc8093b65b202\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://696cf79b74bc38e7316d94dfd8bdd9579a94f74121e9b65d2613eb59c106ea50\",\"dweb:/ipfs/QmRttHmshQJ5E7EGaeBC7yT4wyzthNXZQJn7sy2nJvb4dB\"]},\"src/PoolManager.sol\":{\"keccak256\":\"0xf2c357d79981846e45452e44f6b9161b8edfe86ae8104b37d3c1d52a839615e5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://7fc0d49c506b30767b3b30396e5bfecacf296fa7dcc34744f1f8faf374ed4384\",\"dweb:/ipfs/QmcBKAQpRgBpxSpYhzmrn3oLxAyDVqeck8UwLBX1psk7JM\"]},\"src/ProtocolFees.sol\":{\"keccak256\":\"0x03e05338633abb24c705824f411621a612d85388661062661db1cd9991f7ad11\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2d97558d2943c315439fcbc767888355243a551a0e0712cc057dd3a07321b971\",\"dweb:/ipfs/QmcKh65thoezEvVoyAignGPTRsory3AsVALTaS3Z1kELF9\"]},\"src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"src/interfaces/IHooks.sol\":{\"keccak256\":\"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa\",\"dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8\"]},\"src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0x7dd9b494e616cbf623c21e2b8c4e8375acf27d307b02700d4965170bff3bb838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://381e66840cc15dc602b56a55554aa4ae581e4cfc7ddbfb51f838e6b40981664b\",\"dweb:/ipfs/QmeLdh22eqpj53C8562oN7pE4oWR1sjD82TKdV3sMq3tYu\"]},\"src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6\",\"dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G\"]},\"src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f\",\"dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw\"]},\"src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410\",\"dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8\"]},\"src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"src/libraries/BitMath.sol\":{\"keccak256\":\"0x59e18adcff8917b0965a240d88b34d5d800e0efebd5f40c5594ddcf28a15949b\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://d358beebf8d5079520b6e138d744e5063ecbfbeae355c08af86a3b74afa71b09\",\"dweb:/ipfs/QmUXmAK9aoxnaeykq8MLXoRKP8yGTDyY3jPFMwHnqRxf46\"]},\"src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0xb1eb18c3794b67f4f710229df279d3a630a963194fbbeb51906198ec7145b98e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e5ea08b69754250cf04cc544785320f5c8fd8b9a65e5d9e0bc44aadadaa9ea0c\",\"dweb:/ipfs/QmWW1qfqGydoiSeDtVVQ53nV3FphuUgH1PFUC3uGaWzxWR\"]},\"src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7\",\"dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3\"]},\"src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x2b70cc5e6ca761f4b3110bd7ea6c6064167df260a669b08b2c96c115d5c944ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f2ae8f2d7da6103f3d884935fb5da10c5463b4d229b31de9e592c4d2275e0bc\",\"dweb:/ipfs/QmWeVnC18TEqGy7fp2GApReNUuZFfDAEsWkycDV8N1LAmy\"]},\"src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d\",\"dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT\"]},\"src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xf0a545fc5bbc271e8dbd191413dc03e8725d1f003df4d9d36ea7cdb73058c417\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5d1013d8b5c93024526f129b0a9271b35c578da09bcfe6c3240ff4d590ebc196\",\"dweb:/ipfs/QmX1GyF9jJhYGXst6PyK6HJvcfVQ69nNTnuBEBaEiAZPv7\"]},\"src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0x028173d4dfa579c49e1d6aa0b0f4d9e0b5b5812bb573586fff53f33926720699\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98cf56f5917c23331a641363c31d353d58c9a3053bb7d64e62bed5161a23174a\",\"dweb:/ipfs/QmfVufa7owRy4VxYYGHN87F3YGNWvuSq1cpCpJjATvf6CM\"]},\"src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896\",\"dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo\"]},\"src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc\",\"dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa\"]},\"src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"src/libraries/NonZeroDeltaCount.sol\":{\"keccak256\":\"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2\",\"dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC\"]},\"src/libraries/ParseBytes.sol\":{\"keccak256\":\"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8\",\"dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf\"]},\"src/libraries/Pool.sol\":{\"keccak256\":\"0x7a506727ae59f5b5487a0a16ec1d7038b7c2a4ee5f4a7fa7c444ec7df6ad5a7c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://befdd15aee06a7b2a3c64cb899220ec03a1ae8470ad17e19050bcca1ac5266a8\",\"dweb:/ipfs/QmWPfBgfp5VKnku9ZtKXwYycyKdAZuCj6778T2HFrfQ61H\"]},\"src/libraries/Position.sol\":{\"keccak256\":\"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce\",\"dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu\"]},\"src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0x2739e8f54707c6a0e23f9c61a0783dd18b107c3fc287b2827f1ab4b41f891902\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2e3b154410bbfcbe8808c6dfb74c4bbbac50a59e228cee59b34e169dbd34ee1a\",\"dweb:/ipfs/QmcRoM6T2F7FTHtGdD5aRiVthCon8oiWur661GCrk5FejP\"]},\"src/libraries/SafeCast.sol\":{\"keccak256\":\"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4\",\"dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM\"]},\"src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x1a5a8fd4a21cec19c0c253201e9b5534e8d810eb132bceee04af37fd78adb5db\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://afa2a5950c9057fd3c00a6f413fba91c4c7dab06d573f7349aaf8f806c0e1f31\",\"dweb:/ipfs/Qmb2m62xAPRBtxtx3sV7MAFw2vHWNm9m49ctPHmFX5hozt\"]},\"src/libraries/SwapMath.sol\":{\"keccak256\":\"0xa8cedd0f63b2d8b6faac60455f499c79816f53fbd86f3bb0706fae426b2c231e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8d926c2df899b21811862d106d5e1d2b5bdf83c76ae6ff4216e7c9ce443d8e75\",\"dweb:/ipfs/QmTTVSCumUXZ4vf3R1GwfqJSTgLFyjueuxZkRH9U6dsTb3\"]},\"src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x23abd96aa808657304affd775666d7cc5fb0ab564f87d1b65fbf8dc5877d9cd6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c7686aefb704a3efe97cc0e8f180ed48f7667f5ae69d3754962f04352c66b79\",\"dweb:/ipfs/QmULiCBW9s2hB6SmnJTi2wiAwgkLXpZJcdVZm9f77zDNuc\"]},\"src/libraries/TickMath.sol\":{\"keccak256\":\"0x64c668177d82bb185d902fb2190630ccb67babb6439422979692ac2f8dfb6dcd\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e2714a025df18c22f20b358b7143e8a5c55cffb20c7de292be0376845a5f0408\",\"dweb:/ipfs/QmWaeCkxwkVuReFUSK2nDat1BB5DJ8BUowwGwmVyKpsrME\"]},\"src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xe9b87da934af38419d4b5f20cc09943dbb569425448fc23fdc5ec6aebbb63c84\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://29838c28905c34f9602a453759b55f5acc6aff02bf6d7a6afac5d1a245dd5db3\",\"dweb:/ipfs/QmfN5bhLFw1CsnnaJQNZd3bLpLufQcwt9ztaR71LA43UGY\"]},\"src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"src/types/Currency.sol\":{\"keccak256\":\"0x03fa1f70ccb3895c63d484ed08892dad57ccb01a194d19b85425348c4fb6a711\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69bb811fe4ce219a033e950d2bfbd34a511ac5d4db7836c86e8c471c7a61b75a\",\"dweb:/ipfs/QmX2LoUGmRn28P1UfwQcfexJ2kdR8kG6UZrsM8d1Nit69G\"]},\"src/types/PoolId.sol\":{\"keccak256\":\"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f\",\"dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB\"]},\"src/types/PoolKey.sol\":{\"keccak256\":\"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf\",\"dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY\"]},\"src/types/Slot0.sol\":{\"keccak256\":\"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8\",\"dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"controllerGasLimit","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AlreadyUnlocked"},{"inputs":[{"internalType":"address","name":"currency0","type":"address"},{"internalType":"address","name":"currency1","type":"address"}],"type":"error","name":"CurrenciesOutOfOrderOrEqual"},{"inputs":[],"type":"error","name":"CurrencyNotSettled"},{"inputs":[],"type":"error","name":"DelegateCallNotAllowed"},{"inputs":[],"type":"error","name":"InvalidCaller"},{"inputs":[],"type":"error","name":"ManagerLocked"},{"inputs":[],"type":"error","name":"MustClearExactPositiveDelta"},{"inputs":[],"type":"error","name":"NonZeroNativeValue"},{"inputs":[],"type":"error","name":"PoolNotInitialized"},{"inputs":[],"type":"error","name":"ProtocolFeeCannotBeFetched"},{"inputs":[{"internalType":"uint24","name":"fee","type":"uint24"}],"type":"error","name":"ProtocolFeeTooLarge"},{"inputs":[],"type":"error","name":"SwapAmountCannotBeZero"},{"inputs":[{"internalType":"int24","name":"tickSpacing","type":"int24"}],"type":"error","name":"TickSpacingTooLarge"},{"inputs":[{"internalType":"int24","name":"tickSpacing","type":"int24"}],"type":"error","name":"TickSpacingTooSmall"},{"inputs":[],"type":"error","name":"UnauthorizedDynamicLPFeeUpdate"},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"spender","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"Currency","name":"currency0","type":"address","indexed":true},{"internalType":"Currency","name":"currency1","type":"address","indexed":true},{"internalType":"uint24","name":"fee","type":"uint24","indexed":false},{"internalType":"int24","name":"tickSpacing","type":"int24","indexed":false},{"internalType":"contract IHooks","name":"hooks","type":"address","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false}],"type":"event","name":"Initialize","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"int24","name":"tickLower","type":"int24","indexed":false},{"internalType":"int24","name":"tickUpper","type":"int24","indexed":false},{"internalType":"int256","name":"liquidityDelta","type":"int256","indexed":false},{"internalType":"bytes32","name":"salt","type":"bytes32","indexed":false}],"type":"event","name":"ModifyLiquidity","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"OperatorSet","anonymous":false},{"inputs":[{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"protocolFeeController","type":"address","indexed":true}],"type":"event","name":"ProtocolFeeControllerUpdated","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"uint24","name":"protocolFee","type":"uint24","indexed":false}],"type":"event","name":"ProtocolFeeUpdated","anonymous":false},{"inputs":[{"internalType":"PoolId","name":"id","type":"bytes32","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"int128","name":"amount0","type":"int128","indexed":false},{"internalType":"int128","name":"amount1","type":"int128","indexed":false},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160","indexed":false},{"internalType":"uint128","name":"liquidity","type":"uint128","indexed":false},{"internalType":"int24","name":"tick","type":"int24","indexed":false},{"internalType":"uint24","name":"fee","type":"uint24","indexed":false}],"type":"event","name":"Swap","anonymous":false},{"inputs":[{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"allowance","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"burn"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"clear"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"Currency","name":"currency","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"collectProtocolFees","outputs":[{"internalType":"uint256","name":"amountCollected","type":"uint256"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint256","name":"amount0","type":"uint256"},{"internalType":"uint256","name":"amount1","type":"uint256"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"donate","outputs":[{"internalType":"BalanceDelta","name":"delta","type":"int256"}]},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"extsload","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"startSlot","type":"bytes32"},{"internalType":"uint256","name":"nSlots","type":"uint256"}],"stateMutability":"view","type":"function","name":"extsload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"slots","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"extsload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32[]","name":"slots","type":"bytes32[]"}],"stateMutability":"view","type":"function","name":"exttload","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}]},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"stateMutability":"view","type":"function","name":"exttload","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint160","name":"sqrtPriceX96","type":"uint160"},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"initialize","outputs":[{"internalType":"int24","name":"tick","type":"int24"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"isOperator","type":"bool"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"mint"},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct IPoolManager.ModifyLiquidityParams","name":"params","type":"tuple","components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"modifyLiquidity","outputs":[{"internalType":"BalanceDelta","name":"callerDelta","type":"int256"},{"internalType":"BalanceDelta","name":"feesAccrued","type":"int256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"protocolFeeController","outputs":[{"internalType":"contract IProtocolFeeController","name":"","type":"address"}]},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"stateMutability":"view","type":"function","name":"protocolFeesAccrued","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint24","name":"newProtocolFee","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFee"},{"inputs":[{"internalType":"contract IProtocolFeeController","name":"controller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeController"},{"inputs":[],"stateMutability":"payable","type":"function","name":"settle","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"payable","type":"function","name":"settleFor","outputs":[{"internalType":"uint256","name":"paid","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct IPoolManager.SwapParams","name":"params","type":"tuple","components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"swap","outputs":[{"internalType":"BalanceDelta","name":"swapDelta","type":"int256"}]},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"sync"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"take"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"receiver","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"unlock","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"uint24","name":"newDynamicLPFee","type":"uint24"}],"stateMutability":"nonpayable","type":"function","name":"updateDynamicLPFee"}],"devdoc":{"kind":"dev","methods":{"approve(address,uint256,uint256)":{"params":{"amount":"The amount of the token.","id":"The id of the token.","spender":"The address of the spender."},"returns":{"_0":"bool True, always"}},"burn(address,uint256,uint256)":{"details":"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out","params":{"amount":"The amount of currency to burn","from":"The address to burn the tokens from","id":"The currency address to burn from ERC6909s, as a uint256"}},"clear(address,uint256)":{"details":"This could be used to clear a balance that is considered dust. Additionally, the amount must be the exact positive balance. This is to enforce that the caller is aware of the amount being cleared."},"collectProtocolFees(address,address,uint256)":{"params":{"amount":"The amount of currency to withdraw","currency":"The currency to withdraw","recipient":"The address to receive the protocol fees"},"returns":{"amountCollected":"The amount of currency successfully withdrawn"}},"donate((address,address,uint24,int24,address),uint256,uint256,bytes)":{"params":{"amount0":"The amount of currency0 to donate","amount1":"The amount of currency1 to donate","hookData":"The data to pass through to the donate hooks","key":"The key of the pool to donate to"},"returns":{"delta":"BalanceDelta The delta of the caller after the donate"}},"extsload(bytes32)":{"params":{"slot":"Key of slot to sload"},"returns":{"_0":"The value of the slot as bytes32"}},"extsload(bytes32,uint256)":{"params":{"nSlots":"Number of slots to load into return value","startSlot":"Key of slot to start sloading from"},"returns":{"_0":"List of loaded values."}},"extsload(bytes32[])":{"params":{"slots":"List of slots to SLOAD from."},"returns":{"_0":"List of loaded values."}},"exttload(bytes32)":{"params":{"slot":"Key of slot to tload"},"returns":{"_0":"The value of the slot as bytes32"}},"exttload(bytes32[])":{"params":{"slots":"List of slots to tload"},"returns":{"_0":"List of loaded values"}},"initialize((address,address,uint24,int24,address),uint160,bytes)":{"params":{"hookData":"The data to pass through to the initialize hooks","key":"The pool key for the pool to initialize","sqrtPriceX96":"The initial square root price"},"returns":{"tick":"The initial tick of the pool"}},"mint(address,uint256,uint256)":{"details":"The id is converted to a uint160 to correspond to a currency address If the upper 12 bytes are not 0, they will be 0-ed out","params":{"amount":"The amount of currency to mint","id":"The currency address to mint to ERC6909s, as a uint256","to":"The address to mint the tokens to"}},"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":{"details":"Poke by calling with a zero liquidityDelta","params":{"hookData":"The data to pass through to the add/removeLiquidity hooks","key":"The pool to modify liquidity in","params":"The parameters for modifying the liquidity"},"returns":{"callerDelta":"The balance delta of the caller of modifyLiquidity. This is the total of both principal and fee deltas.","feesAccrued":"The balance delta of the fees generated in the liquidity range. Returned for informational purposes."}},"setOperator(address,bool)":{"params":{"approved":"The approval status.","operator":"The address of the operator."},"returns":{"_0":"bool True, always"}},"setProtocolFee((address,address,uint24,int24,address),uint24)":{"params":{"key":"The key of the pool to set a protocol fee for","newProtocolFee":"The fee to set"}},"setProtocolFeeController(address)":{"params":{"controller":"The new protocol fee controller"}},"settle()":{"returns":{"paid":"The amount of currency settled"}},"settleFor(address)":{"params":{"recipient":"The address to credit for the payment"},"returns":{"paid":"The amount of currency settled"}},"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":{"details":"Swapping on low liquidity pools may cause unexpected swap amounts when liquidity available is less than amountSpecified. Additionally note that if interacting with hooks that have the BEFORE_SWAP_RETURNS_DELTA_FLAG or AFTER_SWAP_RETURNS_DELTA_FLAG the hook may alter the swap input/output. Integrators should perform checks on the returned swapDelta.","params":{"hookData":"The data to pass through to the swap hooks","key":"The pool to swap in","params":"The parameters for swapping"},"returns":{"swapDelta":"The balance delta of the address swapping"}},"sync(address)":{"details":"This MUST be called before any ERC20 tokens are sent into the contract, but can be skipped for native tokens because the amount to settle is determined by the sent value.","params":{"currency":"The currency whose balance to sync"}},"take(address,address,uint256)":{"details":"Can also be used as a mechanism for _free_ flash loans","params":{"amount":"The amount of currency to withdraw","currency":"The currency to withdraw from the pool manager","to":"The address to withdraw to"}},"transfer(address,uint256,uint256)":{"params":{"amount":"The amount of the token.","id":"The id of the token.","receiver":"The address of the receiver."},"returns":{"_0":"bool True, always, unless the function reverts"}},"transferFrom(address,address,uint256,uint256)":{"params":{"amount":"The amount of the token.","id":"The id of the token.","receiver":"The address of the receiver.","sender":"The address of the sender."},"returns":{"_0":"bool True, always, unless the function reverts"}},"unlock(bytes)":{"details":"The only functions callable without an unlocking are `initialize` and `updateDynamicLPFee`","params":{"data":"Any data to pass to the callback, via `IUnlockCallback(msg.sender).unlockCallback(data)`"},"returns":{"result":"The data returned by the call to `IUnlockCallback(msg.sender).unlockCallback(data)`"}},"updateDynamicLPFee((address,address,uint24,int24,address),uint24)":{"params":{"key":"The key of the pool to update dynamic LP fees for","newDynamicLPFee":"The new dynamic pool LP fee"}}},"version":1},"userdoc":{"kind":"user","methods":{"allowance(address,address,uint256)":{"notice":"Spender allowance of an id."},"approve(address,uint256,uint256)":{"notice":"Approves an amount of an id to a spender."},"balanceOf(address,uint256)":{"notice":"Owner balance of an id."},"burn(address,uint256,uint256)":{"notice":"Called by the user to move value from ERC6909 balance"},"clear(address,uint256)":{"notice":"WARNING - Any currency that is cleared, will be non-retreivable, and locked in the contract permanently. A call to clear will zero out a positive balance WITHOUT a corresponding transfer."},"collectProtocolFees(address,address,uint256)":{"notice":"Collects the protocol fees for a given recipient and currency, returning the amount collected"},"donate((address,address,uint24,int24,address),uint256,uint256,bytes)":{"notice":"Donate the given currency amounts to the pool with the given pool key"},"extsload(bytes32)":{"notice":"Called by external contracts to access granular pool state"},"extsload(bytes32,uint256)":{"notice":"Called by external contracts to access granular pool state"},"extsload(bytes32[])":{"notice":"Called by external contracts to access sparse pool state"},"exttload(bytes32)":{"notice":"Called by external contracts to access transient storage of the contract"},"exttload(bytes32[])":{"notice":"Called by external contracts to access sparse transient pool state"},"initialize((address,address,uint24,int24,address),uint160,bytes)":{"notice":"Initialize the state for a given pool ID"},"isOperator(address,address)":{"notice":"Checks if a spender is approved by an owner as an operator"},"mint(address,uint256,uint256)":{"notice":"Called by the user to move value into ERC6909 balance"},"modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":{"notice":"Modify the liquidity for the given pool"},"protocolFeeController()":{"notice":"Returns the current protocol fee controller address"},"protocolFeesAccrued(address)":{"notice":"Given a currency address, returns the protocol fees accrued in that currency"},"setOperator(address,bool)":{"notice":"Sets or removes an operator for the caller."},"setProtocolFee((address,address,uint24,int24,address),uint24)":{"notice":"Sets the protocol fee for the given pool"},"setProtocolFeeController(address)":{"notice":"Sets the protocol fee controller"},"settle()":{"notice":"Called by the user to pay what is owed"},"settleFor(address)":{"notice":"Called by the user to pay on behalf of another address"},"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)":{"notice":"Swap against the given pool"},"sync(address)":{"notice":"Writes the current ERC20 balance of the specified currency to transient storage This is used to checkpoint balances for the manager and derive deltas for the caller."},"take(address,address,uint256)":{"notice":"Called by the user to net out some value owed to the user"},"transfer(address,uint256,uint256)":{"notice":"Transfers an amount of an id from the caller to a receiver."},"transferFrom(address,address,uint256,uint256)":{"notice":"Transfers an amount of an id from a sender to a receiver."},"unlock(bytes)":{"notice":"All interactions on the contract that account deltas require unlocking. A caller that calls `unlock` must implement `IUnlockCallback(msg.sender).unlockCallback(data)`, where they interact with the remaining functions on this contract."},"updateDynamicLPFee((address,address,uint24,int24,address),uint24)":{"notice":"Updates the pools lp fees for the a pool that has enabled dynamic lp fees."}},"version":1}},"settings":{"remappings":["@ensdomains/=node_modules/@ensdomains/","@openzeppelin/=lib/openzeppelin-contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/PoolManager.sol":"PoolManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/solmate/src/auth/Owned.sol":{"keccak256":"0xfedb27d14c508342c33eb067c9a02eabcdb0f9dcf93b04ded1001f580d12d0ea","urls":["bzz-raw://1ff52bbee698b9cf9e4574615e6550be0887ccf355f6571e23d6f25b332e79b4","dweb:/ipfs/QmVorA2apojVRStzS7h8aFccR3Uv32G6HVtBtFHZrE7YXx"],"license":"AGPL-3.0-only"},"src/ERC6909.sol":{"keccak256":"0x22476a1c183be1b547a509b3e6906abaccb6408375f798fce805ff7877aca09f","urls":["bzz-raw://e85580e1563ea0556705132fb6bd038ca4aa355749039923853ebcb76b7c84e6","dweb:/ipfs/QmVoxPrbagRKpFdRWoaCSKmStYLZrhNFuedcuyGycSGR7q"],"license":"MIT"},"src/ERC6909Claims.sol":{"keccak256":"0xf496ef3a5a9bf4f4aa2eec951dbeff09a01ef058bb9f64b1664cf46c9e85cd49","urls":["bzz-raw://2a0a97c359a7a4c526ba9fc4ceb20af8050f9cf7886ea7e1f38c9c10b4a3750c","dweb:/ipfs/QmPy6pCQbvzCdJRqG1thHRSwEZoLBAaLo3KQnueL3wxb8i"],"license":"MIT"},"src/Extsload.sol":{"keccak256":"0x784074bd04a1541c7c6ace074e30245746133fd37c3ba16b025dce394db986ce","urls":["bzz-raw://35f1f4fb306bf01e98b7eca012b85f3ab978b39fa5136193363e2519c4435e51","dweb:/ipfs/QmeGrjGMt71dJymVhkEadh5CuCW5GxRqNEZLi5AJxvC5tU"],"license":"MIT"},"src/Exttload.sol":{"keccak256":"0x769ee2733a08112c652274f4b972c45fb56cc46109f233b9a30f81561b15dd54","urls":["bzz-raw://dd19e88d50ae77c1ed5581baca1c75b3fb828d0b58cded90188d55c4e336266c","dweb:/ipfs/Qmc8YM6Tfpwwa4qivHHzRxNdhZzdzGiD7VexWsDvkaQTxG"],"license":"MIT"},"src/NoDelegateCall.sol":{"keccak256":"0x5c238701785d16c58a1598daec0f72a2aaf47d5d017b9dd7441cc8093b65b202","urls":["bzz-raw://696cf79b74bc38e7316d94dfd8bdd9579a94f74121e9b65d2613eb59c106ea50","dweb:/ipfs/QmRttHmshQJ5E7EGaeBC7yT4wyzthNXZQJn7sy2nJvb4dB"],"license":"BUSL-1.1"},"src/PoolManager.sol":{"keccak256":"0xf2c357d79981846e45452e44f6b9161b8edfe86ae8104b37d3c1d52a839615e5","urls":["bzz-raw://7fc0d49c506b30767b3b30396e5bfecacf296fa7dcc34744f1f8faf374ed4384","dweb:/ipfs/QmcBKAQpRgBpxSpYhzmrn3oLxAyDVqeck8UwLBX1psk7JM"],"license":"BUSL-1.1"},"src/ProtocolFees.sol":{"keccak256":"0x03e05338633abb24c705824f411621a612d85388661062661db1cd9991f7ad11","urls":["bzz-raw://2d97558d2943c315439fcbc767888355243a551a0e0712cc057dd3a07321b971","dweb:/ipfs/QmcKh65thoezEvVoyAignGPTRsory3AsVALTaS3Z1kELF9"],"license":"GPL-2.0-or-later"},"src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"src/interfaces/IHooks.sol":{"keccak256":"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0","urls":["bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa","dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8"],"license":"MIT"},"src/interfaces/IPoolManager.sol":{"keccak256":"0x7dd9b494e616cbf623c21e2b8c4e8375acf27d307b02700d4965170bff3bb838","urls":["bzz-raw://381e66840cc15dc602b56a55554aa4ae581e4cfc7ddbfb51f838e6b40981664b","dweb:/ipfs/QmeLdh22eqpj53C8562oN7pE4oWR1sjD82TKdV3sMq3tYu"],"license":"MIT"},"src/interfaces/IProtocolFeeController.sol":{"keccak256":"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c","urls":["bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6","dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G"],"license":"MIT"},"src/interfaces/IProtocolFees.sol":{"keccak256":"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297","urls":["bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f","dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw"],"license":"MIT"},"src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7","urls":["bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410","dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8"],"license":"GPL-2.0-or-later"},"src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"src/libraries/BitMath.sol":{"keccak256":"0x59e18adcff8917b0965a240d88b34d5d800e0efebd5f40c5594ddcf28a15949b","urls":["bzz-raw://d358beebf8d5079520b6e138d744e5063ecbfbeae355c08af86a3b74afa71b09","dweb:/ipfs/QmUXmAK9aoxnaeykq8MLXoRKP8yGTDyY3jPFMwHnqRxf46"],"license":"GPL-2.0-or-later"},"src/libraries/CurrencyDelta.sol":{"keccak256":"0xb1eb18c3794b67f4f710229df279d3a630a963194fbbeb51906198ec7145b98e","urls":["bzz-raw://e5ea08b69754250cf04cc544785320f5c8fd8b9a65e5d9e0bc44aadadaa9ea0c","dweb:/ipfs/QmWW1qfqGydoiSeDtVVQ53nV3FphuUgH1PFUC3uGaWzxWR"],"license":"BUSL-1.1"},"src/libraries/CurrencyReserves.sol":{"keccak256":"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6","urls":["bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7","dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3"],"license":"BUSL-1.1"},"src/libraries/CustomRevert.sol":{"keccak256":"0x2b70cc5e6ca761f4b3110bd7ea6c6064167df260a669b08b2c96c115d5c944ff","urls":["bzz-raw://0f2ae8f2d7da6103f3d884935fb5da10c5463b4d229b31de9e592c4d2275e0bc","dweb:/ipfs/QmWeVnC18TEqGy7fp2GApReNUuZFfDAEsWkycDV8N1LAmy"],"license":"MIT"},"src/libraries/FixedPoint128.sol":{"keccak256":"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835","urls":["bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d","dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT"],"license":"GPL-2.0-or-later"},"src/libraries/FixedPoint96.sol":{"keccak256":"0xf0a545fc5bbc271e8dbd191413dc03e8725d1f003df4d9d36ea7cdb73058c417","urls":["bzz-raw://5d1013d8b5c93024526f129b0a9271b35c578da09bcfe6c3240ff4d590ebc196","dweb:/ipfs/QmX1GyF9jJhYGXst6PyK6HJvcfVQ69nNTnuBEBaEiAZPv7"],"license":"GPL-2.0-or-later"},"src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0x028173d4dfa579c49e1d6aa0b0f4d9e0b5b5812bb573586fff53f33926720699","urls":["bzz-raw://98cf56f5917c23331a641363c31d353d58c9a3053bb7d64e62bed5161a23174a","dweb:/ipfs/QmfVufa7owRy4VxYYGHN87F3YGNWvuSq1cpCpJjATvf6CM"],"license":"MIT"},"src/libraries/LPFeeLibrary.sol":{"keccak256":"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece","urls":["bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896","dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo"],"license":"GPL-2.0-or-later"},"src/libraries/LiquidityMath.sol":{"keccak256":"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf","urls":["bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc","dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa"],"license":"GPL-2.0-or-later"},"src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"src/libraries/NonZeroDeltaCount.sol":{"keccak256":"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586","urls":["bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2","dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC"],"license":"BUSL-1.1"},"src/libraries/ParseBytes.sol":{"keccak256":"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579","urls":["bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8","dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf"],"license":"GPL-2.0-or-later"},"src/libraries/Pool.sol":{"keccak256":"0x7a506727ae59f5b5487a0a16ec1d7038b7c2a4ee5f4a7fa7c444ec7df6ad5a7c","urls":["bzz-raw://befdd15aee06a7b2a3c64cb899220ec03a1ae8470ad17e19050bcca1ac5266a8","dweb:/ipfs/QmWPfBgfp5VKnku9ZtKXwYycyKdAZuCj6778T2HFrfQ61H"],"license":"BUSL-1.1"},"src/libraries/Position.sol":{"keccak256":"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80","urls":["bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce","dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu"],"license":"BUSL-1.1"},"src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0x2739e8f54707c6a0e23f9c61a0783dd18b107c3fc287b2827f1ab4b41f891902","urls":["bzz-raw://2e3b154410bbfcbe8808c6dfb74c4bbbac50a59e228cee59b34e169dbd34ee1a","dweb:/ipfs/QmcRoM6T2F7FTHtGdD5aRiVthCon8oiWur661GCrk5FejP"],"license":"GPL-2.0-or-later"},"src/libraries/SafeCast.sol":{"keccak256":"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60","urls":["bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4","dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM"],"license":"GPL-2.0-or-later"},"src/libraries/SqrtPriceMath.sol":{"keccak256":"0x1a5a8fd4a21cec19c0c253201e9b5534e8d810eb132bceee04af37fd78adb5db","urls":["bzz-raw://afa2a5950c9057fd3c00a6f413fba91c4c7dab06d573f7349aaf8f806c0e1f31","dweb:/ipfs/Qmb2m62xAPRBtxtx3sV7MAFw2vHWNm9m49ctPHmFX5hozt"],"license":"GPL-2.0-or-later"},"src/libraries/SwapMath.sol":{"keccak256":"0xa8cedd0f63b2d8b6faac60455f499c79816f53fbd86f3bb0706fae426b2c231e","urls":["bzz-raw://8d926c2df899b21811862d106d5e1d2b5bdf83c76ae6ff4216e7c9ce443d8e75","dweb:/ipfs/QmTTVSCumUXZ4vf3R1GwfqJSTgLFyjueuxZkRH9U6dsTb3"],"license":"GPL-2.0-or-later"},"src/libraries/TickBitmap.sol":{"keccak256":"0x23abd96aa808657304affd775666d7cc5fb0ab564f87d1b65fbf8dc5877d9cd6","urls":["bzz-raw://4c7686aefb704a3efe97cc0e8f180ed48f7667f5ae69d3754962f04352c66b79","dweb:/ipfs/QmULiCBW9s2hB6SmnJTi2wiAwgkLXpZJcdVZm9f77zDNuc"],"license":"MIT"},"src/libraries/TickMath.sol":{"keccak256":"0x64c668177d82bb185d902fb2190630ccb67babb6439422979692ac2f8dfb6dcd","urls":["bzz-raw://e2714a025df18c22f20b358b7143e8a5c55cffb20c7de292be0376845a5f0408","dweb:/ipfs/QmWaeCkxwkVuReFUSK2nDat1BB5DJ8BUowwGwmVyKpsrME"],"license":"GPL-2.0-or-later"},"src/libraries/UnsafeMath.sol":{"keccak256":"0xe9b87da934af38419d4b5f20cc09943dbb569425448fc23fdc5ec6aebbb63c84","urls":["bzz-raw://29838c28905c34f9602a453759b55f5acc6aff02bf6d7a6afac5d1a245dd5db3","dweb:/ipfs/QmfN5bhLFw1CsnnaJQNZd3bLpLufQcwt9ztaR71LA43UGY"],"license":"GPL-2.0-or-later"},"src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"src/types/Currency.sol":{"keccak256":"0x03fa1f70ccb3895c63d484ed08892dad57ccb01a194d19b85425348c4fb6a711","urls":["bzz-raw://69bb811fe4ce219a033e950d2bfbd34a511ac5d4db7836c86e8c471c7a61b75a","dweb:/ipfs/QmX2LoUGmRn28P1UfwQcfexJ2kdR8kG6UZrsM8d1Nit69G"],"license":"MIT"},"src/types/PoolId.sol":{"keccak256":"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8","urls":["bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f","dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB"],"license":"MIT"},"src/types/PoolKey.sol":{"keccak256":"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162","urls":["bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf","dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY"],"license":"MIT"},"src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"}},"version":1},"id":35} \ No newline at end of file diff --git a/src/artifacts/PoolModifyLiquidityTest.json b/src/artifacts/PoolModifyLiquidityTest.json deleted file mode 100644 index d36aed5..0000000 --- a/src/artifacts/PoolModifyLiquidityTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_manager","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"manager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"view"},{"type":"function","name":"modifyLiquidity","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct IPoolManager.ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"hookData","type":"bytes","internalType":"bytes"},{"name":"settleUsingBurn","type":"bool","internalType":"bool"},{"name":"takeClaims","type":"bool","internalType":"bool"}],"outputs":[{"name":"delta","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"payable"},{"type":"function","name":"modifyLiquidity","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct IPoolManager.ModifyLiquidityParams","components":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"delta","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"payable"},{"type":"function","name":"unlockCallback","inputs":[{"name":"rawData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x60a034607a57601f61180a38819003918201601f19168301916001600160401b03831184841017607e57808492602094604052833981010312607a57516001600160a01b0381168103607a576080526040516117779081610093823960805181818160b50152818161099001528181610ac101526111390152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80630a5b11e414610ae5578063481c6a7514610a775780635a6bcfda14610790576391dd734614610045575f80fd5b346107795760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107795760043567ffffffffffffffff8111610779573660238201121561077957806004013567ffffffffffffffff81116107795781016024810190368211610779577f00000000000000000000000000000000000000000000000000000000000000009273ffffffffffffffffffffffffffffffffffffffff841690813303610779576020818403126107795760248101359067ffffffffffffffff82116107795701906101a082840312610779576040519161012d83610c27565b61013960248201610ce9565b835260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08286030112610779576040519361017485610c70565b61018060448301610ce9565b855261018e60648301610ce9565b6020860152608482013562ffffff811681036107795760408601526101b560a48301610d0a565b606086015260c482013573ffffffffffffffffffffffffffffffffffffffff81168103610779577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c83608093602493858a01526020880198895203010112610779576040519561022487610c8c565b61023060e48301610d0a565b875261023f6101048301610d0a565b6020880152610124820135604088015261014482013560608801526040840196875261016482013567ffffffffffffffff81116107795761039f96602461028892850101610e8a565b916060850192835260406102b36101a46102a56101848501610ed0565b936080890194855201610ed0565b9360a087019485526102e060a08951208b51805160020b6060602083015160020b92015192309089610f80565b5050956103715f8c6103b38c519151955187519e8f97889687957f5a6bcfda000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60a48701526020820151900b60c4860152604081015160e486015260600151610104850152565b610140610124840152610144830190610edd565b03925af1968715610785575f9761074d575b506103eb60a08751208951805160020b6060602083015160020b92015192309087610f80565b50509061042a73ffffffffffffffffffffffffffffffffffffffff88515116309073ffffffffffffffffffffffffffffffffffffffff89511690611114565b939150506fffffffffffffffffffffffffffffffff61047e73ffffffffffffffffffffffffffffffffffffffff60208b51015116309073ffffffffffffffffffffffffffffffffffffffff8b511690611114565b9891505016600f0b9060408b510151915f8382019384129112908015821691151617610720576fffffffffffffffffffffffffffffffff16600f0b036106c2576040610548995101515f81125f1461067d57505f82138015610674575b6104e490610f20565b5f8212801561066b575b6104f89015610f20565b5f821261061d575b5f85126105ca575b505f8113610583575b505f831361054c575b868660405190602082015260208152610534604082610ca8565b604051918291602083526020830190610edd565b0390f35b73ffffffffffffffffffffffffffffffffffffffff80602061057997510151169451169151151593611545565b5f8080808061051a565b6105c49073ffffffffffffffffffffffffffffffffffffffff875151169073ffffffffffffffffffffffffffffffffffffffff875116848651151593611545565b5f610511565b6106179073ffffffffffffffffffffffffffffffffffffffff602089510151169073ffffffffffffffffffffffffffffffffffffffff8851168561060d89610f54565b925115159361120d565b5f610508565b61066673ffffffffffffffffffffffffffffffffffffffff8851511673ffffffffffffffffffffffffffffffffffffffff88511661065a85610f54565b9086855115159361120d565b610500565b505f85126104ee565b505f85136104db565b5f12156104f8575f821280156106b9575b61069790610f20565b5f821380156106b0575b6106ab9015610f20565b6104f8565b505f85136106a1565b505f851261068e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6c6971756964697479206368616e676520696e636f72726563740000000000006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9096506040813d60401161077d575b8161076960409383610ca8565b810103126107795751955f6103c5565b5f80fd5b3d915061075c565b6040513d5f823e3d90fd5b6101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610779576107c436610d18565b6107cd36610de4565b90610124359167ffffffffffffffff83116107795761093b5f9273ffffffffffffffffffffffffffffffffffffffff9261080e610976963690600401610e8a565b916108fc6040519361081f85610c27565b3385526020850192835260408501938452606085019081526108e760808601948986526108b560a08801958b87526040519a8b996020808c0152511660408a015251606089019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051600290810b6101008901526020820151900b610120880152604081015161014088015260600151610160870152565b516101a06101808601526101e0850190610edd565b915115156101a08401525115156101c0830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610ca8565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610edd565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610785575f916109fd575b50602081805181010312610779576020015147806109e4575b602082604051908152f35b5f80808093335af1156109f757816109d9565b33611656565b90503d805f833e610a0e8183610ca8565b8101906020818303126107795780519067ffffffffffffffff8211610779570181601f8201121561077957805190610a4582610e50565b92610a536040519485610ca8565b8284526020838301011161077957815f9260208093018386015e83010152816109c0565b34610779575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261077957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261077957610b1936610d18565b610b2236610de4565b906101243567ffffffffffffffff811161077957610b44903690600401610e8a565b91610144359283151580940361077957610164359283151580940361077957610976945f946108fc61093b946108e773ffffffffffffffffffffffffffffffffffffffff976108b560405197610b9989610c27565b3389526020890190815260408901928352606089019485526080890197885260a089019687526040519a8b996020808c0152511660408a015251606089019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c0810190811067ffffffffffffffff821117610c4357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff821117610c4357604052565b6080810190811067ffffffffffffffff821117610c4357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610c4357604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361077957565b35908160020b820361077957565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126107795760405190610d4f82610c70565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361077957815260243573ffffffffffffffffffffffffffffffffffffffff8116810361077957602082015260443562ffffff811681036107795760408201526064358060020b81036107795760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036107795760800152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c60809101126107795760405190610e1b82610c8c565b8160a4358060020b810361077957815260c4358060020b810361077957602082015260e4356040820152606061010435910152565b67ffffffffffffffff8111610c4357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561077957803590610ea182610e50565b92610eaf6040519485610ca8565b8284526020838301011161077957815f926020809301838601378301015290565b3590811515820361077957565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b15610f2757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f80000000000000000000000000000000000000000000000000000000000000008114610720575f0390565b94939290926040519460268601526006850152600384015282525f603a600c8401209281604082015281602082015252604051602081019182526006604082015260408152610fd0606082610ca8565b51902091600683018093116107205760445f9273ffffffffffffffffffffffffffffffffffffffff946040519060208201928352604082015260408152611018606082610ca8565b51902060405194859384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260036024840152165afa908115610785575f91611078575b50602081015160408201516060909201519092565b90503d805f833e6110898183610ca8565b8101906020818303126107795780519067ffffffffffffffff821161077957019080601f830112156107795781519167ffffffffffffffff8311610c43578260051b90604051936110dd6020840186610ca8565b845260208085019282010192831161077957602001905b828210611104575050505f611063565b81518152602091820191016110f4565b929061112090846116c2565b9273ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016918161116584836116c2565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa908115610785575f916111b7575090565b90506020813d6020116111de575b816111d260209383610ca8565b81010312610779575190565b3d91506111c5565b90816020910312610779575180151581036107795790565b90816020910312610779575190565b9293156112af5773ffffffffffffffffffffffffffffffffffffffff16803b15610779576040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f908290818381606481015b03925af18015610785576112a35750565b5f6112ad91610ca8565b565b9173ffffffffffffffffffffffffffffffffffffffff168061134d57505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af18015610785576113225750565b6113439060203d602011611346575b61133b8183610ca8565b8101906111fe565b50565b503d611331565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b1561077957604051937fa58411940000000000000000000000000000000000000000000000000000000085525f948360048201525f8160248183895af180156107855761151c575b5073ffffffffffffffffffffffffffffffffffffffff16843082146114a8576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af1801561149d57916020918493611470575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561146457506113225750565b604051903d90823e3d90fd5b61148f90833d8511611496575b6114878183610ca8565b8101906111e6565b505f611425565b503d61147d565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561149d579160209184936114ff575b50611427565b61151590833d8511611496576114878183610ca8565b505f6114f9565b6115299195505f90610ca8565b5f9373ffffffffffffffffffffffffffffffffffffffff6113b1565b9293156115ce5773ffffffffffffffffffffffffffffffffffffffff16803b15610779576040517f156e29f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f90829081838160648101611292565b90929073ffffffffffffffffffffffffffffffffffffffff16803b15610779575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610785576112a35750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d604051937f8549db59000000000000000000000000000000000000000000000000000000008552600485015260406024850152806044850152805f606486013e011660640190fd5b73ffffffffffffffffffffffffffffffffffffffff16806116e257503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610785575f916111b757509056fea2646970667358221220f201a3db834d256ef9c17bd0bfc3ae58e68d2e0119e691002c2c47fe55c36f3464736f6c634300081a0033","sourceMap":"679:3173:91:-:0;;;;;;;;;;;;;-1:-1:-1;;679:3173:91;;;;-1:-1:-1;;;;;679:3173:91;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;679:3173:91;;;;;;700:18:97;;679:3173:91;;;;;;;;700:18:97;679:3173:91;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;679:3173:91;;;;;;-1:-1:-1;679:3173:91;;;;;-1:-1:-1;679:3173:91","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c80630a5b11e414610ae5578063481c6a7514610a775780635a6bcfda14610790576391dd734614610045575f80fd5b346107795760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107795760043567ffffffffffffffff8111610779573660238201121561077957806004013567ffffffffffffffff81116107795781016024810190368211610779577f00000000000000000000000000000000000000000000000000000000000000009273ffffffffffffffffffffffffffffffffffffffff841690813303610779576020818403126107795760248101359067ffffffffffffffff82116107795701906101a082840312610779576040519161012d83610c27565b61013960248201610ce9565b835260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08286030112610779576040519361017485610c70565b61018060448301610ce9565b855261018e60648301610ce9565b6020860152608482013562ffffff811681036107795760408601526101b560a48301610d0a565b606086015260c482013573ffffffffffffffffffffffffffffffffffffffff81168103610779577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1c83608093602493858a01526020880198895203010112610779576040519561022487610c8c565b61023060e48301610d0a565b875261023f6101048301610d0a565b6020880152610124820135604088015261014482013560608801526040840196875261016482013567ffffffffffffffff81116107795761039f96602461028892850101610e8a565b916060850192835260406102b36101a46102a56101848501610ed0565b936080890194855201610ed0565b9360a087019485526102e060a08951208b51805160020b6060602083015160020b92015192309089610f80565b5050956103715f8c6103b38c519151955187519e8f97889687957f5a6bcfda000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60a48701526020820151900b60c4860152604081015160e486015260600151610104850152565b610140610124840152610144830190610edd565b03925af1968715610785575f9761074d575b506103eb60a08751208951805160020b6060602083015160020b92015192309087610f80565b50509061042a73ffffffffffffffffffffffffffffffffffffffff88515116309073ffffffffffffffffffffffffffffffffffffffff89511690611114565b939150506fffffffffffffffffffffffffffffffff61047e73ffffffffffffffffffffffffffffffffffffffff60208b51015116309073ffffffffffffffffffffffffffffffffffffffff8b511690611114565b9891505016600f0b9060408b510151915f8382019384129112908015821691151617610720576fffffffffffffffffffffffffffffffff16600f0b036106c2576040610548995101515f81125f1461067d57505f82138015610674575b6104e490610f20565b5f8212801561066b575b6104f89015610f20565b5f821261061d575b5f85126105ca575b505f8113610583575b505f831361054c575b868660405190602082015260208152610534604082610ca8565b604051918291602083526020830190610edd565b0390f35b73ffffffffffffffffffffffffffffffffffffffff80602061057997510151169451169151151593611545565b5f8080808061051a565b6105c49073ffffffffffffffffffffffffffffffffffffffff875151169073ffffffffffffffffffffffffffffffffffffffff875116848651151593611545565b5f610511565b6106179073ffffffffffffffffffffffffffffffffffffffff602089510151169073ffffffffffffffffffffffffffffffffffffffff8851168561060d89610f54565b925115159361120d565b5f610508565b61066673ffffffffffffffffffffffffffffffffffffffff8851511673ffffffffffffffffffffffffffffffffffffffff88511661065a85610f54565b9086855115159361120d565b610500565b505f85126104ee565b505f85136104db565b5f12156104f8575f821280156106b9575b61069790610f20565b5f821380156106b0575b6106ab9015610f20565b6104f8565b505f85136106a1565b505f851261068e565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f6c6971756964697479206368616e676520696e636f72726563740000000000006044820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b9096506040813d60401161077d575b8161076960409383610ca8565b810103126107795751955f6103c5565b5f80fd5b3d915061075c565b6040513d5f823e3d90fd5b6101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610779576107c436610d18565b6107cd36610de4565b90610124359167ffffffffffffffff83116107795761093b5f9273ffffffffffffffffffffffffffffffffffffffff9261080e610976963690600401610e8a565b916108fc6040519361081f85610c27565b3385526020850192835260408501938452606085019081526108e760808601948986526108b560a08801958b87526040519a8b996020808c0152511660408a015251606089019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051600290810b6101008901526020820151900b610120880152604081015161014088015260600151610160870152565b516101a06101808601526101e0850190610edd565b915115156101a08401525115156101c0830152037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282610ca8565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190610edd565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610785575f916109fd575b50602081805181010312610779576020015147806109e4575b602082604051908152f35b5f80808093335af1156109f757816109d9565b33611656565b90503d805f833e610a0e8183610ca8565b8101906020818303126107795780519067ffffffffffffffff8211610779570181601f8201121561077957805190610a4582610e50565b92610a536040519485610ca8565b8284526020838301011161077957815f9260208093018386015e83010152816109c0565b34610779575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261077957602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b6101807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261077957610b1936610d18565b610b2236610de4565b906101243567ffffffffffffffff811161077957610b44903690600401610e8a565b91610144359283151580940361077957610164359283151580940361077957610976945f946108fc61093b946108e773ffffffffffffffffffffffffffffffffffffffff976108b560405197610b9989610c27565b3389526020890190815260408901928352606089019485526080890197885260a089019687526040519a8b996020808c0152511660408a015251606089019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c0810190811067ffffffffffffffff821117610c4357604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff821117610c4357604052565b6080810190811067ffffffffffffffff821117610c4357604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117610c4357604052565b359073ffffffffffffffffffffffffffffffffffffffff8216820361077957565b35908160020b820361077957565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126107795760405190610d4f82610c70565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361077957815260243573ffffffffffffffffffffffffffffffffffffffff8116810361077957602082015260443562ffffff811681036107795760408201526064358060020b81036107795760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036107795760800152565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c60809101126107795760405190610e1b82610c8c565b8160a4358060020b810361077957815260c4358060020b810361077957602082015260e4356040820152606061010435910152565b67ffffffffffffffff8111610c4357601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f8201121561077957803590610ea182610e50565b92610eaf6040519485610ca8565b8284526020838301011161077957815f926020809301838601378301015290565b3590811515820361077957565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b15610f2757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52600160045260245ffd5b7f80000000000000000000000000000000000000000000000000000000000000008114610720575f0390565b94939290926040519460268601526006850152600384015282525f603a600c8401209281604082015281602082015252604051602081019182526006604082015260408152610fd0606082610ca8565b51902091600683018093116107205760445f9273ffffffffffffffffffffffffffffffffffffffff946040519060208201928352604082015260408152611018606082610ca8565b51902060405194859384927f35fd631a000000000000000000000000000000000000000000000000000000008452600484015260036024840152165afa908115610785575f91611078575b50602081015160408201516060909201519092565b90503d805f833e6110898183610ca8565b8101906020818303126107795780519067ffffffffffffffff821161077957019080601f830112156107795781519167ffffffffffffffff8311610c43578260051b90604051936110dd6020840186610ca8565b845260208085019282010192831161077957602001905b828210611104575050505f611063565b81518152602091820191016110f4565b929061112090846116c2565b9273ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016918161116584836116c2565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa908115610785575f916111b7575090565b90506020813d6020116111de575b816111d260209383610ca8565b81010312610779575190565b3d91506111c5565b90816020910312610779575180151581036107795790565b90816020910312610779575190565b9293156112af5773ffffffffffffffffffffffffffffffffffffffff16803b15610779576040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f908290818381606481015b03925af18015610785576112a35750565b5f6112ad91610ca8565b565b9173ffffffffffffffffffffffffffffffffffffffff168061134d57505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af18015610785576113225750565b6113439060203d602011611346575b61133b8183610ca8565b8101906111fe565b50565b503d611331565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b1561077957604051937fa58411940000000000000000000000000000000000000000000000000000000085525f948360048201525f8160248183895af180156107855761151c575b5073ffffffffffffffffffffffffffffffffffffffff16843082146114a8576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af1801561149d57916020918493611470575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561146457506113225750565b604051903d90823e3d90fd5b61148f90833d8511611496575b6114878183610ca8565b8101906111e6565b505f611425565b503d61147d565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af1801561149d579160209184936114ff575b50611427565b61151590833d8511611496576114878183610ca8565b505f6114f9565b6115299195505f90610ca8565b5f9373ffffffffffffffffffffffffffffffffffffffff6113b1565b9293156115ce5773ffffffffffffffffffffffffffffffffffffffff16803b15610779576040517f156e29f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f90829081838160648101611292565b90929073ffffffffffffffffffffffffffffffffffffffff16803b15610779575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610785576112a35750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d604051937f8549db59000000000000000000000000000000000000000000000000000000008552600485015260406024850152806044850152805f606486013e011660640190fd5b73ffffffffffffffffffffffffffffffffffffffff16806116e257503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610785575f916111b757509056fea2646970667358221220f201a3db834d256ef9c17bd0bfc3ae58e68d2e0119e691002c2c47fe55c36f3464736f6c634300081a0033","sourceMap":"679:3173:91:-:0;;;;;;;;;;;;;;;;;;;;;;1782:76;679:3173;1782:76;;;679:3173;;;;;;1782:76;;;679:3173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2193:7;679:3173;;;;2171:10;;;:30;679:3173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;2316:141;679:3173;2353:8;;357:89:112;2385:11:91;;679:3173;;;;;;2408:21;;679:3173;;;2431:16;;679:3173;2378:4;;2316:141;;;:::i;:::-;2516:8;;;679:3173;;2516:8;679:3173;2516:8;;2526:11;;2539:13;;679:3173;;2492:61;;;;;;;679:3173;2492:61;;679:3173;2492:61;;679:3173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2492:61;;;;;;;;;679:3173;2492:61;;;679:3173;2630:8;2593:141;679:3173;2630:8;;357:89:112;2662:11:91;;679:3173;;;;;;2685:21;;679:3173;;;2708:16;;679:3173;2378:4;;2593:141;;;:::i;:::-;2781:8;;;2766:62;679:3173;2781:8;;679:3173;;2378:4;679:3173;;;;;2766:62;;:::i;:::-;2874:8;;;;679:3173;2859:62;679:3173;;2874:8;;:18;679:3173;;2378:4;679:3173;;;;;2859:62;;:::i;:::-;679:3173;;;;;;;2979:11;679:3173;2979:11;;:26;679:3173;;;;;;;;;;;;;;;;;;;;;;;;;;2953:78;679:3173;;;;3086:11;;:26;679:3173;;3086:30;;3082:290;679:3173;;;3139:10;679:3173;3139:10;;:24;;;;3082:290;3132:32;;;:::i;:::-;679:3173;3187:10;;:24;;;;3082:290;3178:35;3185:27;;3178:35;:::i;:::-;679:3173;3386:10;;3382:103;;3082:290;679:3173;3499:10;;3495:103;;3082:290;3612:10;679:3173;3612:10;;3608:95;;3082:290;3717:10;679:3173;3717:10;;3713:95;;3082:290;679:3173;;;;3826:17;679:3173;3826:17;;679:3173;;3826:17;;;679:3173;3826:17;;:::i;:::-;679:3173;;;;;;;;;;;;;:::i;:::-;;;;3713:95;679:3173;3729:8;679:3173;3792:15;3729:8;;:18;679:3173;;;;;;;;;3792:15;;:::i;:::-;3713:95;;;;;;;3608;3687:15;3624:8;679:3173;3624:8;;679:3173;;;;;;;;;;;;3687:15;;:::i;:::-;3608:95;;;3495:103;3577:20;3511:8;679:3173;;3511:8;;:18;679:3173;;;;;;;3567:7;;;;:::i;:::-;679:3173;;;;3577:20;;:::i;:::-;3495:103;;;3382;3464:20;679:3173;3398:8;;679:3173;;;;;;3454:7;;;:::i;:::-;679:3173;;;;;;3464:20;;:::i;:::-;3382:103;;3187:24;-1:-1:-1;679:3173:91;3201:10;;3187:24;;3139;-1:-1:-1;679:3173:91;3153:10;;3139:24;;3082:290;679:3173;-1:-1:-1;3230:142:91;3082:290;3230:142;679:3173;3287:10;;:24;;;;3230:142;3280:32;;;:::i;:::-;679:3173;3335:10;;:24;;;;3230:142;3326:35;3333:27;;3326:35;:::i;:::-;3082:290;;3335:24;-1:-1:-1;679:3173:91;3349:10;;3335:24;;3287;-1:-1:-1;679:3173:91;3301:10;;3287:24;;679:3173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2492:61;;;;679:3173;2492:61;;679:3173;2492:61;;;;;;679:3173;2492:61;;;:::i;:::-;;;679:3173;;;;;2492:61;;;;679:3173;;;;2492:61;;;-1:-1:-1;2492:61:91;;;679:3173;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;1771:88;679:3173;;;;;;;;;;;;:::i;:::-;1402:52;679:3173;;;;;;;:::i;:::-;1795:10;679:3173;;1782:76;;;679:3173;;;;1782:76;;679:3173;;;1782:76;;;679:3173;;;;1782:76;;;679:3173;;;;;1782:76;;;679:3173;;;;;;1771:88;;;1782:76;1771:88;;;679:3173;;;;;;;;1782:76;679:3173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1771:88;;;;;;;;:::i;:::-;679:3173;;1756:104;;;;679:3173;1756:104;;1782:76;679:3173;1756:104;;679:3173;;;;;;:::i;:::-;1756:104;:7;;679:3173;1756:7;679:3173;1756:104;;;;;;;679:3173;1756:104;;;679:3173;;1782:76;679:3173;;;1732:166;;679:3173;;;;1782:76;1732:166;679:3173;1930:21;1965:14;1961:100;;679:3173;1782:76;679:3173;;;;;;;1961:100;679:3173;1885:19:111;;;;1795:10:91;1920:163:111;;2196:8;2192:75;;1961:100:91;;;2192:75:111;1795:10:91;2264:2:111;:::i;1756:104:91:-;;;;;679:3173;1756:104;;;;;;:::i;:::-;;;679:3173;1782:76;679:3173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;1782:76;679:3173;;;;;;;;;;1782:76;679:3173;;;;;;;;;;;1756:104;;;679:3173;;;;;;;;;;;;;;;611:37:97;679:3173:91;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1771:88;679:3173;;;;;;;;;;;:::i;:::-;1795:10;679:3173;;1782:76;;;679:3173;;;;1782:76;;679:3173;;;1782:76;;;679:3173;;;1782:76;;;679:3173;;;1782:76;;;679:3173;;;;;1771:88;;;1782:76;1771:88;;;679:3173;;;;;;;;1782:76;679:3173;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;679:3173:91;;;;;-1:-1:-1;679:3173:91;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;679:3173:91;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;679:3173:91;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;10043:602:64:-;;;;;;2443:609:60;;;;;;;;;;;;;;;;;-1:-1:-1;2443:609:60;;;;;;;;;;;;;;;;;;679:3173:91;2443:609:60;14715:51:64;;679:3173:91;;;2443:609:60;;1163:1:64;;679:3173:91;2443:609:60;14715:51:64;;;;;;:::i;:::-;679:3173:91;14705:62:64;;1163:1;2443:609:60;1163:1:64;;;;;;;11562:25;-1:-1:-1;679:3173:91;;;2443:609:60;679:3173:91;15732:45:64;2443:609:60;15732:45:64;;679:3173:91;;;2443:609:60;1163:1:64;;679:3173:91;2443:609:60;15732:45:64;;;14715:51;15732:45;;:::i;:::-;679:3173:91;15722:56:64;;2443:609:60;679:3173:91;11562:25:64;;;;;679:3173:91;11562:25:64;;;;;679:3173:91;2443:609:60;679:3173:91;;;;;11562:25:64;;;;;;;-1:-1:-1;11562:25:64;;;10043:602;-1:-1:-1;2443:609:60;11598:204:64;;;2443:609:60;11598:204:64;;;14715:51;11598:204;;;;;;10043:602::o;11562:25::-;;;;;-1:-1:-1;11562:25:64;;;;;;:::i;:::-;;;679:3173:91;2443:609:60;679:3173:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2443:609:60;679:3173:91;;;2443:609:60;679:3173:91;;;;:::i;:::-;;;2443:609:60;679:3173:91;;;;;;;;;;;;2443:609:60;679:3173:91;;;;;;;;11562:25:64;;;;;;679:3173:91;;;;;2443:609:60;679:3173:91;;;;;;;731:362:97;;;940:24;731:362;940:24;;:::i;:::-;1015:7;679:3173:91;1015:7:97;;679:3173:91;988:36:97;;;;;;:::i;:::-;1845:233:68;;-1:-1:-1;1845:233:68;;;;;;-1:-1:-1;1845:233:68;2109:21;1845:233;679:3173:91;2109:21:68;;;;679:3173:91;2109:21:68;;;;;679:3173:91;2109:21:68;;;;;;;-1:-1:-1;2109:21:68;;;1034:52:97;731:362;:::o;2109:21:68:-;;;1845:233;2109:21;;1845:233;2109:21;;;;;;1845:233;2109:21;;;:::i;:::-;;;679:3173:91;;;;;731:362:97;:::o;2109:21:68:-;;;-1:-1:-1;2109:21:68;;679:3173:91;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;979:805:117:-;;;1255:523;;;679:3173:91;;1279:44:117;;;;;679:3173:91;;;1279:44:117;;679:3173:91;;;;1279:44:117;;;679:3173:91;;;;;;;;;;;;;;;;;-1:-1:-1;;679:3173:91;;;-1:-1:-1;679:3173:91;;;;1279:44:117;;;;;;;;;;;1255:523;979:805::o;1279:44::-;-1:-1:-1;1279:44:117;;;:::i;:::-;979:805::o;1255:523::-;1344:19;679:3173:91;;4932:52:111;1344:19:117;;679:3173:91;;;1379:31:117;;679:3173:91;;;1379:31:117;;;;;679:3173:91;1379:31:117;;679:3173:91;1379:31:117;;;;;;;;1340:438;979:805::o;1379:31::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;979:805::o;1379:31::-;;;;;1340:438;679:3173:91;;;;;1441:22:117;;;;;;679:3173:91;;1441:22:117;679:3173:91;1441:22:117;;-1:-1:-1;1441:22:117;;;;;679:3173:91;-1:-1:-1;1441:22:117;;;;;;;;;;;;;1340:438;-1:-1:-1;679:3173:91;;1498:4:117;;1481:22;;1498:4;;679:3173:91;;;1523:86:117;679:3173:91;;;1523:86:117;;;;;679:3173:91;1523:86:117;;1441:22;1523:86;;679:3173:91;;1441:22:117;679:3173:91;;;;;;;1523:86:117;;;;;;;679:3173:91;1523:86:117;;;;;1477:261;;;1441:22;679:3173:91;;1751:16:117;;;;679:3173:91;1751:16:117;;;;;;;;;;;;1340:438;979:805::o;1751:16::-;679:3173:91;;;;;;;;;;1523:86:117;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;679:3173:91;;;;;;;;;1477:261:117;679:3173:91;;;1648:75:117;679:3173:91;;;;1648:75:117;;;;;679:3173:91;1648:75:117;;;1441:22;1648:75;;679:3173:91;1441:22:117;679:3173:91;;;1648:75:117;;;;;;;679:3173:91;1648:75:117;;;;;1477:261;;;;1648:75;;;;;;;;;;;;;:::i;:::-;;;;;1441:22;;;;;-1:-1:-1;1441:22:117;;:::i;:::-;-1:-1:-1;;679:3173:91;1441:22:117;;2168:230;;;2290:101;;;679:3173:91;;2299:48:117;;;;;679:3173:91;;;2299:48:117;;679:3173:91;;;;2299:48:117;;;679:3173:91;;;;;;;;;;;;;;;;;-1:-1:-1;;679:3173:91;;;-1:-1:-1;679:3173:91;;;;2299:48:117;679:3173:91;2290:101:117;679:3173:91;;;;;2350:41:117;;;;;-1:-1:-1;679:3173:91;;2350:41:117;679:3173:91;;;;;;2350:41:117;;;;;679:3173:91;2350:41:117;;679:3173:91;2350:41:117;;;679:3173:91;;;;;;;;;;2350:41:117;;;;;;;;2290:101;2168:230::o;3363:643:49:-;3449:551;;;;;;2206:35:111;3449:551:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;4577:266:111;679:3173:91;;4932:52:111;4676:19;;4718:13;;4711:20;:::o;4672:165::-;679:3173:91;;4769:57:111;679:3173:91;;;;4769:57:111;;;;;679:3173:91;4769:57:111;;679:3173:91;4769:57:111;;;679:3173:91;4769:57:111;;;;;;;679:3173:91;4769:57:111;;;4762:64;;:::o","linkReferences":{},"immutableReferences":{"64782":[{"start":181,"length":32},{"start":2448,"length":32},{"start":2753,"length":32},{"start":4409,"length":32}]}},"methodIdentifiers":{"manager()":"481c6a75","modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes)":"5a6bcfda","modifyLiquidity((address,address,uint24,int24,address),(int24,int24,int256,bytes32),bytes,bool,bool)":"0a5b11e4","unlockCallback(bytes)":"91dd7346"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"_manager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"manager\",\"outputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPoolManager.ModifyLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"settleUsingBurn\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"takeClaims\",\"type\":\"bool\"}],\"name\":\"modifyLiquidity\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"},{\"internalType\":\"bytes32\",\"name\":\"salt\",\"type\":\"bytes32\"}],\"internalType\":\"struct IPoolManager.ModifyLiquidityParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"modifyLiquidity\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"rawData\",\"type\":\"bytes\"}],\"name\":\"unlockCallback\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/PoolModifyLiquidityTest.sol\":\"PoolModifyLiquidityTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"src/interfaces/IHooks.sol\":{\"keccak256\":\"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa\",\"dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8\"]},\"src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0x7dd9b494e616cbf623c21e2b8c4e8375acf27d307b02700d4965170bff3bb838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://381e66840cc15dc602b56a55554aa4ae581e4cfc7ddbfb51f838e6b40981664b\",\"dweb:/ipfs/QmeLdh22eqpj53C8562oN7pE4oWR1sjD82TKdV3sMq3tYu\"]},\"src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6\",\"dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G\"]},\"src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f\",\"dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw\"]},\"src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410\",\"dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8\"]},\"src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7\",\"dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3\"]},\"src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x2b70cc5e6ca761f4b3110bd7ea6c6064167df260a669b08b2c96c115d5c944ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f2ae8f2d7da6103f3d884935fb5da10c5463b4d229b31de9e592c4d2275e0bc\",\"dweb:/ipfs/QmWeVnC18TEqGy7fp2GApReNUuZFfDAEsWkycDV8N1LAmy\"]},\"src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d\",\"dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT\"]},\"src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0x028173d4dfa579c49e1d6aa0b0f4d9e0b5b5812bb573586fff53f33926720699\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98cf56f5917c23331a641363c31d353d58c9a3053bb7d64e62bed5161a23174a\",\"dweb:/ipfs/QmfVufa7owRy4VxYYGHN87F3YGNWvuSq1cpCpJjATvf6CM\"]},\"src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896\",\"dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo\"]},\"src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc\",\"dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa\"]},\"src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"src/libraries/NonZeroDeltaCount.sol\":{\"keccak256\":\"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2\",\"dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC\"]},\"src/libraries/ParseBytes.sol\":{\"keccak256\":\"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8\",\"dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf\"]},\"src/libraries/Position.sol\":{\"keccak256\":\"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce\",\"dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu\"]},\"src/libraries/SafeCast.sol\":{\"keccak256\":\"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4\",\"dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM\"]},\"src/libraries/StateLibrary.sol\":{\"keccak256\":\"0xc6ec44163ec8070201159b62deba112acc572c487cae1abaf0e9974f7c9ade3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5517ebf580a3aa8ea9f0e0253c9c739c610a6a04fae1285f705721264aad1a\",\"dweb:/ipfs/QmZQuTAJhnhRwTQhQywfy3hK1iG5FwubTRrEXYzaPJxVMs\"]},\"src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x1bc28f30c176c7c598522da0d8907a90c4cd8ecce81775bb4deb3a9b78782f86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5c05fb51e59ef168ba884c4ea3627525dba9feea0de9ffa0587438f70fd095\",\"dweb:/ipfs/Qmbx3ntPDZ9VeGsAnVNSM5DKmhPg92yobh5ZHbvdGWtHUd\"]},\"src/test/PoolModifyLiquidityTest.sol\":{\"keccak256\":\"0x4578759af55db566eee1d19c19a285710b1d301b511e37df4a1072c2d5a47ade\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://aa6588f1f695efe625241fdbad07730611c8bec77d963698c6412775b7dd68a7\",\"dweb:/ipfs/QmeDGAKa9sR6Wk5ibyzt4YGa6tdtjmFPzJafMbBgkWRB9d\"]},\"src/test/PoolTestBase.sol\":{\"keccak256\":\"0x71db5a5215d858124dd2ccf73c4474421651f248e4c85d33455d95abced0a23c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fac0df901621d44a1b98ce4569616940ca6700e7829357bdf18509237b822072\",\"dweb:/ipfs/Qmf9sWokQvzmKfAY6Vd4QzyTyhikqCb8zUowrFPe9DRxs5\"]},\"src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"src/types/Currency.sol\":{\"keccak256\":\"0x03fa1f70ccb3895c63d484ed08892dad57ccb01a194d19b85425348c4fb6a711\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69bb811fe4ce219a033e950d2bfbd34a511ac5d4db7836c86e8c471c7a61b75a\",\"dweb:/ipfs/QmX2LoUGmRn28P1UfwQcfexJ2kdR8kG6UZrsM8d1Nit69G\"]},\"src/types/PoolId.sol\":{\"keccak256\":\"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f\",\"dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB\"]},\"src/types/PoolKey.sol\":{\"keccak256\":\"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf\",\"dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY\"]},\"test/utils/CurrencySettler.sol\":{\"keccak256\":\"0xf5d04aa76b3ac6ff75396661e75ec612035ebd73d23eb6f4e207dbd46392688e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67a67b94a2987309f06003374ddfc30ab8e81d9fec3b1585e93871eec6966d96\",\"dweb:/ipfs/QmYLzboZNfXoNufKX8UYMGhHVChqMK96vwFWjKeoWcfb24\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPoolManager","name":"_manager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"stateMutability":"view","type":"function","name":"manager","outputs":[{"internalType":"contract IPoolManager","name":"","type":"address"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct IPoolManager.ModifyLiquidityParams","name":"params","type":"tuple","components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"internalType":"bytes","name":"hookData","type":"bytes"},{"internalType":"bool","name":"settleUsingBurn","type":"bool"},{"internalType":"bool","name":"takeClaims","type":"bool"}],"stateMutability":"payable","type":"function","name":"modifyLiquidity","outputs":[{"internalType":"BalanceDelta","name":"delta","type":"int256"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct IPoolManager.ModifyLiquidityParams","name":"params","type":"tuple","components":[{"internalType":"int24","name":"tickLower","type":"int24"},{"internalType":"int24","name":"tickUpper","type":"int24"},{"internalType":"int256","name":"liquidityDelta","type":"int256"},{"internalType":"bytes32","name":"salt","type":"bytes32"}]},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"modifyLiquidity","outputs":[{"internalType":"BalanceDelta","name":"delta","type":"int256"}]},{"inputs":[{"internalType":"bytes","name":"rawData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"unlockCallback","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/=node_modules/@ensdomains/","@openzeppelin/=lib/openzeppelin-contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/PoolModifyLiquidityTest.sol":"PoolModifyLiquidityTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"src/interfaces/IHooks.sol":{"keccak256":"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0","urls":["bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa","dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8"],"license":"MIT"},"src/interfaces/IPoolManager.sol":{"keccak256":"0x7dd9b494e616cbf623c21e2b8c4e8375acf27d307b02700d4965170bff3bb838","urls":["bzz-raw://381e66840cc15dc602b56a55554aa4ae581e4cfc7ddbfb51f838e6b40981664b","dweb:/ipfs/QmeLdh22eqpj53C8562oN7pE4oWR1sjD82TKdV3sMq3tYu"],"license":"MIT"},"src/interfaces/IProtocolFeeController.sol":{"keccak256":"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c","urls":["bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6","dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G"],"license":"MIT"},"src/interfaces/IProtocolFees.sol":{"keccak256":"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297","urls":["bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f","dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw"],"license":"MIT"},"src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7","urls":["bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410","dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8"],"license":"GPL-2.0-or-later"},"src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"src/libraries/CurrencyReserves.sol":{"keccak256":"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6","urls":["bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7","dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3"],"license":"BUSL-1.1"},"src/libraries/CustomRevert.sol":{"keccak256":"0x2b70cc5e6ca761f4b3110bd7ea6c6064167df260a669b08b2c96c115d5c944ff","urls":["bzz-raw://0f2ae8f2d7da6103f3d884935fb5da10c5463b4d229b31de9e592c4d2275e0bc","dweb:/ipfs/QmWeVnC18TEqGy7fp2GApReNUuZFfDAEsWkycDV8N1LAmy"],"license":"MIT"},"src/libraries/FixedPoint128.sol":{"keccak256":"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835","urls":["bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d","dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT"],"license":"GPL-2.0-or-later"},"src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0x028173d4dfa579c49e1d6aa0b0f4d9e0b5b5812bb573586fff53f33926720699","urls":["bzz-raw://98cf56f5917c23331a641363c31d353d58c9a3053bb7d64e62bed5161a23174a","dweb:/ipfs/QmfVufa7owRy4VxYYGHN87F3YGNWvuSq1cpCpJjATvf6CM"],"license":"MIT"},"src/libraries/LPFeeLibrary.sol":{"keccak256":"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece","urls":["bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896","dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo"],"license":"GPL-2.0-or-later"},"src/libraries/LiquidityMath.sol":{"keccak256":"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf","urls":["bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc","dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa"],"license":"GPL-2.0-or-later"},"src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"src/libraries/NonZeroDeltaCount.sol":{"keccak256":"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586","urls":["bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2","dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC"],"license":"BUSL-1.1"},"src/libraries/ParseBytes.sol":{"keccak256":"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579","urls":["bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8","dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf"],"license":"GPL-2.0-or-later"},"src/libraries/Position.sol":{"keccak256":"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80","urls":["bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce","dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu"],"license":"BUSL-1.1"},"src/libraries/SafeCast.sol":{"keccak256":"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60","urls":["bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4","dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM"],"license":"GPL-2.0-or-later"},"src/libraries/StateLibrary.sol":{"keccak256":"0xc6ec44163ec8070201159b62deba112acc572c487cae1abaf0e9974f7c9ade3f","urls":["bzz-raw://da5517ebf580a3aa8ea9f0e0253c9c739c610a6a04fae1285f705721264aad1a","dweb:/ipfs/QmZQuTAJhnhRwTQhQywfy3hK1iG5FwubTRrEXYzaPJxVMs"],"license":"MIT"},"src/libraries/TransientStateLibrary.sol":{"keccak256":"0x1bc28f30c176c7c598522da0d8907a90c4cd8ecce81775bb4deb3a9b78782f86","urls":["bzz-raw://fb5c05fb51e59ef168ba884c4ea3627525dba9feea0de9ffa0587438f70fd095","dweb:/ipfs/Qmbx3ntPDZ9VeGsAnVNSM5DKmhPg92yobh5ZHbvdGWtHUd"],"license":"MIT"},"src/test/PoolModifyLiquidityTest.sol":{"keccak256":"0x4578759af55db566eee1d19c19a285710b1d301b511e37df4a1072c2d5a47ade","urls":["bzz-raw://aa6588f1f695efe625241fdbad07730611c8bec77d963698c6412775b7dd68a7","dweb:/ipfs/QmeDGAKa9sR6Wk5ibyzt4YGa6tdtjmFPzJafMbBgkWRB9d"],"license":"UNLICENSED"},"src/test/PoolTestBase.sol":{"keccak256":"0x71db5a5215d858124dd2ccf73c4474421651f248e4c85d33455d95abced0a23c","urls":["bzz-raw://fac0df901621d44a1b98ce4569616940ca6700e7829357bdf18509237b822072","dweb:/ipfs/Qmf9sWokQvzmKfAY6Vd4QzyTyhikqCb8zUowrFPe9DRxs5"],"license":"UNLICENSED"},"src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"src/types/Currency.sol":{"keccak256":"0x03fa1f70ccb3895c63d484ed08892dad57ccb01a194d19b85425348c4fb6a711","urls":["bzz-raw://69bb811fe4ce219a033e950d2bfbd34a511ac5d4db7836c86e8c471c7a61b75a","dweb:/ipfs/QmX2LoUGmRn28P1UfwQcfexJ2kdR8kG6UZrsM8d1Nit69G"],"license":"MIT"},"src/types/PoolId.sol":{"keccak256":"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8","urls":["bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f","dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB"],"license":"MIT"},"src/types/PoolKey.sol":{"keccak256":"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162","urls":["bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf","dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY"],"license":"MIT"},"test/utils/CurrencySettler.sol":{"keccak256":"0xf5d04aa76b3ac6ff75396661e75ec612035ebd73d23eb6f4e207dbd46392688e","urls":["bzz-raw://67a67b94a2987309f06003374ddfc30ab8e81d9fec3b1585e93871eec6966d96","dweb:/ipfs/QmYLzboZNfXoNufKX8UYMGhHVChqMK96vwFWjKeoWcfb24"],"license":"MIT"}},"version":1},"id":91} \ No newline at end of file diff --git a/src/artifacts/PoolSwapTest.json b/src/artifacts/PoolSwapTest.json deleted file mode 100644 index 72d973f..0000000 --- a/src/artifacts/PoolSwapTest.json +++ /dev/null @@ -1 +0,0 @@ -{"abi":[{"type":"constructor","inputs":[{"name":"_manager","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"nonpayable"},{"type":"function","name":"manager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"view"},{"type":"function","name":"swap","inputs":[{"name":"key","type":"tuple","internalType":"struct PoolKey","components":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}]},{"name":"params","type":"tuple","internalType":"struct IPoolManager.SwapParams","components":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}]},{"name":"testSettings","type":"tuple","internalType":"struct PoolSwapTest.TestSettings","components":[{"name":"takeClaims","type":"bool","internalType":"bool"},{"name":"settleUsingBurn","type":"bool","internalType":"bool"}]},{"name":"hookData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"delta","type":"int256","internalType":"BalanceDelta"}],"stateMutability":"payable"},{"type":"function","name":"unlockCallback","inputs":[{"name":"rawData","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"error","name":"NoSwapOccurred","inputs":[]}],"bytecode":{"object":"0x60a034607a57601f611ba438819003918201601f19168301916001600160401b03831184841017607e57808492602094604052833981010312607a57516001600160a01b0381168103607a57608052604051611b119081610093823960805181818160ab01528181610d29015281816110a6015261154e0152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80632229d0b414610d4d578063481c6a7514610cdf576391dd73461461003a575f80fd5b34610c0c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c0c5760043567ffffffffffffffff8111610c0c5736602382011215610c0c57806004013567ffffffffffffffff8111610c0c578101906024820191368311610c0c577f00000000000000000000000000000000000000000000000000000000000000009273ffffffffffffffffffffffffffffffffffffffff841692833303610c0c57602081840312610c0c5760248101359067ffffffffffffffff8211610c0c57019061018082840312610c0c5760405191610123836111f8565b61012f602482016112ba565b835260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08286030112610c0c576040519061016a8261125d565b610176604482016112db565b8252610184606482016112db565b60208301526020840191825260a060247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c838803010112610c0c57604051946101cc866111f8565b6101d8608483016112ba565b86526101e660a483016112ba565b602087015260c482013562ffffff81168103610c0c57604087015260e48201358060020b8103610c0c57606087015261010482013573ffffffffffffffffffffffffffffffffffffffff81168103610c0c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedc8360609360249360808b015260408901998a5203010112610c0c576040519261028184611241565b61028e61012483016112db565b8452610144820135602085015261016482013573ffffffffffffffffffffffffffffffffffffffff81168103610c0c576040850152606085019384526101848201359167ffffffffffffffff8311610c0c576102ed9201602401611322565b946080840195865261033073ffffffffffffffffffffffffffffffffffffffff8651511673ffffffffffffffffffffffffffffffffffffffff8651163091611529565b91505061037273ffffffffffffffffffffffffffffffffffffffff60208851015116309073ffffffffffffffffffffffffffffffffffffffff88511690611529565b92915050610c8157610c2357610447956020916104135f885161045b885195516040519c8d97889687957ff3cd914c000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560a4860152602081015160c48601526040015173ffffffffffffffffffffffffffffffffffffffff1660e4850152565b610120610104840152610124830190611368565b03925af1948515610c18575f95610be0575b506104aa73ffffffffffffffffffffffffffffffffffffffff85515116309073ffffffffffffffffffffffffffffffffffffffff86511690611529565b979150506104ed73ffffffffffffffffffffffffffffffffffffffff60208751015116309073ffffffffffffffffffffffffffffffffffffffff87511690611529565b855180519196935091501561092357505f602082510151125f146107cb575160200151871261072157610527878760801d600f0b146113ba565b5f831261069d57610582965b5f811261065b575b5f8412610606575b5f81136105be575b505f8313610586575b86866040519060208201526020815261056e604082611279565b604051918291602083526020830190611368565b0390f35b73ffffffffffffffffffffffffffffffffffffffff8060206105b4975101511694511691515115159361194b565b5f80808080610554565b6106009073ffffffffffffffffffffffffffffffffffffffff875151169073ffffffffffffffffffffffffffffffffffffffff8751168486515115159361194b565b5f61054b565b61065673ffffffffffffffffffffffffffffffffffffffff6020885101511673ffffffffffffffffffffffffffffffffffffffff875116610646876114d0565b9085602088510151151593611613565b610543565b61069873ffffffffffffffffffffffffffffffffffffffff8751511673ffffffffffffffffffffffffffffffffffffffff875116610646846114d0565b61053b565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f2030000000000000000000000000000000000000006064820152fd5b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e74537060648201527f65636966696564000000000000000000000000000000000000000000000000006084820152fd5b5f881361089f576020906107e38589600f0b14611445565b51015183136107f55761058296610533565b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604460248201527f64656c7461416674657231206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f20646174612e706172616d732e616d6f756e74537065636960648201527f66696564000000000000000000000000000000000000000000000000000000006084820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c7461416674657230206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f207a65726f000000000000000000000000000000000000006064820152fd5b602001515f1315610a8557516020015183126109db576109478387600f0b14611445565b5f87126109575761058296610533565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f2030000000000000000000000000000000000000006064820152fd5b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e74537060648201527f65636966696564000000000000000000000000000000000000000000000000006084820152fd5b5f8413610b5c57602090610aa0898960801d600f0b146113ba565b5101518713610ab25761058296610533565b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604460248201527f64656c7461416674657230206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f20646174612e706172616d732e616d6f756e74537065636960648201527f66696564000000000000000000000000000000000000000000000000000000006084820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f64656c7461416674657231206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f2030000000000000000000000000000000000000000000006064820152fd5b9094506020813d602011610c10575b81610bfc60209383611279565b81010312610c0c5751935f61046d565b5f80fd5b3d9150610bef565b6040513d5f823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f64656c74614265666f726531206973206e6f7420657175616c20746f203000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f64656c74614265666f726530206973206e6f7420657175616c20746f203000006044820152fd5b34610c0c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c0c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36016101608112610c0c5760a013610c0c57604051610d8c816111f8565b60043573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57815260243573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57602082015260443562ffffff81168103610c0c5760408201526064358060020b8103610c0c57606082015260843573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57608082015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610c0c57604051610e5481611241565b60a4358015158103610c0c57815260c435602082015260e43573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57604082015260407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc360112610c0c5760405191610ec68361125d565b610104358015158103610c0c578352610124358015158103610c0c5760208401526101443567ffffffffffffffff8111610c0c5761108c9361102573ffffffffffffffffffffffffffffffffffffffff936110105f96610fd8610f30611051973690600401611322565b93602060405197610f40896111f8565b3389528189019081526040890192835260608901948552608089019687526040519a8b9983808c0152511660408a0152518051151560608a01520151151560808801525160a087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051151561014086015260208101516101608601526040015173ffffffffffffffffffffffffffffffffffffffff16610180850152565b516101806101a08401526101c0830190611368565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611279565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190611368565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610c18575f9161117e575b5060208151918180820193849201010312610c0c575147806110fe575b602082604051908152f35b5f80808093335af11561111157816110f3565b3d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051927f8549db5900000000000000000000000000000000000000000000000000000000845233600485015260406024850152806044850152805f606486013e011660640190fd5b90503d805f833e61118f8183611279565b810190602081830312610c0c5780519067ffffffffffffffff8211610c0c570181601f82011215610c0c578051906111c6826112e8565b926111d46040519485611279565b82845260208383010111610c0c57815f9260208093018386015e83010152816110d6565b60a0810190811067ffffffffffffffff82111761121457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761121457604052565b6040810190811067ffffffffffffffff82111761121457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761121457604052565b359073ffffffffffffffffffffffffffffffffffffffff82168203610c0c57565b35908115158203610c0c57565b67ffffffffffffffff811161121457601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f82011215610c0c57803590611339826112e8565b926113476040519485611279565b82845260208383010111610c0c57815f926020809301838601378301015290565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90816020910312610c0c575190565b156113c157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f64656c74612e616d6f756e74302829206973206e6f7420657175616c20746f2060448201527f64656c74614166746572300000000000000000000000000000000000000000006064820152fd5b1561144c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f64656c74612e616d6f756e74312829206973206e6f7420657175616c20746f2060448201527f64656c74614166746572310000000000000000000000000000000000000000006064820152fd5b7f800000000000000000000000000000000000000000000000000000000000000081146114fc575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b92906115359084611a5c565b9273ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016918161157a8483611a5c565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa908115610c18575f916115cc575090565b90506020813d6020116115f3575b816115e760209383611279565b81010312610c0c575190565b3d91506115da565b90816020910312610c0c57518015158103610c0c5790565b9293156116b55773ffffffffffffffffffffffffffffffffffffffff16803b15610c0c576040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f908290818381606481015b03925af18015610c18576116a95750565b5f6116b391611279565b565b9173ffffffffffffffffffffffffffffffffffffffff168061175357505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af18015610c18576117285750565b6117499060203d60201161174c575b6117418183611279565b8101906113ab565b50565b503d611737565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b15610c0c57604051937fa58411940000000000000000000000000000000000000000000000000000000085525f948360048201525f8160248183895af18015610c1857611922575b5073ffffffffffffffffffffffffffffffffffffffff16843082146118ae576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af180156118a357916020918493611876575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561186a57506117285750565b604051903d90823e3d90fd5b61189590833d851161189c575b61188d8183611279565b8101906115fb565b505f61182b565b503d611883565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af180156118a357916020918493611905575b5061182d565b61191b90833d851161189c5761188d8183611279565b505f6118ff565b61192f9195505f90611279565b5f9373ffffffffffffffffffffffffffffffffffffffff6117b7565b9293156119d45773ffffffffffffffffffffffffffffffffffffffff16803b15610c0c576040517f156e29f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f90829081838160648101611698565b90929073ffffffffffffffffffffffffffffffffffffffff16803b15610c0c575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610c18576116a95750565b73ffffffffffffffffffffffffffffffffffffffff1680611a7c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610c18575f916115cc57509056fea26469706673582212207e0a4aaaed570e953c70f75a0c92c517acc17c88cea95bd9a1b7e1a4862a433a64736f6c634300081a0033","sourceMap":"529:4468:95:-:0;;;;;;;;;;;;;-1:-1:-1;;529:4468:95;;;;-1:-1:-1;;;;;529:4468:95;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;529:4468:95;;;;;;700:18:97;;529:4468:95;;;;;;;;700:18:97;529:4468:95;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;529:4468:95;;;;;;-1:-1:-1;529:4468:95;;;;;-1:-1:-1;529:4468:95","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610011575f80fd5b5f3560e01c80632229d0b414610d4d578063481c6a7514610cdf576391dd73461461003a575f80fd5b34610c0c5760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c0c5760043567ffffffffffffffff8111610c0c5736602382011215610c0c57806004013567ffffffffffffffff8111610c0c578101906024820191368311610c0c577f00000000000000000000000000000000000000000000000000000000000000009273ffffffffffffffffffffffffffffffffffffffff841692833303610c0c57602081840312610c0c5760248101359067ffffffffffffffff8211610c0c57019061018082840312610c0c5760405191610123836111f8565b61012f602482016112ba565b835260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08286030112610c0c576040519061016a8261125d565b610176604482016112db565b8252610184606482016112db565b60208301526020840191825260a060247fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7c838803010112610c0c57604051946101cc866111f8565b6101d8608483016112ba565b86526101e660a483016112ba565b602087015260c482013562ffffff81168103610c0c57604087015260e48201358060020b8103610c0c57606087015261010482013573ffffffffffffffffffffffffffffffffffffffff81168103610c0c577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedc8360609360249360808b015260408901998a5203010112610c0c576040519261028184611241565b61028e61012483016112db565b8452610144820135602085015261016482013573ffffffffffffffffffffffffffffffffffffffff81168103610c0c576040850152606085019384526101848201359167ffffffffffffffff8311610c0c576102ed9201602401611322565b946080840195865261033073ffffffffffffffffffffffffffffffffffffffff8651511673ffffffffffffffffffffffffffffffffffffffff8651163091611529565b91505061037273ffffffffffffffffffffffffffffffffffffffff60208851015116309073ffffffffffffffffffffffffffffffffffffffff88511690611529565b92915050610c8157610c2357610447956020916104135f885161045b885195516040519c8d97889687957ff3cd914c000000000000000000000000000000000000000000000000000000008752600487019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560a4860152602081015160c48601526040015173ffffffffffffffffffffffffffffffffffffffff1660e4850152565b610120610104840152610124830190611368565b03925af1948515610c18575f95610be0575b506104aa73ffffffffffffffffffffffffffffffffffffffff85515116309073ffffffffffffffffffffffffffffffffffffffff86511690611529565b979150506104ed73ffffffffffffffffffffffffffffffffffffffff60208751015116309073ffffffffffffffffffffffffffffffffffffffff87511690611529565b855180519196935091501561092357505f602082510151125f146107cb575160200151871261072157610527878760801d600f0b146113ba565b5f831261069d57610582965b5f811261065b575b5f8412610606575b5f81136105be575b505f8313610586575b86866040519060208201526020815261056e604082611279565b604051918291602083526020830190611368565b0390f35b73ffffffffffffffffffffffffffffffffffffffff8060206105b4975101511694511691515115159361194b565b5f80808080610554565b6106009073ffffffffffffffffffffffffffffffffffffffff875151169073ffffffffffffffffffffffffffffffffffffffff8751168486515115159361194b565b5f61054b565b61065673ffffffffffffffffffffffffffffffffffffffff6020885101511673ffffffffffffffffffffffffffffffffffffffff875116610646876114d0565b9085602088510151151593611613565b610543565b61069873ffffffffffffffffffffffffffffffffffffffff8751511673ffffffffffffffffffffffffffffffffffffffff875116610646846114d0565b61053b565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f2030000000000000000000000000000000000000006064820152fd5b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e74537060648201527f65636966696564000000000000000000000000000000000000000000000000006084820152fd5b5f881361089f576020906107e38589600f0b14611445565b51015183136107f55761058296610533565b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604460248201527f64656c7461416674657231206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f20646174612e706172616d732e616d6f756e74537065636960648201527f66696564000000000000000000000000000000000000000000000000000000006084820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c7461416674657230206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f207a65726f000000000000000000000000000000000000006064820152fd5b602001515f1315610a8557516020015183126109db576109478387600f0b14611445565b5f87126109575761058296610533565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f64656c7461416674657230206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f2030000000000000000000000000000000000000006064820152fd5b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604760248201527f64656c7461416674657231206973206e6f742067726561746572207468616e2060448201527f6f7220657175616c20746f20646174612e706172616d732e616d6f756e74537060648201527f65636966696564000000000000000000000000000000000000000000000000006084820152fd5b5f8413610b5c57602090610aa0898960801d600f0b146113ba565b5101518713610ab25761058296610533565b60a46040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604460248201527f64656c7461416674657230206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f20646174612e706172616d732e616d6f756e74537065636960648201527f66696564000000000000000000000000000000000000000000000000000000006084820152fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f64656c7461416674657231206973206e6f74206c657373207468616e206f722060448201527f657175616c20746f2030000000000000000000000000000000000000000000006064820152fd5b9094506020813d602011610c10575b81610bfc60209383611279565b81010312610c0c5751935f61046d565b5f80fd5b3d9150610bef565b6040513d5f823e3d90fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f64656c74614265666f726531206973206e6f7420657175616c20746f203000006044820152fd5b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f64656c74614265666f726530206973206e6f7420657175616c20746f203000006044820152fd5b34610c0c575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610c0c57602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36016101608112610c0c5760a013610c0c57604051610d8c816111f8565b60043573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57815260243573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57602082015260443562ffffff81168103610c0c5760408201526064358060020b8103610c0c57606082015260843573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57608082015260607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610c0c57604051610e5481611241565b60a4358015158103610c0c57815260c435602082015260e43573ffffffffffffffffffffffffffffffffffffffff81168103610c0c57604082015260407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffefc360112610c0c5760405191610ec68361125d565b610104358015158103610c0c578352610124358015158103610c0c5760208401526101443567ffffffffffffffff8111610c0c5761108c9361102573ffffffffffffffffffffffffffffffffffffffff936110105f96610fd8610f30611051973690600401611322565b93602060405197610f40896111f8565b3389528189019081526040890192835260608901948552608089019687526040519a8b9983808c0152511660408a0152518051151560608a01520151151560808801525160a087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b518051151561014086015260208101516101608601526040015173ffffffffffffffffffffffffffffffffffffffff16610180850152565b516101806101a08401526101c0830190611368565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282611279565b604051809381927f48c89491000000000000000000000000000000000000000000000000000000008352602060048401526024830190611368565b03818373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610c18575f9161117e575b5060208151918180820193849201010312610c0c575147806110fe575b602082604051908152f35b5f80808093335af11561111157816110f3565b3d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f604051927f8549db5900000000000000000000000000000000000000000000000000000000845233600485015260406024850152806044850152805f606486013e011660640190fd5b90503d805f833e61118f8183611279565b810190602081830312610c0c5780519067ffffffffffffffff8211610c0c570181601f82011215610c0c578051906111c6826112e8565b926111d46040519485611279565b82845260208383010111610c0c57815f9260208093018386015e83010152816110d6565b60a0810190811067ffffffffffffffff82111761121457604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6060810190811067ffffffffffffffff82111761121457604052565b6040810190811067ffffffffffffffff82111761121457604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761121457604052565b359073ffffffffffffffffffffffffffffffffffffffff82168203610c0c57565b35908115158203610c0c57565b67ffffffffffffffff811161121457601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b81601f82011215610c0c57803590611339826112e8565b926113476040519485611279565b82845260208383010111610c0c57815f926020809301838601378301015290565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90816020910312610c0c575190565b156113c157565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f64656c74612e616d6f756e74302829206973206e6f7420657175616c20746f2060448201527f64656c74614166746572300000000000000000000000000000000000000000006064820152fd5b1561144c57565b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f64656c74612e616d6f756e74312829206973206e6f7420657175616c20746f2060448201527f64656c74614166746572310000000000000000000000000000000000000000006064820152fd5b7f800000000000000000000000000000000000000000000000000000000000000081146114fc575f0390565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b92906115359084611a5c565b9273ffffffffffffffffffffffffffffffffffffffff807f000000000000000000000000000000000000000000000000000000000000000016918161157a8483611a5c565b95165f5216602052602060405f206024604051809481937ff135baaa00000000000000000000000000000000000000000000000000000000835260048301525afa908115610c18575f916115cc575090565b90506020813d6020116115f3575b816115e760209383611279565b81010312610c0c575190565b3d91506115da565b90816020910312610c0c57518015158103610c0c5790565b9293156116b55773ffffffffffffffffffffffffffffffffffffffff16803b15610c0c576040517ff5298aca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f908290818381606481015b03925af18015610c18576116a95750565b5f6116b391611279565b565b9173ffffffffffffffffffffffffffffffffffffffff168061175357505073ffffffffffffffffffffffffffffffffffffffff600460209260405194859384927f11da60b4000000000000000000000000000000000000000000000000000000008452165af18015610c18576117285750565b6117499060203d60201161174c575b6117418183611279565b8101906113ab565b50565b503d611737565b90929173ffffffffffffffffffffffffffffffffffffffff1691823b15610c0c57604051937fa58411940000000000000000000000000000000000000000000000000000000085525f948360048201525f8160248183895af18015610c1857611922575b5073ffffffffffffffffffffffffffffffffffffffff16843082146118ae576020929160649160405195869485937f23b872dd000000000000000000000000000000000000000000000000000000008552600485015288602485015260448401525af180156118a357916020918493611876575b505b6004604051809581937f11da60b40000000000000000000000000000000000000000000000000000000083525af190811561186a57506117285750565b604051903d90823e3d90fd5b61189590833d851161189c575b61188d8183611279565b8101906115fb565b505f61182b565b503d611883565b6040513d85823e3d90fd5b929050604460209260405194859384927fa9059cbb00000000000000000000000000000000000000000000000000000000845288600485015260248401525af180156118a357916020918493611905575b5061182d565b61191b90833d851161189c5761188d8183611279565b505f6118ff565b61192f9195505f90611279565b5f9373ffffffffffffffffffffffffffffffffffffffff6117b7565b9293156119d45773ffffffffffffffffffffffffffffffffffffffff16803b15610c0c576040517f156e29f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529290911660248301526044820192909252905f90829081838160648101611698565b90929073ffffffffffffffffffffffffffffffffffffffff16803b15610c0c575f928360649273ffffffffffffffffffffffffffffffffffffffff948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af18015610c18576116a95750565b73ffffffffffffffffffffffffffffffffffffffff1680611a7c57503190565b9073ffffffffffffffffffffffffffffffffffffffff602460209260405194859384927f70a082310000000000000000000000000000000000000000000000000000000084521660048301525afa908115610c18575f916115cc57509056fea26469706673582212207e0a4aaaed570e953c70f75a0c92c517acc17c88cea95bd9a1b7e1a4862a433a64736f6c634300081a0033","sourceMap":"529:4468:95:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1644:7;529:4468;;;;1622:10;;;:30;529:4468;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;1764:62;529:4468;1779:8;;529:4468;;;;;;1820:4;1764:62;;:::i;:::-;1878:8;;;1863:62;529:4468;;1878:8;;:18;529:4468;;1820:4;529:4468;;;;;1863:62;;:::i;:::-;1944:17;;;;529:4468;;;;;2111:8;529:4468;2111:8;529:4468;;2111:8;;529:4468;2121:11;;2134:13;;529:4468;;2098:50;;;;;;;529:4468;2098:50;;529:4468;2098:50;;529:4468;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2098:50;;;;;;;;;529:4468;2098:50;;;529:4468;2200:8;2185:62;529:4468;2200:8;;529:4468;;1820:4;529:4468;;;;;2185:62;;:::i;:::-;2298:8;;;;2283:62;529:4468;;2298:8;;:18;529:4468;;1820:4;529:4468;;;;;2283:62;;:::i;:::-;2360:11;;529:4468;;2360:11;;;-1:-1:-1;2360:11:95;-1:-1:-1;529:4468:95;2360:22;;2402:11;529:4468;;2402:11;;:27;529:4468;2402:31;2398:947;529:4468;;;2537:11;529:4468;2537:27;529:4468;2522:42;;529:4468;;2695:86;2052:83:109;;529:4468:95;2052:83:109;529:4468:95;;2703:30;2695:86;:::i;:::-;529:4468;2807:16;;529:4468;;;2398:947;;529:4468;4343:15;;4339:151;;2356:1973;529:4468;4503:15;;4499:151;;2356:1973;529:4468;4663:15;;4659:143;;2356:1973;4815:15;529:4468;4815:15;;4811:143;;2356:1973;529:4468;;;;4971:17;529:4468;4971:17;;529:4468;;4971:17;;;529:4468;4971:17;;:::i;:::-;529:4468;;;;;;;;;;;;;:::i;:::-;;;;4811:143;529:4468;4846:8;529:4468;4914:28;4846:8;;:18;529:4468;;;;;4914:17;;529:4468;;;4914:28;;:::i;:::-;4811:143;;;;;;;4659;4762:28;4694:8;529:4468;4694:8;;529:4468;;;;;;;4762:17;;;529:4468;;;4762:28;;:::i;:::-;4659:143;;;4499:151;4605:33;529:4468;;4534:8;;:18;529:4468;;;;;;4590:12;;;:::i;:::-;4605:17;;529:4468;4605:17;;:33;529:4468;;;4605:33;;:::i;:::-;4499:151;;4339;4445:33;529:4468;4374:8;;529:4468;;;;;;4430:12;;;:::i;4445:33::-;4339:151;;529:4468;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2398:947;529:4468;2961:16;;529:4468;;;2241:89:109;3045:86:95;2241:89:109;;;;3053:30:95;3045:86;:::i;:::-;3193:11;:27;529:4468;3178:42;;529:4468;;;2398:947;;;529:4468;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2356:1973;529:4468;3379:27;529:4468;;-1:-1:-1;529:4468:95;;;3514:11;529:4468;3514:27;529:4468;3499:42;;529:4468;;3672:86;2241:89:109;;;;3680:30:95;3672:86;:::i;:::-;529:4468;3784:16;;529:4468;;;3375:944;2356:1973;;529:4468;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3375:944;529:4468;3938:16;;529:4468;;;2052:83:109;4019:86:95;2052:83:109;;529:4468:95;2052:83:109;529:4468:95;;4027:30;4019:86;:::i;:::-;4167:11;:27;529:4468;4152:42;;529:4468;;;3375:944;2356:1973;;529:4468;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2098:50;;;;529:4468;2098:50;;529:4468;2098:50;;;;;;529:4468;2098:50;;;:::i;:::-;;;529:4468;;;;;2098:50;;;;529:4468;;;;2098:50;;;-1:-1:-1;2098:50:95;;;529:4468;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;611:37:97;529:4468:95;;;;;;;;;;;;;;-1:-1:-1;529:4468:95;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1273:73;529:4468;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;1297:10;529:4468;;1284:61;;;529:4468;;;;1284:61;;529:4468;;;;1284:61;;529:4468;;;;1284:61;;529:4468;;;;;1273:73;;;;;;;529:4468;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1273:73;;;;;;;;:::i;:::-;529:4468;;1258:89;;;;529:4468;1258:89;;529:4468;;1258:89;;529:4468;;;;;;:::i;:::-;1258:89;:7;;529:4468;1258:7;529:4468;1258:89;;;;;;;529:4468;1258:89;;;529:4468;;;;;1234:139;;;;;;;;;;529:4468;;;;;1405:21;1440:14;1436:75;;529:4468;;;;;;;;;1436:75;529:4468;1885:19:111;;;;1297:10:95;1920:163:111;;2196:8;2192:75;;1436::95;;;2192::111;3449:551:49;1273:73:95;3449:551:49;529:4468:95;3449:551:49;;2206:35:111;3449:551:49;;1297:10:95;529:4468;3449:551:49;;;529:4468:95;;3449:551:49;;;;529:4468:95;3449:551:49;;;;529:4468:95;;3449:551:49;;;;;529:4468:95;3449:551:49;;;1258:89:95;;;;;529:4468;1258:89;;;;;;:::i;:::-;;;529:4468;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1258:89;;;529:4468;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;529:4468:95;;;;;-1:-1:-1;529:4468:95;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;529:4468:95;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;529:4468:95;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;731:362:97;;;940:24;731:362;940:24;;:::i;:::-;1015:7;529:4468:95;1015:7:97;;529:4468:95;988:36:97;;;;;;:::i;:::-;1845:233:68;;-1:-1:-1;1845:233:68;;;;;;-1:-1:-1;1845:233:68;2109:21;1845:233;529:4468:95;2109:21:68;;;;529:4468:95;2109:21:68;;;;;529:4468:95;2109:21:68;;;;;;;-1:-1:-1;2109:21:68;;;1034:52:97;731:362;:::o;2109:21:68:-;;;1845:233;2109:21;;1845:233;2109:21;;;;;;1845:233;2109:21;;;:::i;:::-;;;529:4468:95;;;;;731:362:97;:::o;2109:21:68:-;;;-1:-1:-1;2109:21:68;;529:4468:95;;;;;;;;;;;;;;;;;;:::o;979:805:117:-;;;1255:523;;;529:4468:95;;1279:44:117;;;;;529:4468:95;;;1279:44:117;;529:4468:95;;;;1279:44:117;;;529:4468:95;;;;;;;;;;;;;;;;;-1:-1:-1;;529:4468:95;;;-1:-1:-1;529:4468:95;;;;1279:44:117;;;;;;;;;;;1255:523;979:805::o;1279:44::-;-1:-1:-1;1279:44:117;;;:::i;:::-;979:805::o;1255:523::-;1344:19;529:4468:95;;4932:52:111;1344:19:117;;529:4468:95;;;1379:31:117;;529:4468:95;;;1379:31:117;;;;;529:4468:95;1379:31:117;;529:4468:95;1379:31:117;;;;;;;;1340:438;979:805::o;1379:31::-;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;979:805::o;1379:31::-;;;;;1340:438;529:4468:95;;;;;1441:22:117;;;;;;529:4468:95;;1441:22:117;529:4468:95;1441:22:117;;-1:-1:-1;1441:22:117;;;;;529:4468:95;-1:-1:-1;1441:22:117;;;;;;;;;;;;;1340:438;-1:-1:-1;529:4468:95;;1498:4:117;;1481:22;;1498:4;;529:4468:95;;;1523:86:117;529:4468:95;;;1523:86:117;;;;;529:4468:95;1523:86:117;;1441:22;1523:86;;529:4468:95;;1441:22:117;529:4468:95;;;;;;;1523:86:117;;;;;;;529:4468:95;1523:86:117;;;;;1477:261;;;1441:22;529:4468:95;;1751:16:117;;;;529:4468:95;1751:16:117;;;;;;;;;;;;1340:438;979:805::o;1751:16::-;529:4468:95;;;;;;;;;;1523:86:117;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;529:4468:95;;;;;;;;;1477:261:117;529:4468:95;;;1648:75:117;529:4468:95;;;;1648:75:117;;;;;529:4468:95;1648:75:117;;;1441:22;1648:75;;529:4468:95;1441:22:117;529:4468:95;;;1648:75:117;;;;;;;529:4468:95;1648:75:117;;;;;1477:261;;;;1648:75;;;;;;;;;;;;;:::i;:::-;;;;;1441:22;;;;;-1:-1:-1;1441:22:117;;:::i;:::-;-1:-1:-1;;529:4468:95;1441:22:117;;2168:230;;;2290:101;;;529:4468:95;;2299:48:117;;;;;529:4468:95;;;2299:48:117;;529:4468:95;;;;2299:48:117;;;529:4468:95;;;;;;;;;;;;;;;;;-1:-1:-1;;529:4468:95;;;-1:-1:-1;529:4468:95;;;;2299:48:117;529:4468:95;2290:101:117;529:4468:95;;;;;2350:41:117;;;;;-1:-1:-1;529:4468:95;;2350:41:117;529:4468:95;;;;;;2350:41:117;;;;;529:4468:95;2350:41:117;;529:4468:95;2350:41:117;;;529:4468:95;;;;;;;;;;2350:41:117;;;;;;;;2290:101;2168:230::o;4577:266:111:-;529:4468:95;;4932:52:111;4676:19;;4718:13;;4711:20;:::o;4672:165::-;529:4468:95;;4769:57:111;529:4468:95;;;;4769:57:111;;;;;529:4468:95;4769:57:111;;529:4468:95;4769:57:111;;;529:4468:95;4769:57:111;;;;;;;529:4468:95;4769:57:111;;;4762:64;;:::o","linkReferences":{},"immutableReferences":{"64782":[{"start":171,"length":32},{"start":3369,"length":32},{"start":4262,"length":32},{"start":5454,"length":32}]}},"methodIdentifiers":{"manager()":"481c6a75","swap((address,address,uint24,int24,address),(bool,int256,uint160),(bool,bool),bytes)":"2229d0b4","unlockCallback(bytes)":"91dd7346"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"_manager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"NoSwapOccurred\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"manager\",\"outputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct IPoolManager.SwapParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"takeClaims\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"settleUsingBurn\",\"type\":\"bool\"}],\"internalType\":\"struct PoolSwapTest.TestSettings\",\"name\":\"testSettings\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"rawData\",\"type\":\"bytes\"}],\"name\":\"unlockCallback\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/test/PoolSwapTest.sol\":\"PoolSwapTest\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":solmate/=lib/solmate/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"src/interfaces/IHooks.sol\":{\"keccak256\":\"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa\",\"dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8\"]},\"src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0x7dd9b494e616cbf623c21e2b8c4e8375acf27d307b02700d4965170bff3bb838\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://381e66840cc15dc602b56a55554aa4ae581e4cfc7ddbfb51f838e6b40981664b\",\"dweb:/ipfs/QmeLdh22eqpj53C8562oN7pE4oWR1sjD82TKdV3sMq3tYu\"]},\"src/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6\",\"dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G\"]},\"src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f\",\"dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw\"]},\"src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410\",\"dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8\"]},\"src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7\",\"dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3\"]},\"src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x2b70cc5e6ca761f4b3110bd7ea6c6064167df260a669b08b2c96c115d5c944ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0f2ae8f2d7da6103f3d884935fb5da10c5463b4d229b31de9e592c4d2275e0bc\",\"dweb:/ipfs/QmWeVnC18TEqGy7fp2GApReNUuZFfDAEsWkycDV8N1LAmy\"]},\"src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d\",\"dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT\"]},\"src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0x028173d4dfa579c49e1d6aa0b0f4d9e0b5b5812bb573586fff53f33926720699\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://98cf56f5917c23331a641363c31d353d58c9a3053bb7d64e62bed5161a23174a\",\"dweb:/ipfs/QmfVufa7owRy4VxYYGHN87F3YGNWvuSq1cpCpJjATvf6CM\"]},\"src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896\",\"dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo\"]},\"src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc\",\"dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa\"]},\"src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"src/libraries/NonZeroDeltaCount.sol\":{\"keccak256\":\"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2\",\"dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC\"]},\"src/libraries/ParseBytes.sol\":{\"keccak256\":\"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8\",\"dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf\"]},\"src/libraries/Position.sol\":{\"keccak256\":\"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce\",\"dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu\"]},\"src/libraries/SafeCast.sol\":{\"keccak256\":\"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4\",\"dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM\"]},\"src/libraries/StateLibrary.sol\":{\"keccak256\":\"0xc6ec44163ec8070201159b62deba112acc572c487cae1abaf0e9974f7c9ade3f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da5517ebf580a3aa8ea9f0e0253c9c739c610a6a04fae1285f705721264aad1a\",\"dweb:/ipfs/QmZQuTAJhnhRwTQhQywfy3hK1iG5FwubTRrEXYzaPJxVMs\"]},\"src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x1bc28f30c176c7c598522da0d8907a90c4cd8ecce81775bb4deb3a9b78782f86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb5c05fb51e59ef168ba884c4ea3627525dba9feea0de9ffa0587438f70fd095\",\"dweb:/ipfs/Qmbx3ntPDZ9VeGsAnVNSM5DKmhPg92yobh5ZHbvdGWtHUd\"]},\"src/test/PoolSwapTest.sol\":{\"keccak256\":\"0x389d2274a70c565c12c8fd7f0f5bdbee7532d842936243141c65cf1477c1a7e8\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://cdaff983aa947444cece280d8485f524a778cf8843c3f8b96f60e4ad137aa8d3\",\"dweb:/ipfs/QmP7qbC3UZz723pTWuJh18qap1vYAHDY5UoJwGtvosWs9k\"]},\"src/test/PoolTestBase.sol\":{\"keccak256\":\"0x71db5a5215d858124dd2ccf73c4474421651f248e4c85d33455d95abced0a23c\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fac0df901621d44a1b98ce4569616940ca6700e7829357bdf18509237b822072\",\"dweb:/ipfs/Qmf9sWokQvzmKfAY6Vd4QzyTyhikqCb8zUowrFPe9DRxs5\"]},\"src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"src/types/Currency.sol\":{\"keccak256\":\"0x03fa1f70ccb3895c63d484ed08892dad57ccb01a194d19b85425348c4fb6a711\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69bb811fe4ce219a033e950d2bfbd34a511ac5d4db7836c86e8c471c7a61b75a\",\"dweb:/ipfs/QmX2LoUGmRn28P1UfwQcfexJ2kdR8kG6UZrsM8d1Nit69G\"]},\"src/types/PoolId.sol\":{\"keccak256\":\"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f\",\"dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB\"]},\"src/types/PoolKey.sol\":{\"keccak256\":\"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf\",\"dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY\"]},\"test/utils/CurrencySettler.sol\":{\"keccak256\":\"0xf5d04aa76b3ac6ff75396661e75ec612035ebd73d23eb6f4e207dbd46392688e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://67a67b94a2987309f06003374ddfc30ab8e81d9fec3b1585e93871eec6966d96\",\"dweb:/ipfs/QmYLzboZNfXoNufKX8UYMGhHVChqMK96vwFWjKeoWcfb24\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPoolManager","name":"_manager","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"NoSwapOccurred"},{"inputs":[],"stateMutability":"view","type":"function","name":"manager","outputs":[{"internalType":"contract IPoolManager","name":"","type":"address"}]},{"inputs":[{"internalType":"struct PoolKey","name":"key","type":"tuple","components":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"internalType":"struct IPoolManager.SwapParams","name":"params","type":"tuple","components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}]},{"internalType":"struct PoolSwapTest.TestSettings","name":"testSettings","type":"tuple","components":[{"internalType":"bool","name":"takeClaims","type":"bool"},{"internalType":"bool","name":"settleUsingBurn","type":"bool"}]},{"internalType":"bytes","name":"hookData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"swap","outputs":[{"internalType":"BalanceDelta","name":"delta","type":"int256"}]},{"inputs":[{"internalType":"bytes","name":"rawData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"unlockCallback","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]}],"devdoc":{"kind":"dev","methods":{},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@ensdomains/=node_modules/@ensdomains/","@openzeppelin/=lib/openzeppelin-contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/forge-gas-snapshot/src/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/","openzeppelin-contracts/=lib/openzeppelin-contracts/","solmate/=lib/solmate/"],"optimizer":{"enabled":true,"runs":44444444},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/test/PoolSwapTest.sol":"PoolSwapTest"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"src/interfaces/IHooks.sol":{"keccak256":"0xdbaf1db938b70f77eb4ddbad5b8d2a1fc648c7d65ca2a312aba16cc013c85df0","urls":["bzz-raw://4ad2d9c85116a2e51281dd40577c798d6d5968be1f8908f43ba152849809deaa","dweb:/ipfs/QmZP4kk9KJzoxv81EgsTfHnJeU8YUxX3yWZudJHbxQjpa8"],"license":"MIT"},"src/interfaces/IPoolManager.sol":{"keccak256":"0x7dd9b494e616cbf623c21e2b8c4e8375acf27d307b02700d4965170bff3bb838","urls":["bzz-raw://381e66840cc15dc602b56a55554aa4ae581e4cfc7ddbfb51f838e6b40981664b","dweb:/ipfs/QmeLdh22eqpj53C8562oN7pE4oWR1sjD82TKdV3sMq3tYu"],"license":"MIT"},"src/interfaces/IProtocolFeeController.sol":{"keccak256":"0xc2d7f3605da9767e36cf25d4d4fa9b95663a6659e26ce28cf29b8b88acb79a4c","urls":["bzz-raw://c7a43cda35b8a9254ed3e46cfd8649361f09121d17ef554bd3d190b9a8d57cc6","dweb:/ipfs/QmRBDQoqCWddH5hY1JdxMyYtY8jMZhWAwtuFJBc3r8V31G"],"license":"MIT"},"src/interfaces/IProtocolFees.sol":{"keccak256":"0x68700020df618c5715737e57630876ec22ccde2d31191a5608babb9f140ed297","urls":["bzz-raw://56b7bb6786f48fff8c9d04e9054955b8cf3d9f5bf819ccda7be192ad2004a27f","dweb:/ipfs/QmZKmUvcYnyihEFySD6SY9osMkP8M1Y7a4kPxLQycEyThw"],"license":"MIT"},"src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xc1c23330c1511ecfd45c67a683962b4e2555b82f1dacd40cc8b46ae5a6e250e7","urls":["bzz-raw://5ce10b7970482a65f9e9a365b810eeb154a5d4a8229a26653028d84b9622a410","dweb:/ipfs/QmTSwXxZ2FTkM5duBZgbpFs8SRVDR5NPAnW4YimeDhb1s8"],"license":"GPL-2.0-or-later"},"src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"src/libraries/CurrencyReserves.sol":{"keccak256":"0xdeffc5cf2f8f7d3f802998941061392c0c926a32c7105ffd9f902ab84d3a31c6","urls":["bzz-raw://869bd659c5593bc525ce4d44771d85eb8acb74a7f0492802bdcc79d2bfdfcaf7","dweb:/ipfs/QmSrTWzUHrou7ZxcuFXQhvzXmEgbLeCtwAqeS6k9vD22h3"],"license":"BUSL-1.1"},"src/libraries/CustomRevert.sol":{"keccak256":"0x2b70cc5e6ca761f4b3110bd7ea6c6064167df260a669b08b2c96c115d5c944ff","urls":["bzz-raw://0f2ae8f2d7da6103f3d884935fb5da10c5463b4d229b31de9e592c4d2275e0bc","dweb:/ipfs/QmWeVnC18TEqGy7fp2GApReNUuZFfDAEsWkycDV8N1LAmy"],"license":"MIT"},"src/libraries/FixedPoint128.sol":{"keccak256":"0xc7e80dc41f28887d0d915a75c0b2783ae659e5384dd1a3ed1251a42e058d8835","urls":["bzz-raw://2df62bf1d9d4349236fd0bc7a96b3a3be95f4c049603e4a20c8473cca9402b4d","dweb:/ipfs/QmVR5dmMkoypmhaBeBj8cGegHpJycbofUDg59dHm42i9MT"],"license":"GPL-2.0-or-later"},"src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0x028173d4dfa579c49e1d6aa0b0f4d9e0b5b5812bb573586fff53f33926720699","urls":["bzz-raw://98cf56f5917c23331a641363c31d353d58c9a3053bb7d64e62bed5161a23174a","dweb:/ipfs/QmfVufa7owRy4VxYYGHN87F3YGNWvuSq1cpCpJjATvf6CM"],"license":"MIT"},"src/libraries/LPFeeLibrary.sol":{"keccak256":"0xfbebd6766871b795d945a74b6110931f73fc775aeeecc2682d6d6ca841a01ece","urls":["bzz-raw://36fcc7098454971ae16d790ee9aee227c22c5cbbd7ff6e27e58ac29b901d5896","dweb:/ipfs/QmboCGTWtycGpda7E169pD67Fox2H9b1YRsNHcsxBRrhfo"],"license":"GPL-2.0-or-later"},"src/libraries/LiquidityMath.sol":{"keccak256":"0x4a04b9383e2fb943c2c3ae7d0c9071b58dd97b6dac0a409fe1c79c3ca897bbcf","urls":["bzz-raw://0b33cf0ff936f62aa7f3b82922fa0ac52ac24471561e87fbf7ab8372607f6dfc","dweb:/ipfs/Qmcr6omwzJjQPu6HQ8E9vFXaTgrtqfb2KbfxbuQavfUzFa"],"license":"GPL-2.0-or-later"},"src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"src/libraries/NonZeroDeltaCount.sol":{"keccak256":"0x6b7e23f470b8352efdbf459a34dd0dcfdbe03e623cb4de67f4ad9be326691586","urls":["bzz-raw://b86af075e2331f7a065b15d91253f2ce6b845dfe09493338f2d7cdab6f9e4cc2","dweb:/ipfs/QmdzHJQapqAS42rMrYPgdvb4Sae7NVy3ESkNc1TuBRcxUC"],"license":"BUSL-1.1"},"src/libraries/ParseBytes.sol":{"keccak256":"0xf0795198d1e651b0b33fd1708d80a14f501bb2a1486905676d35f364e880f579","urls":["bzz-raw://5aea527fcec51d7274f0c189dc2479a6aa708fc91857187a4d7db46bb1d6c7a8","dweb:/ipfs/QmUTrwTPSZ7EHBaTyfAA78rZVP17iQzmAmvDcQ8GhDRAEf"],"license":"GPL-2.0-or-later"},"src/libraries/Position.sol":{"keccak256":"0x0309a650890f1cd93e2b4b1e9a40032d5feb8c6a0ccc24be24373bfd7590ff80","urls":["bzz-raw://63aae574b22048f1453da8f9142374e334683bb3a069c2312f73e6b857842bce","dweb:/ipfs/QmcJZK3kU4jsWfJKBpRq2kaouutEDHcytgMX8ZaGeBsbgu"],"license":"BUSL-1.1"},"src/libraries/SafeCast.sol":{"keccak256":"0xbccc4f8d5d467d162d7f0ab5a7f22bcccf05ae07577b9728c9e3030c63977e60","urls":["bzz-raw://0003ea7a515ba709a3fdeaa19e7930c1f883b3b4fbdbf389d4f2f85b25eb72b4","dweb:/ipfs/QmYs8uNcYRGuGUbeBfF27fhArNaQ5Y9iMCTMfgic5d39fM"],"license":"GPL-2.0-or-later"},"src/libraries/StateLibrary.sol":{"keccak256":"0xc6ec44163ec8070201159b62deba112acc572c487cae1abaf0e9974f7c9ade3f","urls":["bzz-raw://da5517ebf580a3aa8ea9f0e0253c9c739c610a6a04fae1285f705721264aad1a","dweb:/ipfs/QmZQuTAJhnhRwTQhQywfy3hK1iG5FwubTRrEXYzaPJxVMs"],"license":"MIT"},"src/libraries/TransientStateLibrary.sol":{"keccak256":"0x1bc28f30c176c7c598522da0d8907a90c4cd8ecce81775bb4deb3a9b78782f86","urls":["bzz-raw://fb5c05fb51e59ef168ba884c4ea3627525dba9feea0de9ffa0587438f70fd095","dweb:/ipfs/Qmbx3ntPDZ9VeGsAnVNSM5DKmhPg92yobh5ZHbvdGWtHUd"],"license":"MIT"},"src/test/PoolSwapTest.sol":{"keccak256":"0x389d2274a70c565c12c8fd7f0f5bdbee7532d842936243141c65cf1477c1a7e8","urls":["bzz-raw://cdaff983aa947444cece280d8485f524a778cf8843c3f8b96f60e4ad137aa8d3","dweb:/ipfs/QmP7qbC3UZz723pTWuJh18qap1vYAHDY5UoJwGtvosWs9k"],"license":"UNLICENSED"},"src/test/PoolTestBase.sol":{"keccak256":"0x71db5a5215d858124dd2ccf73c4474421651f248e4c85d33455d95abced0a23c","urls":["bzz-raw://fac0df901621d44a1b98ce4569616940ca6700e7829357bdf18509237b822072","dweb:/ipfs/Qmf9sWokQvzmKfAY6Vd4QzyTyhikqCb8zUowrFPe9DRxs5"],"license":"UNLICENSED"},"src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"src/types/Currency.sol":{"keccak256":"0x03fa1f70ccb3895c63d484ed08892dad57ccb01a194d19b85425348c4fb6a711","urls":["bzz-raw://69bb811fe4ce219a033e950d2bfbd34a511ac5d4db7836c86e8c471c7a61b75a","dweb:/ipfs/QmX2LoUGmRn28P1UfwQcfexJ2kdR8kG6UZrsM8d1Nit69G"],"license":"MIT"},"src/types/PoolId.sol":{"keccak256":"0x6946552d4f78712c769df47a9187aa0add8737bb6d06ef04b63a33a3c0ff59f8","urls":["bzz-raw://637851aaa9e06ff59b517e6da17dad3476968c0bc62e141158f76526a8f9c79f","dweb:/ipfs/QmVUxPCRCBE23XQdCrroeUuFqNTtq2LvJaDYmp43QGNsMB"],"license":"MIT"},"src/types/PoolKey.sol":{"keccak256":"0x10a2ff74d87d105f52c6c10f0c6ea0548c12a75dfb979abab8a8b7d647305162","urls":["bzz-raw://a0680665f799067c0f0238e864e363c265ff23188dfe6ae1c4738f7d0a281ccf","dweb:/ipfs/QmRCkZhaPknrV9cHkUiU3HVyMYYT3UaD8RfptHi4qB62zY"],"license":"MIT"},"test/utils/CurrencySettler.sol":{"keccak256":"0xf5d04aa76b3ac6ff75396661e75ec612035ebd73d23eb6f4e207dbd46392688e","urls":["bzz-raw://67a67b94a2987309f06003374ddfc30ab8e81d9fec3b1585e93871eec6966d96","dweb:/ipfs/QmYLzboZNfXoNufKX8UYMGhHVChqMK96vwFWjKeoWcfb24"],"license":"MIT"}},"version":1},"id":95} \ No newline at end of file diff --git a/src/engine/arbitrageur.rs b/src/engine/arbitrageur.rs index bb6b3c8..2a5d588 100644 --- a/src/engine/arbitrageur.rs +++ b/src/engine/arbitrageur.rs @@ -2,7 +2,7 @@ use async_trait::async_trait; use super::*; use crate::{ - types::{controller::ArenaController, swap::PoolSwapTest}, + types::controller::ArenaController, AnvilProvider, Signal, }; @@ -19,24 +19,19 @@ pub trait Arbitrageur { /// Default implementation of an [`Arbitrageur`] that uses the closed-form optimal swap amount to determine the optimal arbitrage. #[derive(Default)] pub struct FixedArbitrageur { - swapper: Option
, + /// The fixed amount to swap on each arbitrage opportunity. + pub depth: Signed<256, 4>, } #[async_trait] impl Arbitrageur for FixedArbitrageur { - async fn init(&mut self, signal: &Signal, provider: AnvilProvider) { - let swapper = PoolSwapTest::deploy(provider.clone(), signal.manager) - .await - .unwrap(); - - self.swapper = Some(*swapper.address()); - } + async fn init(&mut self, _signal: &Signal, _provider: AnvilProvider) {} async fn arbitrage(&mut self, signal: &Signal, provider: AnvilProvider) { let controller = ArenaController::new(signal.controller, provider.clone()); controller - .equalizePrice(Signed::try_from(100000).unwrap()) + .equalizePrice(self.depth) .nonce( provider .clone() diff --git a/src/engine/mod.rs b/src/engine/mod.rs index d6a4870..a1e733e 100644 --- a/src/engine/mod.rs +++ b/src/engine/mod.rs @@ -1,12 +1,12 @@ use alloy::{ - primitives::{Address, Signed, Uint, I256}, + primitives::{Address, Signed, I256}, providers::{Provider, WalletProvider}, }; use super::*; use crate::{ error::ArenaError, - types::{controller::ArenaController, pool_manager::PoolManager::PoolKey}, + types::controller::ArenaController, }; /// Defines a trait for custom arbitrage strategies. pub mod arbitrageur; @@ -14,40 +14,6 @@ pub mod arbitrageur; /// Defines a trait that allows custom strategy logging and telemetry. pub mod inspector; -/// Type that allows the parameters of a Uniswap v4 pool to be set. -#[derive(Default, Debug, Clone)] -pub struct PoolParameters { - /// Pool fee. - pub fee: Uint<24, 1>, - - /// Pool tick spacing. - pub tick_spacing: Signed<24, 1>, - - /// Pool hooks. - pub hooks: Address, -} - -impl From