{"abi":[{"type":"constructor","inputs":[{"name":"initialOwner","type":"address","internalType":"address"}],"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"}],"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 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":"address"}],"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":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"settle","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"settleFor","inputs":[{"name":"recipient","type":"address","internalType":"address"}],"outputs":[{"name":"","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 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":"Donate","inputs":[{"name":"id","type":"bytes32","indexed":true,"internalType":"PoolId"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount0","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"amount1","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":"ProtocolFeeCurrencySynced","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":"0x60a03460a057601f615e8238819003918201601f19168301916001600160401b0383118484101760a45780849260209460405283398101031260a057516001600160a01b0381169081900360a0575f80546001600160a01b0319168217815560405191907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a330608052615dc990816100b98239608051816135260152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60a0806040526004361015610012575f80fd5b5f3560e01c908162fdd58e14612cd55750806301ffc9a714612c16578063095bcdb614612b6c5780630b0d9c0914612ae057806311da60b414612a85578063156e29f6146129d55780631e2eaeaf1461299b578063234266d7146126fc5780632d7713891461265157806335fd631a146125dd5780633dd45adb14612579578063426a8493146124f557806348c894911461226a5780635275965114612152578063558a72971461207b578063598af9e714611fe35780635a6bcfda1461144f5780636276cbbe14610f965780637e87ce7d14610e5957806380f0b44c14610d875780638161b87414610c315780638da5cb5b14610be157806397e8cd4e14610b7e5780639bf6645f14610b31578063a584119414610a66578063b6363cf2146109d5578063dbd035ff1461097f578063f02de3b21461092e578063f135baaa146108f4578063f2fde38b14610848578063f3cd914c146104ff578063f5298aca146103345763fe99049a14610186575f80fd5b346103305760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576101bd612d3f565b6101c5612d62565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885961027973ffffffffffffffffffffffffffffffffffffffff80606435951693843314158061030d575b610287575b845f52600460205260405f20875f5260205260405f2061023a878254612fed565b90551693845f52600460205260405f20865f5260205260405f2061025f828254612ffa565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600560205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036102da575b5050610219565b6102e391612fed565b855f52600560205260405f208333165f5260205260405f20885f5260205260405f20555f866102d3565b50845f52600360205260405f208233165f5260205260ff60405f20541615610214565b5f80fd5b346103305761034236612d85565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f9516956103bb6103b3866130aa565b3390896130f0565b169233841415806104a0575b6103f2575b8385526004602052604085208686526020526040852061025f828254612fed565b0390a4005b83855260056020526040852073ffffffffffffffffffffffffffffffffffffffff33168652602052604085208686526020526040852054817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610459575b50506103cc565b61046291612fed565b84865260056020526040862073ffffffffffffffffffffffffffffffffffffffff331687526020526040862087875260205260408620558681610452565b5083855260036020526040852073ffffffffffffffffffffffffffffffffffffffff3316865260205260ff604086205416156103c7565b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610330576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761053836612e81565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610330576040519061056f82612df6565b60a4358015158103610330578252602082019060c435825260e4359073ffffffffffffffffffffffffffffffffffffffff8216820361033057604084019182526101043567ffffffffffffffff8111610330576105d0903690600401612f4d565b9290937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761060261350f565b51156108205760a0822092835f52600660205260405f209061062382613576565b60808401958482828a8a5173ffffffffffffffffffffffffffffffffffffffff169361064e94613b44565b90949195606088015160020b908b511515905173ffffffffffffffffffffffffffffffffffffffff1691604051986106858a612e12565b895260208901526040880152606087015262ffffff166080860152885115155f149862ffffff6107a2986106db61078f9860209d6108005773ffffffffffffffffffffffffffffffffffffffff8b511695614959565b9492968291926107d3575b505073ffffffffffffffffffffffffffffffffffffffff845116938e6fffffffffffffffffffffffffffffffff60408301511691015160020b90604051958860801d600f0b875288600f0b60208801526040870152606086015260808501521660a08301527f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c03393a38673ffffffffffffffffffffffffffffffffffffffff8a5116613d81565b809491946107aa575b5050823391613652565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6107cc9251169083613652565b8480610798565b73ffffffffffffffffffffffffffffffffffffffff165f5260018f5260405f209081540190558e806106e6565b73ffffffffffffffffffffffffffffffffffffffff8e8c01511695614959565b7fbe8b8507000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fffffffffffffffffffffffff00000000000000000000000000000000000000006108a0612d3f565b73ffffffffffffffffffffffffffffffffffffffff5f54916108c58284163314613007565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004355c5f5260205ff35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b346103305761098d36612f7b565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355481520191019084838210156109cc5750602080916109b0565b60408186030190f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a0c612d3f565b73ffffffffffffffffffffffffffffffffffffffff610a29612d62565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a9d612d3f565b73ffffffffffffffffffffffffffffffffffffffff81169081610ae15750505f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d005b610aea90613a92565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d005b3461033057610b3f36612f7b565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c81520191019084838210156109cc575060208091610b62565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff610bca612d3f565b165f526001602052602060405f2054604051908152f35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610c68612d3f565b610c70612d62565b60443573ffffffffffffffffffffffffffffffffffffffff600254163303610d5f5773ffffffffffffffffffffffffffffffffffffffff821680151580610d1f575b610cf7576020936107a29280610cef5750815f526001855260405f20549384925b5f526001865260405f20610ce8848254612fed565b90556131f8565b938492610cd3565b7fc79e5948000000000000000000000000000000000000000000000000000000005f5260045ffd5b508073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c1614610cb2565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610dbe612d3f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757335f90815273ffffffffffffffffffffffffffffffffffffffff8216602052604090205c610e146024356130aa565b9081600f0b03610e3157610e2f9133915f03600f0b906130f0565b005b7fbda73abf000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610e9136612e81565b610e99612e6f565b9073ffffffffffffffffffffffffffffffffffffffff600254163303610d5f57623e900062fff0008316106103e9610fff8416101615610f6557602060a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9922092835f526006825260405f20610f0f81613576565b805479ffffff00000000000000000000000000000000000000000000008360b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617905562ffffff60405191168152a2005b62ffffff827fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610fce36612e81565b60a4359073ffffffffffffffffffffffffffffffffffffffff821680830361033057610ff861350f565b6060820191825160020b617fff81136114245750825160020b600181126113f9575073ffffffffffffffffffffffffffffffffffffffff815116602082019073ffffffffffffffffffffffffffffffffffffffff825116808210156113c2575050608082019073ffffffffffffffffffffffffffffffffffffffff82511690604084019161108c62ffffff845116826139b7565b1561139757506110a162ffffff835116613a75565b96835173ffffffffffffffffffffffffffffffffffffffff8116908133036112e0575b505060a0852090815f52600660205260405f2090815473ffffffffffffffffffffffffffffffffffffffff166112b8576020997fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438927cffffff000000000000000000000000000000000000000000000000000061114260a0946145fc565b9260d01b168a76ffffff000000000000000000000000000000000000000084861b161717905562ffffff73ffffffffffffffffffffffffffffffffffffffff808a5116965116965116995160020b73ffffffffffffffffffffffffffffffffffffffff885116906040519b8c528c8c015260408b01528860608b015260020b98896080820152a45173ffffffffffffffffffffffffffffffffffffffff8116908133036111f4575b8585604051908152f35b61100016611203575b806111ea565b6112af9261128d604051937f6fe7e6eb0000000000000000000000000000000000000000000000000000000088860152336024860152604485019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60e48301528361010483015261010482526112aa61012483612e2e565b613f25565b508280806111fd565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b612000166112ef575b806110c4565b61139090604051907fdc98354e00000000000000000000000000000000000000000000000000000000602083015233602483015261137a604483018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8860e483015260e482526112aa61010483612e2e565b50886112e9565b7fe65af6a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f6e6c983000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b34610330576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761148836612e81565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261033057604051906114bf82612dda565b60a4358060020b810361033057825260c4358060020b810361033057602083015260e43560408301526101043560608301526101243567ffffffffffffffff811161033057611512903690600401612f4d565b90927fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761154361350f565b60a0832093845f52600660205260405f20608052611562608051613576565b608084015173ffffffffffffffffffffffffffffffffffffffff811690813303611ede575b5050815160020b92602083015160020b916115a56040850151613785565b93606087015160020b9760608201516040519960c08b018b811067ffffffffffffffff821117611eb157604052338b528860208c01528660408c015287600f0b60608c015260808b015260a08a01525f9185881215611e7a577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188812611e4e57620d89e88613611e22576040519261163c84612dda565b5f84525f60208501525f60408501525f606085015287600f0b611b25575b600460805101978960020b5f528860205260405f20988860020b5f5260205260405f206080515460a01c60020b8b81125f14611acf575060028060018c0154600184015490039b015491015490039b5b60a073ffffffffffffffffffffffffffffffffffffffff825116910151906040519160268301528960068301528b600383015281525f603a600c83012091816040820152816020820152525f5260066080510160205260405f20976fffffffffffffffffffffffffffffffff8954169982600f0b155f14611a72578a15611a4a5761176f61176960409f9b61184e9c6118609e5b60018301956117616002611755848a548503615703565b95019283548503615703565b9655556130aa565b916130aa565b6fffffffffffffffffffffffffffffffff169060801b179a8b965f84600f0b126119dc575b5082600f0b611898575b5050506117c46117b58560801d8360801d01613785565b9185600f0b90600f0b01613785565b6fffffffffffffffffffffffffffffffff169060801b1791815160020b90602083015160020b8c8401516060850151918e5194855260208501528d84015260608301527ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec60803393a38873ffffffffffffffffffffffffffffffffffffffff60808201511661385b565b8094919461186c575b50833391613652565b82519182526020820152f35b6118929073ffffffffffffffffffffffffffffffffffffffff6080840151169083613652565b85611857565b60805154929350909173ffffffffffffffffffffffffffffffffffffffff81169060a01c60020b828112156118fe575050906118f2926118e76118dd6118ed94614158565b91600f0b92614158565b90614527565b613785565b60801b5b8b808061179e565b92809193125f146119a95761193d9161192a6118ed6118ed9361192488600f0b91614158565b87614527565b9361193886600f0b92614158565b6144ca565b6fffffffffffffffffffffffffffffffff169060801b17906fffffffffffffffffffffffffffffffff61197c60036080510192600f0b8284541661456e565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790556118f6565b906118ed9250926119bf6118dd6119c595614158565b906144ca565b6fffffffffffffffffffffffffffffffff166118f6565b808f9151611a1e575b01516119f2575b8e611794565b611a198260805160049160020b5f52016020525f6002604082208281558260018201550155565b6119ec565b611a458360805160049160020b5f52016020525f6002604082208281558260018201550155565b6119e5565b7faefeb924000000000000000000000000000000000000000000000000000000005f5260045ffd5b61176f61176960409f9b61184e9c6118609e6fffffffffffffffffffffffffffffffff611aa289600f0b8361456e565b167fffffffffffffffffffffffffffffffff0000000000000000000000000000000084541617835561173e565b9099908913611af55760028060018c0154600184015490039b015491015490039b6116aa565b9860026001608051015460018c01549003600183015490039a81806080510154910154900391015490039b6116aa565b6004608051018960020b5f5280602052898960405f20611b7e81546fffffffffffffffffffffffffffffffff611b6181831695600f0b8661456e565b16931594858515141595611dee575b508d600f0b9060801d613d3a565b60801b82179055602087015285528760020b5f5260205260405f208054906fffffffffffffffffffffffffffffffff8216611bbc8b600f0b8261456e565b901592836fffffffffffffffffffffffffffffffff831615141593611dc1575b8b600f0b9060801d600f0b03916f7fffffffffffffffffffffffffffffff83137fffffffffffffffffffffffffffffffff80000000000000000000000000000000841217611d9457826fffffffffffffffffffffffffffffffff935060801b83831617905516606086015260408501525f88600f0b1215611ca1575b8351611c85575b60408401511561165a57611c8060808c015160020b8860056080510161410c565b61165a565b611c9c60808c015160020b8a60056080510161410c565b611c5f565b60808b015160020b6fffffffffffffffffffffffffffffffff600181602088015116925f817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276180712817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618050390620d89e8050301810416809111611d68576fffffffffffffffffffffffffffffffff6060860151161115611c5857867fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b897fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6080515460a01c60020b8b13611bdc57600160805101546001840155600260805101546002840155611bdc565b6080515460a01c60020b1215611e05575b8e611b70565b600160805101546001840155600260805101546002840155611dff565b857f1ad777f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b877fd5e2f7ab000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60448887604051917fc4433ed500000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f604085015113808091611fd6575b15611f6b5750506040517f259982e5000000000000000000000000000000000000000000000000000000006020820152611f62916112aa82611f368887898c33602487016136cb565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612e2e565b505b8580611587565b159081611fc8575b50611f7f575b50611f64565b6040517f21d0ee70000000000000000000000000000000000000000000000000000000006020820152611fc1916112aa82611f368887898c33602487016136cb565b5085611f79565b610200915016151587611f73565b5061080082161515611eed565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761201a612d3f565b73ffffffffffffffffffffffffffffffffffffffff612037612d62565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576120b2612d3f565b602435908115158092036103305773ffffffffffffffffffffffffffffffffffffffff90335f52600360205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761218a36612e81565b612192612e6f565b906280000062ffffff60408301511614801590612246575b61221e5760a0906121ba8361368e565b205f52600660205260405f20906121d082613576565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1660d09190911b7cffffff000000000000000000000000000000000000000000000000000016179055005b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff6080820151163314156121aa565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043567ffffffffffffffff8111610330576122b9903690600401612f4d565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c6124cd57612345915f9160017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d60405193849283927f91dd734600000000000000000000000000000000000000000000000000000000845260206004850152602484019161306c565b038183335af19081156124c2575f9161241a575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c6123f25760406020915f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835194859381855280519182918282880152018686015e5f85828601015201168101030190f35b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90503d805f833e61242b8183612e2e565b8101906020818303126103305780519067ffffffffffffffff8211610330570181601f820112156103305780519067ffffffffffffffff8211611eb1576040519261249e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612e2e565b8284526020838301011161033057815f9260208093018386015e8301015281612359565b6040513d5f823e3d90fd5b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305773ffffffffffffffffffffffffffffffffffffffff61251836612d85565b91929092335f52600560205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576125ab612d3f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576107a260209161342d565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576024356004356040519160408360208152826020820152019060051b8301916001602060408501935b835481520191019084838210156109cc57506020600191612635565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff61269d612d3f565b6126ab825f54163314613007565b16807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b34610330576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761273536612e81565b60c4359060a43560e43567ffffffffffffffff81116103305761275c903690600401612f4d565b9190937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761278e61350f565b60a0842094855f52600660205260405f20946127a986613576565b60808101805173ffffffffffffffffffffffffffffffffffffffff811690813303612943575b50506fffffffffffffffffffffffffffffffff60038801541697881561291b576020986127fb876130aa565b5f03612806876130aa565b5f036fffffffffffffffffffffffffffffffff169060801b179887612907575b866128f2575b5050612839338985613652565b60405190868252858a8301527f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb60403393a3519273ffffffffffffffffffffffffffffffffffffffff841693843303612897575b8888604051908152f35b6010166128a5575b8061288d565b6128e6956112aa93611f36926040519788957fe1b4af69000000000000000000000000000000000000000000000000000000008d88015233602488016135bc565b5082808080808061289f565b600201908660801b048154019055898061282c565b60018101828960801b048154019055612826565b7fa74f97ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b602016612951575b806127cf565b6040517fb6a8b0fa000000000000000000000000000000000000000000000000000000006020820152612994916112aa82611f368b898b8d8b33602488016135bc565b508861294b565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057600435545f5260205ff35b34610330576129e336612d85565b907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f941695612a62612a55876130aa565b8603600f0b3390896130f0565b16938484526004602052604084208685526020526040842061025f828254612ffa565b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75760206107a23361342d565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612b17612d3f565b612b1f612d62565b604435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757610e2f92612b67612b5a846130aa565b5f03600f0b3390836130f0565b6131f8565b346103305773ffffffffffffffffffffffffffffffffffffffff612b8f36612d85565b91929092335f52600460205260405f20845f5260205260405f20612bb4848254612fed565b90551690815f52600460205260405f20835f5260205260405f20612bd9828254612ffa565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288599181908101610279565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361033057807f01ffc9a70000000000000000000000000000000000000000000000000000000060209214908115612cab575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482612ca0565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760209073ffffffffffffffffffffffffffffffffffffffff612d24612d3f565b165f526004825260405f206024355f52825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126103305760043573ffffffffffffffffffffffffffffffffffffffff8116810361033057906024359060443590565b6080810190811067ffffffffffffffff821117611eb157604052565b6060810190811067ffffffffffffffff821117611eb157604052565b60a0810190811067ffffffffffffffff821117611eb157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611eb157604052565b60a4359062ffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126103305760405190612eb882612e12565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361033057815260243573ffffffffffffffffffffffffffffffffffffffff8116810361033057602082015260443562ffffff811681036103305760408201526064358060020b81036103305760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036103305760800152565b9181601f840112156103305782359167ffffffffffffffff8311610330576020838186019501011161033057565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103305760043567ffffffffffffffff811161033057826023820112156103305780600401359267ffffffffffffffff84116103305760248460051b83010111610330576024019190565b91908203918211611d9457565b91908201809211611d9457565b1561300e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6f800000000000000000000000000000008110156130c857600f0b90565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190600f0b9182156131f357613126919073ffffffffffffffffffffffffffffffffffffffff8092165f521660205260405f2090565b613132815c9283613b29565b80915d6131a357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d5b565b156131aa57565b60017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d565b505050565b90919073ffffffffffffffffffffffffffffffffffffffff811690816132ea5750505f80808093855af11561322a5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60205f60448194968260409573ffffffffffffffffffffffffffffffffffffffff988751998a947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af13d15601f3d116001855114161716928281528260208201520152156133635750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c919073ffffffffffffffffffffffffffffffffffffffff8316613482576131a19034935b61347c856130aa565b906130f0565b346134e7576131a1906134be7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c6134b986613a92565b612fed565b935f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d613473565b7fb0ec849e000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361354e57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5473ffffffffffffffffffffffffffffffffffffffff161561359457565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b91926136376101209473ffffffffffffffffffffffffffffffffffffffff61364f999794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c083015260e082015281610100820152019161306c565b90565b9073ffffffffffffffffffffffffffffffffffffffff60206131a1949361368185848351168660801d906130f0565b01511690600f0b906130f0565b62ffffff16620f424081116136a05750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9061364f95936137486101609473ffffffffffffffffffffffffffffffffffffffff61377794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08501526020820151900b60e0840152604081015161010084015260600151610120830152565b81610140820152019161306c565b9081600f0b9182036130c857565b926138419061381261364f99979473ffffffffffffffffffffffffffffffffffffffff6101a09895168752602087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08701526020820151900b60e0860152604081015161010086015260600151610120850152565b61014083015261016082015281610180820152019161306c565b939590919296945f9673ffffffffffffffffffffffffffffffffffffffff861633146139ac57885f6040870151135f1461393b5761040087166138a2575b50505050505050565b61392e9799985092613927969594926138ef9261391b956040519788967f9f063efc0000000000000000000000000000000000000000000000000000000060208901523360248901613793565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612e2e565b6002821615159161459f565b80926145bf565b915f808080808080613899565b95949392919061010086166139535750505050505050565b61392e979950869850916138ef916139a09493613927986040519788967f6c2bbe7e0000000000000000000000000000000000000000000000000000000060208901523360248901613793565b6001821615159161459f565b505f96505050505050565b608081161580613a69575b613a3f57604081161580613a5d575b613a3f5761040081161580613a51575b613a3f5761010081161580613a45575b613a3f5773ffffffffffffffffffffffffffffffffffffffff8116613a1f575062ffffff1662800000141590565b613fff161590811591613a30575090565b62800000915062ffffff161490565b50505f90565b506001811615156139f1565b506002811615156139e1565b506004811615156139d1565b506008811615156139c2565b6280000062ffffff821614613a8d5761364f8161368e565b505f90565b73ffffffffffffffffffffffffffffffffffffffff1680613ab257504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9081156124c2575f91613afa575090565b90506020813d602011613b21575b81613b1560209383612e2e565b81010312610330575190565b3d9150613b08565b9190915f8382019384129112908015821691151617611d9457565b6020830151955f9586959194913373ffffffffffffffffffffffffffffffffffffffff851614613d2d5760808416613b7e575b5050505050565b613c66926138ef613c6092613c4c946040519586947f575e24b4000000000000000000000000000000000000000000000000000000006020870152336024870152613c16604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560e487015260208101516101048701526040015173ffffffffffffffffffffffffffffffffffffffff16610124860152565b61014061014485015261016484019161306c565b82613f25565b916060835103613d05576040015162ffffff166280000014613cf9575b600816613c94575b80808080613b77565b604001519250608083901d600f0b8015613c8b57613cb5905f861295613b29565b9315613cf1575f84135b613cc9575f613c8b565b7ffa0b71d6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f8412613cbf565b60608201519350613c83565b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f965086955050505050565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff831317611d9457565b9196959394929473ffffffffffffffffffffffffffffffffffffffff83163314613f18578460801d94600f0b938860408516613e40575b50505050505f9481600f0b15801590613e34575b613dd8575b5050509190565b613e0f9395505f60208201511290511515145f14613e17576fffffffffffffffffffffffffffffffff169060801b175b80936145bf565b5f8080613dd1565b906fffffffffffffffffffffffffffffffff169060801b17613e08565b5082600f0b1515613dcc565b613efc613f08946138ef6118ed95613f0e999895613ee1613c16966040519788967fb47b2fb1000000000000000000000000000000000000000000000000000000006020890152336024890152604488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8c61014485015261016061016485015261018484019161306c565b6004821615159161459f565b90613d3a565b5f80808088613db8565b5050505050909150905f90565b9190918251925f8060208301958682865af115613fc3575050604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e6020845110918215613f8f575b5050613d0557565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f80613f87565b5183517fffffffff00000000000000000000000000000000000000000000000000000000811691600481106140d7575b50507fffffffff000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01169173ffffffffffffffffffffffffffffffffffffffff604051947f90bfb865000000000000000000000000000000000000000000000000000000008652166004850152166024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fa9e35b2f0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffff000000000000000000000000000000000000000000000000000000009250829060040360031b1b16168280613ff3565b919060020b9060020b9081810761413a5705908160081d5f52602052600160ff60405f2092161b8154189055565b601c906044926040519163d4d8f3e683526020830152604082015201fd5b60020b908160ff1d82810118620d89e8811161449e5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102700100000000000000000000000000000000189160028116614482575b60048116614466575b6008811661444a575b6010811661442e575b60208116614412575b604081166143f6575b608081166143da575b61010081166143be575b61020081166143a2575b6104008116614386575b610800811661436a575b611000811661434e575b6120008116614332575b6140008116614316575b61800081166142fa575b6201000081166142de575b6202000081166142c3575b6204000081166142a8575b620800001661428f575b5f12614268575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04614261565b6b048a170391f7dc42444e8fa290910260801c9061425a565b6d2216e584f5fa1ea926041bedfe9890920260801c91614250565b916e5d6af8dedb81196699c329225ee6040260801c91614245565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161423a565b916f31be135f97d08fd981231505542fcfa60260801c9161422f565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614225565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161421b565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614211565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614207565b916ff3392b0822b70005940c7a398e4b70f30260801c916141fd565b916ff987a7253ac413176f2b074cf7815e540260801c916141f3565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916141e9565b916ffe5dee046a99a2a811c461f1969c30530260801c916141df565b916fff2ea16466c96a3843ec78b326b528610260801c916141d6565b916fff973b41fa98c081472e6896dfb254c00260801c916141cd565b916fffcb9843d60f6159c9db58835c9266440260801c916141c4565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916141bb565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916141b2565b916ffff97272373d413259a46990580e213a0260801c916141a9565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b905f83600f0b125f146144ff576144f5925f036fffffffffffffffffffffffffffffffff1691615a3d565b5f81126130c85790565b61451b926fffffffffffffffffffffffffffffffff16916159e2565b5f81126130c8575f0390565b905f83600f0b125f14614552576144f5925f036fffffffffffffffffffffffffffffffff1691615b34565b61451b926fffffffffffffffffffffffffffffffff1691615a7d565b906fffffffffffffffffffffffffffffffff90600f0b911601908160801c61459257565b6393dafdf15f526004601cfd5b906145a991613f25565b9015613a8d576040815103613d05576040015190565b6145e2906145d48360801d8260801d03613785565b92600f0b90600f0b03613785565b6fffffffffffffffffffffffffffffffff169060801b1790565b73fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d830116116148e05777ffffffffffffffffffffffffffffffffffffffff000000008160201b168060ff61467983615bdb565b1691608083106148d457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8182011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c67800000000000000016907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800160401b1717171717171717171717171717693627a301d71055774c85027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f146148915750905090565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff6148c584614158565b16116148cf575090565b905090565b905081607f031b6146a9565b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b811561492c570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6040519290915f61496985612df6565b5f855260208501925f845260408601955f875280968654956040860151159586155f146156f557610fff8860b81c16945b8151925f948a73ffffffffffffffffffffffffffffffffffffffff16918288528b60a01c60020b90526fffffffffffffffffffffffffffffffff60038d0154169052608083015162400000811615155f146156e65762bfffff166149fd8161368e565b61ffff88166156cb575b8096620f424062ffffff8316101561569a575b8451156156845750508861562457606083019073ffffffffffffffffffffffffffffffffffffffff825116818110156155ed5750505173ffffffffffffffffffffffffffffffffffffffff166401000276a38111156155c257505b604051986101008a018a811067ffffffffffffffff821117611eb1576040525f8a525f60208b01525f60408b01525f60608b01525f60808b01525f60a08b01525f60c08b015288155f146155b45760018b0154949390945b60e08b01525b8015801561557a575b6154205788868d8c8e73ffffffffffffffffffffffffffffffffffffffff8351168252602083015160020b602089015160020b90815f8183071291050386155f14615275576fffffffffffffffffffffffffffffffff937ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860409460019484600560ff60609716938260020b60081d890b5f5201602052875f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460ff031c9054169283151593845f146152635790614bb760ff92615bdb565b90031660020b900360020b0260020b5b905b15158684015260020b8060208401521315615238575b620d89e8602082015160020b121561522a575b73ffffffffffffffffffffffffffffffffffffffff614c17602083015160020b614158565b16918291015273ffffffffffffffffffffffffffffffffffffffff8551169673ffffffffffffffffffffffffffffffffffffffff60608c0151169283911516818310189118021892015116928d73ffffffffffffffffffffffffffffffffffffffff8316821015915f87125f1461507f5762ffffff8516620f424003614c9f81895f03615785565b94841561506e57614cb1888483615a7d565b955b868110614fb257509660a093929173ffffffffffffffffffffffffffffffffffffffff98978891620f424062ffffff8316145f14614f9e575050865b955b15614f905791614d0092615a3d565b925b60c0820152015260808d0152168c525f8351135f14614f605760a08a0151905f82126130c8570392614d3d60808b015160c08c015190612ffa565b5f81126130c8578103908113600116611d9457935b61ffff8716614f18575b6fffffffffffffffffffffffffffffffff60408d01511680614efe575b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608c01511681145f14614ec2575060408a0151614e10575b88614e03577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208b015160020b0160020b5b60020b60208d01525b9392614ad3565b60208a015160020b614df3565b88614e96576fffffffffffffffffffffffffffffffff614e7d8d8d8d600460e08201519260206002820154935b015160020b60020b5f520160205260405f2091600183019081549003905560028201908154900390555460801d908c15614e88575b60400151831661456e565b1660408d0152614dc0565b5f91909103600f0b90614e72565b6fffffffffffffffffffffffffffffffff614e7d8d8d8d6004600183015492602060e084015193614e3d565b73ffffffffffffffffffffffffffffffffffffffff8b51168103614ee7575b50614dfc565b614ef0906145fc565b60020b60208d01525f614ee1565b60c08b015160801b0460e08b01510160e08b01525f614d79565b9662ffffff861661ffff881603614f435760c08a0151905b8160c08c01510360c08c01520196614d5c565b620f424060808b015161ffff89169060c08d015101020490614f30565b60808a015160c08b015101905f82126130c857019260a08a01515f81126130c857614f8a91613b29565b93614d52565b614f9992615b34565b614d00565b62ffffff614fad921689615c68565b614cef565b9650505092505082918415811517615061578e60a09173ffffffffffffffffffffffffffffffffffffffff96845f14614ffc57614ff0878284615d07565b80978a015f0395614cf1565b87871161503a576150356150306150286fffffffffffffffffffffffffffffffff84168a60601b614922565b8a8516612ffa565b615d9b565b614ff0565b61503561503061505c6fffffffffffffffffffffffffffffffff84168a61588a565b615028565b634f2461b85f526004601cfd5b6150798882856159e2565b95614cb3565b9193509190831561521957615095858284615a3d565b915b8287106150f7579073ffffffffffffffffffffffffffffffffffffffff9560a09280965b156150e857916150ca92615a7d565b925b6150e362ffffff8d16620f42408190039086615c68565b614d02565b6150f1926159e2565b926150cc565b50915050838315821517615061578d83156151ef575073ffffffffffffffffffffffffffffffffffffffff851161519c578460601b6fffffffffffffffffffffffffffffffff851680820615159104015b73ffffffffffffffffffffffffffffffffffffffff8316928184111561518f578f939573ffffffffffffffffffffffffffffffffffffffff60a093819803165b80966150bb565b634323a5555f526004601cfd5b6fffffffffffffffffffffffffffffffff84166151c7816c0100000000000000000000000088615943565b90801561492c576c010000000000000000000000008709156151485760010180615148575f80fd5b9180856152148873ffffffffffffffffffffffffffffffffffffffff9860a095615c91565b615188565b615224858383615b34565b91615097565b620d89e86020820152614bf2565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186020820152614bdf565b5060020b900360020b0260020b614bc7565b60019194939650600592955001938460020b60081d60010b5f520160205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160ff86161b0119905416908d8b831592831597885f146153c15750505050610330578f9160018f8f96907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186060928f989560409660ff896fffffffffffffffffffffffffffffffff9a5f03166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f85851693831c63d76453e004161a17031660020b9060020b0160020b0260020b5b90614bc9565b90956fffffffffffffffffffffffffffffffff955060409450600193987ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618918960ff6060969b811681031660020b9060020b0160020b0260020b6153bb565b949891955099969298919598602088015160a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8a51169216171782556fffffffffffffffffffffffffffffffff6003830154166fffffffffffffffffffffffffffffffff604089015116809103615535575b5082156155265760e060029101519101555b825190155f82121461551057506154ee6154f69293613785565b925103613785565b6fffffffffffffffffffffffffffffffff169060801b1793565b6154f69250906155209103613785565b91613785565b60e060019101519101556154d4565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000006003840154161760038301555f6154c2565b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608501511614614adc565b60028b015494939094614acd565b7f9e4d7cc7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f7c9c6e8f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606083019073ffffffffffffffffffffffffffffffffffffffff825116818111156155ed5750505173ffffffffffffffffffffffffffffffffffffffff1673fffd8963efd1fc6a506488495d951d5263988d268110156155c25750614a75565b9a509a50509950505050505050505f925f929190565b5f85511315614a1a577f96206246000000000000000000000000000000000000000000000000000000005f5260045ffd5b62ffffff610fff89169116620f424081830204910103614a07565b508960d01c62ffffff166149fd565b610fff8860c41c169461499a565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393847001000000000000000000000000000000001115610330571461577c57700100000000000000000000000000000000910990828211900360801b910360801c1790565b50505060801c90565b818102907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83820990828083109203918083039283620f424011156103305714615804577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156103305714615881576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c01000000000000000000000000840992828085109403938085039485841115610330571461593c576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185099383808610950394808603958685111561033057146159da579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b6fffffffffffffffffffffffffffffffff6c010000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff80600195169116038060ff1d90810118931692615a348185615810565b93091515160190565b6fffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff8061364f9594169116038060ff1d908101189116615810565b9073ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff831611615b2e575b73ffffffffffffffffffffffffffffffffffffffff8216928315615b22577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615b16948185169403169160601b16615c68565b90808206151591040190565b62bfc9215f526004601cfd5b90615ab2565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821611615bd5575b73ffffffffffffffffffffffffffffffffffffffff8116918215615b225761364f937bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615bd0948185169403169160601b16615943565b614922565b90615b68565b8015610330577f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c60ff1060031b1792831c1c601f161a1790565b929190615c76828286615943565b93821561492c5709615c8457565b9060010190811561033057565b91908115615d02577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff9160601b169216918282029183838311918404141615615cf55761364f9261503092820391615c68565b63f5c787f15f526004601cfd5b505090565b90918015615d955773ffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffff000000000000000000000000819460601b16921680820281615d578483614922565b14615d7d575b5090615d6c615d719284614922565b612ffa565b80820615159104011690565b8301838110615d5d579150615d9192615c68565b1690565b50905090565b9073ffffffffffffffffffffffffffffffffffffffff82169182036130c85756fea164736f6c634300081a000a","sourceMap":"4791:12821:33:-:0;;;;;;;;;;;;;-1:-1:-1;;4791:12821:33;;;;-1:-1:-1;;;;;4791:12821:33;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4791:12821:33;;;;;;;;-1:-1:-1;4791:12821:33;;-1:-1:-1;;;;;;4791:12821:33;;;;;;;;;1075:40:24;-1:-1:-1;;1075:40:24;719:4:32;700:24;;4791:12821:33;;;;;;700:24:32;4791:12821:33;;;;;;;-1:-1:-1;4791:12821:33;;;;;;-1:-1:-1;4791:12821:33;;;;;-1:-1:-1;4791:12821:33","linkReferences":{}},"deployedBytecode":{"object":"0x60a0806040526004361015610012575f80fd5b5f3560e01c908162fdd58e14612cd55750806301ffc9a714612c16578063095bcdb614612b6c5780630b0d9c0914612ae057806311da60b414612a85578063156e29f6146129d55780631e2eaeaf1461299b578063234266d7146126fc5780632d7713891461265157806335fd631a146125dd5780633dd45adb14612579578063426a8493146124f557806348c894911461226a5780635275965114612152578063558a72971461207b578063598af9e714611fe35780635a6bcfda1461144f5780636276cbbe14610f965780637e87ce7d14610e5957806380f0b44c14610d875780638161b87414610c315780638da5cb5b14610be157806397e8cd4e14610b7e5780639bf6645f14610b31578063a584119414610a66578063b6363cf2146109d5578063dbd035ff1461097f578063f02de3b21461092e578063f135baaa146108f4578063f2fde38b14610848578063f3cd914c146104ff578063f5298aca146103345763fe99049a14610186575f80fd5b346103305760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576101bd612d3f565b6101c5612d62565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885961027973ffffffffffffffffffffffffffffffffffffffff80606435951693843314158061030d575b610287575b845f52600460205260405f20875f5260205260405f2061023a878254612fed565b90551693845f52600460205260405f20865f5260205260405f2061025f828254612ffa565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600560205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036102da575b5050610219565b6102e391612fed565b855f52600560205260405f208333165f5260205260405f20885f5260205260405f20555f866102d3565b50845f52600360205260405f208233165f5260205260ff60405f20541615610214565b5f80fd5b346103305761034236612d85565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f9516956103bb6103b3866130aa565b3390896130f0565b169233841415806104a0575b6103f2575b8385526004602052604085208686526020526040852061025f828254612fed565b0390a4005b83855260056020526040852073ffffffffffffffffffffffffffffffffffffffff33168652602052604085208686526020526040852054817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610459575b50506103cc565b61046291612fed565b84865260056020526040862073ffffffffffffffffffffffffffffffffffffffff331687526020526040862087875260205260408620558681610452565b5083855260036020526040852073ffffffffffffffffffffffffffffffffffffffff3316865260205260ff604086205416156103c7565b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610330576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761053836612e81565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610330576040519061056f82612df6565b60a4358015158103610330578252602082019060c435825260e4359073ffffffffffffffffffffffffffffffffffffffff8216820361033057604084019182526101043567ffffffffffffffff8111610330576105d0903690600401612f4d565b9290937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761060261350f565b51156108205760a0822092835f52600660205260405f209061062382613576565b60808401958482828a8a5173ffffffffffffffffffffffffffffffffffffffff169361064e94613b44565b90949195606088015160020b908b511515905173ffffffffffffffffffffffffffffffffffffffff1691604051986106858a612e12565b895260208901526040880152606087015262ffffff166080860152885115155f149862ffffff6107a2986106db61078f9860209d6108005773ffffffffffffffffffffffffffffffffffffffff8b511695614959565b9492968291926107d3575b505073ffffffffffffffffffffffffffffffffffffffff845116938e6fffffffffffffffffffffffffffffffff60408301511691015160020b90604051958860801d600f0b875288600f0b60208801526040870152606086015260808501521660a08301527f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c03393a38673ffffffffffffffffffffffffffffffffffffffff8a5116613d81565b809491946107aa575b5050823391613652565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6107cc9251169083613652565b8480610798565b73ffffffffffffffffffffffffffffffffffffffff165f5260018f5260405f209081540190558e806106e6565b73ffffffffffffffffffffffffffffffffffffffff8e8c01511695614959565b7fbe8b8507000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fffffffffffffffffffffffff00000000000000000000000000000000000000006108a0612d3f565b73ffffffffffffffffffffffffffffffffffffffff5f54916108c58284163314613007565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004355c5f5260205ff35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b346103305761098d36612f7b565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355481520191019084838210156109cc5750602080916109b0565b60408186030190f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a0c612d3f565b73ffffffffffffffffffffffffffffffffffffffff610a29612d62565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a9d612d3f565b73ffffffffffffffffffffffffffffffffffffffff81169081610ae15750505f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d005b610aea90613a92565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d005b3461033057610b3f36612f7b565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c81520191019084838210156109cc575060208091610b62565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff610bca612d3f565b165f526001602052602060405f2054604051908152f35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610c68612d3f565b610c70612d62565b60443573ffffffffffffffffffffffffffffffffffffffff600254163303610d5f5773ffffffffffffffffffffffffffffffffffffffff821680151580610d1f575b610cf7576020936107a29280610cef5750815f526001855260405f20549384925b5f526001865260405f20610ce8848254612fed565b90556131f8565b938492610cd3565b7fc79e5948000000000000000000000000000000000000000000000000000000005f5260045ffd5b508073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c1614610cb2565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610dbe612d3f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757335f90815273ffffffffffffffffffffffffffffffffffffffff8216602052604090205c610e146024356130aa565b9081600f0b03610e3157610e2f9133915f03600f0b906130f0565b005b7fbda73abf000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610e9136612e81565b610e99612e6f565b9073ffffffffffffffffffffffffffffffffffffffff600254163303610d5f57623e900062fff0008316106103e9610fff8416101615610f6557602060a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9922092835f526006825260405f20610f0f81613576565b805479ffffff00000000000000000000000000000000000000000000008360b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617905562ffffff60405191168152a2005b62ffffff827fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610fce36612e81565b60a4359073ffffffffffffffffffffffffffffffffffffffff821680830361033057610ff861350f565b6060820191825160020b617fff81136114245750825160020b600181126113f9575073ffffffffffffffffffffffffffffffffffffffff815116602082019073ffffffffffffffffffffffffffffffffffffffff825116808210156113c2575050608082019073ffffffffffffffffffffffffffffffffffffffff82511690604084019161108c62ffffff845116826139b7565b1561139757506110a162ffffff835116613a75565b96835173ffffffffffffffffffffffffffffffffffffffff8116908133036112e0575b505060a0852090815f52600660205260405f2090815473ffffffffffffffffffffffffffffffffffffffff166112b8576020997fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438927cffffff000000000000000000000000000000000000000000000000000061114260a0946145fc565b9260d01b168a76ffffff000000000000000000000000000000000000000084861b161717905562ffffff73ffffffffffffffffffffffffffffffffffffffff808a5116965116965116995160020b73ffffffffffffffffffffffffffffffffffffffff885116906040519b8c528c8c015260408b01528860608b015260020b98896080820152a45173ffffffffffffffffffffffffffffffffffffffff8116908133036111f4575b8585604051908152f35b61100016611203575b806111ea565b6112af9261128d604051937f6fe7e6eb0000000000000000000000000000000000000000000000000000000088860152336024860152604485019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60e48301528361010483015261010482526112aa61012483612e2e565b613f25565b508280806111fd565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b612000166112ef575b806110c4565b61139090604051907fdc98354e00000000000000000000000000000000000000000000000000000000602083015233602483015261137a604483018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8860e483015260e482526112aa61010483612e2e565b50886112e9565b7fe65af6a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f6e6c983000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b34610330576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761148836612e81565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261033057604051906114bf82612dda565b60a4358060020b810361033057825260c4358060020b810361033057602083015260e43560408301526101043560608301526101243567ffffffffffffffff811161033057611512903690600401612f4d565b90927fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761154361350f565b60a0832093845f52600660205260405f20608052611562608051613576565b608084015173ffffffffffffffffffffffffffffffffffffffff811690813303611ede575b5050815160020b92602083015160020b916115a56040850151613785565b93606087015160020b9760608201516040519960c08b018b811067ffffffffffffffff821117611eb157604052338b528860208c01528660408c015287600f0b60608c015260808b015260a08a01525f9185881215611e7a577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188812611e4e57620d89e88613611e22576040519261163c84612dda565b5f84525f60208501525f60408501525f606085015287600f0b611b25575b600460805101978960020b5f528860205260405f20988860020b5f5260205260405f206080515460a01c60020b8b81125f14611acf575060028060018c0154600184015490039b015491015490039b5b60a073ffffffffffffffffffffffffffffffffffffffff825116910151906040519160268301528960068301528b600383015281525f603a600c83012091816040820152816020820152525f5260066080510160205260405f20976fffffffffffffffffffffffffffffffff8954169982600f0b155f14611a72578a15611a4a5761176f61176960409f9b61184e9c6118609e5b60018301956117616002611755848a548503615703565b95019283548503615703565b9655556130aa565b916130aa565b6fffffffffffffffffffffffffffffffff169060801b179a8b965f84600f0b126119dc575b5082600f0b611898575b5050506117c46117b58560801d8360801d01613785565b9185600f0b90600f0b01613785565b6fffffffffffffffffffffffffffffffff169060801b1791815160020b90602083015160020b8c8401516060850151918e5194855260208501528d84015260608301527ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec60803393a38873ffffffffffffffffffffffffffffffffffffffff60808201511661385b565b8094919461186c575b50833391613652565b82519182526020820152f35b6118929073ffffffffffffffffffffffffffffffffffffffff6080840151169083613652565b85611857565b60805154929350909173ffffffffffffffffffffffffffffffffffffffff81169060a01c60020b828112156118fe575050906118f2926118e76118dd6118ed94614158565b91600f0b92614158565b90614527565b613785565b60801b5b8b808061179e565b92809193125f146119a95761193d9161192a6118ed6118ed9361192488600f0b91614158565b87614527565b9361193886600f0b92614158565b6144ca565b6fffffffffffffffffffffffffffffffff169060801b17906fffffffffffffffffffffffffffffffff61197c60036080510192600f0b8284541661456e565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790556118f6565b906118ed9250926119bf6118dd6119c595614158565b906144ca565b6fffffffffffffffffffffffffffffffff166118f6565b808f9151611a1e575b01516119f2575b8e611794565b611a198260805160049160020b5f52016020525f6002604082208281558260018201550155565b6119ec565b611a458360805160049160020b5f52016020525f6002604082208281558260018201550155565b6119e5565b7faefeb924000000000000000000000000000000000000000000000000000000005f5260045ffd5b61176f61176960409f9b61184e9c6118609e6fffffffffffffffffffffffffffffffff611aa289600f0b8361456e565b167fffffffffffffffffffffffffffffffff0000000000000000000000000000000084541617835561173e565b9099908913611af55760028060018c0154600184015490039b015491015490039b6116aa565b9860026001608051015460018c01549003600183015490039a81806080510154910154900391015490039b6116aa565b6004608051018960020b5f5280602052898960405f20611b7e81546fffffffffffffffffffffffffffffffff611b6181831695600f0b8661456e565b16931594858515141595611dee575b508d600f0b9060801d613d3a565b60801b82179055602087015285528760020b5f5260205260405f208054906fffffffffffffffffffffffffffffffff8216611bbc8b600f0b8261456e565b901592836fffffffffffffffffffffffffffffffff831615141593611dc1575b8b600f0b9060801d600f0b03916f7fffffffffffffffffffffffffffffff83137fffffffffffffffffffffffffffffffff80000000000000000000000000000000841217611d9457826fffffffffffffffffffffffffffffffff935060801b83831617905516606086015260408501525f88600f0b1215611ca1575b8351611c85575b60408401511561165a57611c8060808c015160020b8860056080510161410c565b61165a565b611c9c60808c015160020b8a60056080510161410c565b611c5f565b60808b015160020b6fffffffffffffffffffffffffffffffff600181602088015116925f817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276180712817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618050390620d89e8050301810416809111611d68576fffffffffffffffffffffffffffffffff6060860151161115611c5857867fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b897fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6080515460a01c60020b8b13611bdc57600160805101546001840155600260805101546002840155611bdc565b6080515460a01c60020b1215611e05575b8e611b70565b600160805101546001840155600260805101546002840155611dff565b857f1ad777f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b877fd5e2f7ab000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60448887604051917fc4433ed500000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f604085015113808091611fd6575b15611f6b5750506040517f259982e5000000000000000000000000000000000000000000000000000000006020820152611f62916112aa82611f368887898c33602487016136cb565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612e2e565b505b8580611587565b159081611fc8575b50611f7f575b50611f64565b6040517f21d0ee70000000000000000000000000000000000000000000000000000000006020820152611fc1916112aa82611f368887898c33602487016136cb565b5085611f79565b610200915016151587611f73565b5061080082161515611eed565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761201a612d3f565b73ffffffffffffffffffffffffffffffffffffffff612037612d62565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576120b2612d3f565b602435908115158092036103305773ffffffffffffffffffffffffffffffffffffffff90335f52600360205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760203392a3602060405160018152f35b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761218a36612e81565b612192612e6f565b906280000062ffffff60408301511614801590612246575b61221e5760a0906121ba8361368e565b205f52600660205260405f20906121d082613576565b81547fffffff000000ffffffffffffffffffffffffffffffffffffffffffffffffffff1660d09190911b7cffffff000000000000000000000000000000000000000000000000000016179055005b7f30d21641000000000000000000000000000000000000000000000000000000005f5260045ffd5b5073ffffffffffffffffffffffffffffffffffffffff6080820151163314156121aa565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760043567ffffffffffffffff8111610330576122b9903690600401612f4d565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c6124cd57612345915f9160017fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d60405193849283927f91dd734600000000000000000000000000000000000000000000000000000000845260206004850152602484019161306c565b038183335af19081156124c2575f9161241a575b507f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c6123f25760406020915f7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f835194859381855280519182918282880152018686015e5f85828601015201168101030190f35b7f5212cba1000000000000000000000000000000000000000000000000000000005f5260045ffd5b90503d805f833e61242b8183612e2e565b8101906020818303126103305780519067ffffffffffffffff8211610330570181601f820112156103305780519067ffffffffffffffff8211611eb1576040519261249e60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8601160185612e2e565b8284526020838301011161033057815f9260208093018386015e8301015281612359565b6040513d5f823e3d90fd5b7f5090d6c6000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305773ffffffffffffffffffffffffffffffffffffffff61251836612d85565b91929092335f52600560205260405f208282165f5260205260405f20845f526020528260405f205560405192835216907fb3fd5071835887567a0671151121894ddccc2842f1d10bedad13e0d17cace9a760203392a4602060405160018152f35b60207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576125ab612d3f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7576107a260209161342d565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576024356004356040519160408360208152826020820152019060051b8301916001602060408501935b835481520191019084838210156109cc57506020600191612635565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff61269d612d3f565b6126ab825f54163314613007565b16807fffffffffffffffffffffffff000000000000000000000000000000000000000060025416176002557fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc5f80a2005b34610330576101007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761273536612e81565b60c4359060a43560e43567ffffffffffffffff81116103305761275c903690600401612f4d565b9190937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761278e61350f565b60a0842094855f52600660205260405f20946127a986613576565b60808101805173ffffffffffffffffffffffffffffffffffffffff811690813303612943575b50506fffffffffffffffffffffffffffffffff60038801541697881561291b576020986127fb876130aa565b5f03612806876130aa565b5f036fffffffffffffffffffffffffffffffff169060801b179887612907575b866128f2575b5050612839338985613652565b60405190868252858a8301527f29ef05caaff9404b7cb6d1c0e9bbae9eaa7ab2541feba1a9c4248594c08156cb60403393a3519273ffffffffffffffffffffffffffffffffffffffff841693843303612897575b8888604051908152f35b6010166128a5575b8061288d565b6128e6956112aa93611f36926040519788957fe1b4af69000000000000000000000000000000000000000000000000000000008d88015233602488016135bc565b5082808080808061289f565b600201908660801b048154019055898061282c565b60018101828960801b048154019055612826565b7fa74f97ab000000000000000000000000000000000000000000000000000000005f5260045ffd5b602016612951575b806127cf565b6040517fb6a8b0fa000000000000000000000000000000000000000000000000000000006020820152612994916112aa82611f368b898b8d8b33602488016135bc565b508861294b565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057600435545f5260205ff35b34610330576129e336612d85565b907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f941695612a62612a55876130aa565b8603600f0b3390896130f0565b16938484526004602052604084208685526020526040842061025f828254612ffa565b5f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75760206107a23361342d565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057612b17612d3f565b612b1f612d62565b604435907fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757610e2f92612b67612b5a846130aa565b5f03600f0b3390836130f0565b6131f8565b346103305773ffffffffffffffffffffffffffffffffffffffff612b8f36612d85565b91929092335f52600460205260405f20845f5260205260405f20612bb4848254612fed565b90551690815f52600460205260405f20835f5260205260405f20612bd9828254612ffa565b9055604080513380825260208201939093527f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288599181908101610279565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004357fffffffff00000000000000000000000000000000000000000000000000000000811680910361033057807f01ffc9a70000000000000000000000000000000000000000000000000000000060209214908115612cab575b506040519015158152f35b7f0f632fb30000000000000000000000000000000000000000000000000000000091501482612ca0565b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305760209073ffffffffffffffffffffffffffffffffffffffff612d24612d3f565b165f526004825260405f206024355f52825260405f20548152f35b6004359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b6024359073ffffffffffffffffffffffffffffffffffffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60609101126103305760043573ffffffffffffffffffffffffffffffffffffffff8116810361033057906024359060443590565b6080810190811067ffffffffffffffff821117611eb157604052565b6060810190811067ffffffffffffffff821117611eb157604052565b60a0810190811067ffffffffffffffff821117611eb157604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff821117611eb157604052565b60a4359062ffffff8216820361033057565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc60a09101126103305760405190612eb882612e12565b8160043573ffffffffffffffffffffffffffffffffffffffff8116810361033057815260243573ffffffffffffffffffffffffffffffffffffffff8116810361033057602082015260443562ffffff811681036103305760408201526064358060020b81036103305760608201526084359073ffffffffffffffffffffffffffffffffffffffff821682036103305760800152565b9181601f840112156103305782359167ffffffffffffffff8311610330576020838186019501011161033057565b9060207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc8301126103305760043567ffffffffffffffff811161033057826023820112156103305780600401359267ffffffffffffffff84116103305760248460051b83010111610330576024019190565b91908203918211611d9457565b91908201809211611d9457565b1561300e57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152fd5b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6f800000000000000000000000000000008110156130c857600f0b90565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b9190600f0b9182156131f357613126919073ffffffffffffffffffffffffffffffffffffffff8092165f521660205260405f2090565b613132815c9283613b29565b80915d6131a357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d5b565b156131aa57565b60017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5c017f7d4b3164c6e45b97e7d87b7125a44c5828d005af88f9d751cfd78729c5d99a0b5d565b505050565b90919073ffffffffffffffffffffffffffffffffffffffff811690816132ea5750505f80808093855af11561322a5750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d011673ffffffffffffffffffffffffffffffffffffffff604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60205f60448194968260409573ffffffffffffffffffffffffffffffffffffffff988751998a947fa9059cbb00000000000000000000000000000000000000000000000000000000865216600485015260248401525af13d15601f3d116001855114161716928281528260208201520152156133635750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c919073ffffffffffffffffffffffffffffffffffffffff8316613482576131a19034935b61347c856130aa565b906130f0565b346134e7576131a1906134be7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955c6134b986613a92565b612fed565b935f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d613473565b7fb0ec849e000000000000000000000000000000000000000000000000000000005f5260045ffd5b73ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016300361354e57565b7f0d89438e000000000000000000000000000000000000000000000000000000005f5260045ffd5b5473ffffffffffffffffffffffffffffffffffffffff161561359457565b7f486aa307000000000000000000000000000000000000000000000000000000005f5260045ffd5b91926136376101209473ffffffffffffffffffffffffffffffffffffffff61364f999794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60c083015260e082015281610100820152019161306c565b90565b9073ffffffffffffffffffffffffffffffffffffffff60206131a1949361368185848351168660801d906130f0565b01511690600f0b906130f0565b62ffffff16620f424081116136a05750565b7f14002113000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b9061364f95936137486101609473ffffffffffffffffffffffffffffffffffffffff61377794168552602085019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08501526020820151900b60e0840152604081015161010084015260600151610120830152565b81610140820152019161306c565b9081600f0b9182036130c857565b926138419061381261364f99979473ffffffffffffffffffffffffffffffffffffffff6101a09895168752602087019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051600290810b60c08701526020820151900b60e0860152604081015161010086015260600151610120850152565b61014083015261016082015281610180820152019161306c565b939590919296945f9673ffffffffffffffffffffffffffffffffffffffff861633146139ac57885f6040870151135f1461393b5761040087166138a2575b50505050505050565b61392e9799985092613927969594926138ef9261391b956040519788967f9f063efc0000000000000000000000000000000000000000000000000000000060208901523360248901613793565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101835282612e2e565b6002821615159161459f565b80926145bf565b915f808080808080613899565b95949392919061010086166139535750505050505050565b61392e979950869850916138ef916139a09493613927986040519788967f6c2bbe7e0000000000000000000000000000000000000000000000000000000060208901523360248901613793565b6001821615159161459f565b505f96505050505050565b608081161580613a69575b613a3f57604081161580613a5d575b613a3f5761040081161580613a51575b613a3f5761010081161580613a45575b613a3f5773ffffffffffffffffffffffffffffffffffffffff8116613a1f575062ffffff1662800000141590565b613fff161590811591613a30575090565b62800000915062ffffff161490565b50505f90565b506001811615156139f1565b506002811615156139e1565b506004811615156139d1565b506008811615156139c2565b6280000062ffffff821614613a8d5761364f8161368e565b505f90565b73ffffffffffffffffffffffffffffffffffffffff1680613ab257504790565b6020602491604051928380927f70a082310000000000000000000000000000000000000000000000000000000082523060048301525afa9081156124c2575f91613afa575090565b90506020813d602011613b21575b81613b1560209383612e2e565b81010312610330575190565b3d9150613b08565b9190915f8382019384129112908015821691151617611d9457565b6020830151955f9586959194913373ffffffffffffffffffffffffffffffffffffffff851614613d2d5760808416613b7e575b5050505050565b613c66926138ef613c6092613c4c946040519586947f575e24b4000000000000000000000000000000000000000000000000000000006020870152336024870152613c16604487018c73ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8051151560e487015260208101516101048701526040015173ffffffffffffffffffffffffffffffffffffffff16610124860152565b61014061014485015261016484019161306c565b82613f25565b916060835103613d05576040015162ffffff166280000014613cf9575b600816613c94575b80808080613b77565b604001519250608083901d600f0b8015613c8b57613cb5905f861295613b29565b9315613cf1575f84135b613cc9575f613c8b565b7ffa0b71d6000000000000000000000000000000000000000000000000000000005f5260045ffd5b5f8412613cbf565b60608201519350613c83565b7f1e048e1d000000000000000000000000000000000000000000000000000000005f5260045ffd5b505f965086955050505050565b90600f0b90600f0b01907fffffffffffffffffffffffffffffffff8000000000000000000000000000000082126f7fffffffffffffffffffffffffffffff831317611d9457565b9196959394929473ffffffffffffffffffffffffffffffffffffffff83163314613f18578460801d94600f0b938860408516613e40575b50505050505f9481600f0b15801590613e34575b613dd8575b5050509190565b613e0f9395505f60208201511290511515145f14613e17576fffffffffffffffffffffffffffffffff169060801b175b80936145bf565b5f8080613dd1565b906fffffffffffffffffffffffffffffffff169060801b17613e08565b5082600f0b1515613dcc565b613efc613f08946138ef6118ed95613f0e999895613ee1613c16966040519788967fb47b2fb1000000000000000000000000000000000000000000000000000000006020890152336024890152604488019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8c61014485015261016061016485015261018484019161306c565b6004821615159161459f565b90613d3a565b5f80808088613db8565b5050505050909150905f90565b9190918251925f8060208301958682865af115613fc3575050604051917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f3d011683016040523d83523d9060208401915f833e6020845110918215613f8f575b5050613d0557565b5190517fffffffff000000000000000000000000000000000000000000000000000000009182169116141590505f80613f87565b5183517fffffffff00000000000000000000000000000000000000000000000000000000811691600481106140d7575b50507fffffffff000000000000000000000000000000000000000000000000000000007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01169173ffffffffffffffffffffffffffffffffffffffff604051947f90bfb865000000000000000000000000000000000000000000000000000000008652166004850152166024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fa9e35b2f0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffff000000000000000000000000000000000000000000000000000000009250829060040360031b1b16168280613ff3565b919060020b9060020b9081810761413a5705908160081d5f52602052600160ff60405f2092161b8154189055565b601c906044926040519163d4d8f3e683526020830152604082015201fd5b60020b908160ff1d82810118620d89e8811161449e5763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102700100000000000000000000000000000000189160028116614482575b60048116614466575b6008811661444a575b6010811661442e575b60208116614412575b604081166143f6575b608081166143da575b61010081166143be575b61020081166143a2575b6104008116614386575b610800811661436a575b611000811661434e575b6120008116614332575b6140008116614316575b61800081166142fa575b6201000081166142de575b6202000081166142c3575b6204000081166142a8575b620800001661428f575b5f12614268575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04614261565b6b048a170391f7dc42444e8fa290910260801c9061425a565b6d2216e584f5fa1ea926041bedfe9890920260801c91614250565b916e5d6af8dedb81196699c329225ee6040260801c91614245565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161423a565b916f31be135f97d08fd981231505542fcfa60260801c9161422f565b916f70d869a156d2a1b890bb3df62baf32f70260801c91614225565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161421b565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91614211565b916fe7159475a2c29b7443b29c7fa6e889d90260801c91614207565b916ff3392b0822b70005940c7a398e4b70f30260801c916141fd565b916ff987a7253ac413176f2b074cf7815e540260801c916141f3565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916141e9565b916ffe5dee046a99a2a811c461f1969c30530260801c916141df565b916fff2ea16466c96a3843ec78b326b528610260801c916141d6565b916fff973b41fa98c081472e6896dfb254c00260801c916141cd565b916fffcb9843d60f6159c9db58835c9266440260801c916141c4565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916141bb565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916141b2565b916ffff97272373d413259a46990580e213a0260801c916141a9565b827f8b86327a000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b905f83600f0b125f146144ff576144f5925f036fffffffffffffffffffffffffffffffff1691615a3d565b5f81126130c85790565b61451b926fffffffffffffffffffffffffffffffff16916159e2565b5f81126130c8575f0390565b905f83600f0b125f14614552576144f5925f036fffffffffffffffffffffffffffffffff1691615b34565b61451b926fffffffffffffffffffffffffffffffff1691615a7d565b906fffffffffffffffffffffffffffffffff90600f0b911601908160801c61459257565b6393dafdf15f526004601cfd5b906145a991613f25565b9015613a8d576040815103613d05576040015190565b6145e2906145d48360801d8260801d03613785565b92600f0b90600f0b03613785565b6fffffffffffffffffffffffffffffffff169060801b1790565b73fffd8963efd1fc6a506488495d951d516396168273ffffffffffffffffffffffffffffffffffffffff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffefffd895d830116116148e05777ffffffffffffffffffffffffffffffffffffffff000000008160201b168060ff61467983615bdb565b1691608083106148d457507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8182011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c800260cd1c6604000000000000169d60cc1c6608000000000000169c60cb1c6610000000000000169b60ca1c6620000000000000169a60c91c6640000000000000169960c81c6680000000000000169860c71c670100000000000000169760c61c670200000000000000169660c51c670400000000000000169560c41c670800000000000000169460c31c671000000000000000169360c21c672000000000000000169260c11c674000000000000000169160c01c67800000000000000016907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff800160401b1717171717171717171717171717693627a301d71055774c85027ffffffffffffffffffffffffffffffffffd709b7e5480fba5a50fed5e62ffc556810160801d60020b906fdb2df09e81959a81455e260799a0632f0160801d60020b918282145f146148915750905090565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff6148c584614158565b16116148cf575090565b905090565b905081607f031b6146a9565b73ffffffffffffffffffffffffffffffffffffffff907f61487524000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b811561492c570490565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b6040519290915f61496985612df6565b5f855260208501925f845260408601955f875280968654956040860151159586155f146156f557610fff8860b81c16945b8151925f948a73ffffffffffffffffffffffffffffffffffffffff16918288528b60a01c60020b90526fffffffffffffffffffffffffffffffff60038d0154169052608083015162400000811615155f146156e65762bfffff166149fd8161368e565b61ffff88166156cb575b8096620f424062ffffff8316101561569a575b8451156156845750508861562457606083019073ffffffffffffffffffffffffffffffffffffffff825116818110156155ed5750505173ffffffffffffffffffffffffffffffffffffffff166401000276a38111156155c257505b604051986101008a018a811067ffffffffffffffff821117611eb1576040525f8a525f60208b01525f60408b01525f60608b01525f60808b01525f60a08b01525f60c08b015288155f146155b45760018b0154949390945b60e08b01525b8015801561557a575b6154205788868d8c8e73ffffffffffffffffffffffffffffffffffffffff8351168252602083015160020b602089015160020b90815f8183071291050386155f14615275576fffffffffffffffffffffffffffffffff937ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2761860409460019484600560ff60609716938260020b60081d890b5f5201602052875f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8460ff031c9054169283151593845f146152635790614bb760ff92615bdb565b90031660020b900360020b0260020b5b905b15158684015260020b8060208401521315615238575b620d89e8602082015160020b121561522a575b73ffffffffffffffffffffffffffffffffffffffff614c17602083015160020b614158565b16918291015273ffffffffffffffffffffffffffffffffffffffff8551169673ffffffffffffffffffffffffffffffffffffffff60608c0151169283911516818310189118021892015116928d73ffffffffffffffffffffffffffffffffffffffff8316821015915f87125f1461507f5762ffffff8516620f424003614c9f81895f03615785565b94841561506e57614cb1888483615a7d565b955b868110614fb257509660a093929173ffffffffffffffffffffffffffffffffffffffff98978891620f424062ffffff8316145f14614f9e575050865b955b15614f905791614d0092615a3d565b925b60c0820152015260808d0152168c525f8351135f14614f605760a08a0151905f82126130c8570392614d3d60808b015160c08c015190612ffa565b5f81126130c8578103908113600116611d9457935b61ffff8716614f18575b6fffffffffffffffffffffffffffffffff60408d01511680614efe575b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608c01511681145f14614ec2575060408a0151614e10575b88614e03577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60208b015160020b0160020b5b60020b60208d01525b9392614ad3565b60208a015160020b614df3565b88614e96576fffffffffffffffffffffffffffffffff614e7d8d8d8d600460e08201519260206002820154935b015160020b60020b5f520160205260405f2091600183019081549003905560028201908154900390555460801d908c15614e88575b60400151831661456e565b1660408d0152614dc0565b5f91909103600f0b90614e72565b6fffffffffffffffffffffffffffffffff614e7d8d8d8d6004600183015492602060e084015193614e3d565b73ffffffffffffffffffffffffffffffffffffffff8b51168103614ee7575b50614dfc565b614ef0906145fc565b60020b60208d01525f614ee1565b60c08b015160801b0460e08b01510160e08b01525f614d79565b9662ffffff861661ffff881603614f435760c08a0151905b8160c08c01510360c08c01520196614d5c565b620f424060808b015161ffff89169060c08d015101020490614f30565b60808a015160c08b015101905f82126130c857019260a08a01515f81126130c857614f8a91613b29565b93614d52565b614f9992615b34565b614d00565b62ffffff614fad921689615c68565b614cef565b9650505092505082918415811517615061578e60a09173ffffffffffffffffffffffffffffffffffffffff96845f14614ffc57614ff0878284615d07565b80978a015f0395614cf1565b87871161503a576150356150306150286fffffffffffffffffffffffffffffffff84168a60601b614922565b8a8516612ffa565b615d9b565b614ff0565b61503561503061505c6fffffffffffffffffffffffffffffffff84168a61588a565b615028565b634f2461b85f526004601cfd5b6150798882856159e2565b95614cb3565b9193509190831561521957615095858284615a3d565b915b8287106150f7579073ffffffffffffffffffffffffffffffffffffffff9560a09280965b156150e857916150ca92615a7d565b925b6150e362ffffff8d16620f42408190039086615c68565b614d02565b6150f1926159e2565b926150cc565b50915050838315821517615061578d83156151ef575073ffffffffffffffffffffffffffffffffffffffff851161519c578460601b6fffffffffffffffffffffffffffffffff851680820615159104015b73ffffffffffffffffffffffffffffffffffffffff8316928184111561518f578f939573ffffffffffffffffffffffffffffffffffffffff60a093819803165b80966150bb565b634323a5555f526004601cfd5b6fffffffffffffffffffffffffffffffff84166151c7816c0100000000000000000000000088615943565b90801561492c576c010000000000000000000000008709156151485760010180615148575f80fd5b9180856152148873ffffffffffffffffffffffffffffffffffffffff9860a095615c91565b615188565b615224858383615b34565b91615097565b620d89e86020820152614bf2565b7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186020820152614bdf565b5060020b900360020b0260020b614bc7565b60019194939650600592955001938460020b60081d60010b5f520160205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160ff86161b0119905416908d8b831592831597885f146153c15750505050610330578f9160018f8f96907ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276186060928f989560409660ff896fffffffffffffffffffffffffffffffff9a5f03166101e07f804040554300526644320000502061067405302602000010750620017611707760fc7fb6db6db6ddddddddd34d34d349249249210842108c6318c639ce739cffffffff840260f81c161b60f71c167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f85851693831c63d76453e004161a17031660020b9060020b0160020b0260020b5b90614bc9565b90956fffffffffffffffffffffffffffffffff955060409450600193987ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618918960ff6060969b811681031660020b9060020b0160020b0260020b6153bb565b949891955099969298919598602088015160a01b76ffffff0000000000000000000000000000000000000000167fffffffffffffffffff000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8a51169216171782556fffffffffffffffffffffffffffffffff6003830154166fffffffffffffffffffffffffffffffff604089015116809103615535575b5082156155265760e060029101519101555b825190155f82121461551057506154ee6154f69293613785565b925103613785565b6fffffffffffffffffffffffffffffffff169060801b1793565b6154f69250906155209103613785565b91613785565b60e060019101519101556154d4565b6fffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffff000000000000000000000000000000006003840154161760038301555f6154c2565b5073ffffffffffffffffffffffffffffffffffffffff8c511673ffffffffffffffffffffffffffffffffffffffff60608501511614614adc565b60028b015494939094614acd565b7f9e4d7cc7000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f7c9c6e8f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606083019073ffffffffffffffffffffffffffffffffffffffff825116818111156155ed5750505173ffffffffffffffffffffffffffffffffffffffff1673fffd8963efd1fc6a506488495d951d5263988d268110156155c25750614a75565b9a509a50509950505050505050505f925f929190565b5f85511315614a1a577f96206246000000000000000000000000000000000000000000000000000000005f5260045ffd5b62ffffff610fff89169116620f424081830204910103614a07565b508960d01c62ffffff166149fd565b610fff8860c41c169461499a565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393847001000000000000000000000000000000001115610330571461577c57700100000000000000000000000000000000910990828211900360801b910360801c1790565b50505060801c90565b818102907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83820990828083109203918083039283620f424011156103305714615804577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156103305714615881576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c01000000000000000000000000840992828085109403938085039485841115610330571461593c576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8185099383808610950394808603958685111561033057146159da579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b6fffffffffffffffffffffffffffffffff6c010000000000000000000000009173ffffffffffffffffffffffffffffffffffffffff80600195169116038060ff1d90810118931692615a348185615810565b93091515160190565b6fffffffffffffffffffffffffffffffff9073ffffffffffffffffffffffffffffffffffffffff8061364f9594169116038060ff1d908101189116615810565b9073ffffffffffffffffffffffffffffffffffffffff811673ffffffffffffffffffffffffffffffffffffffff831611615b2e575b73ffffffffffffffffffffffffffffffffffffffff8216928315615b22577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615b16948185169403169160601b16615c68565b90808206151591040190565b62bfc9215f526004601cfd5b90615ab2565b73ffffffffffffffffffffffffffffffffffffffff821673ffffffffffffffffffffffffffffffffffffffff821611615bd5575b73ffffffffffffffffffffffffffffffffffffffff8116918215615b225761364f937bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff615bd0948185169403169160601b16615943565b614922565b90615b68565b8015610330577f07060605060205000602030205040001060502050303040105050304000000006f8421084210842108cc6318c6db6d54be826fffffffffffffffffffffffffffffffff1060071b83811c67ffffffffffffffff1060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c60ff1060031b1792831c1c601f161a1790565b929190615c76828286615943565b93821561492c5709615c8457565b9060010190811561033057565b91908115615d02577bffffffffffffffffffffffffffffffff00000000000000000000000073ffffffffffffffffffffffffffffffffffffffff9160601b169216918282029183838311918404141615615cf55761364f9261503092820391615c68565b63f5c787f15f526004601cfd5b505090565b90918015615d955773ffffffffffffffffffffffffffffffffffffffff7bffffffffffffffffffffffffffffffff000000000000000000000000819460601b16921680820281615d578483614922565b14615d7d575b5090615d6c615d719284614922565b612ffa565b80820615159104011690565b8301838110615d5d579150615d9192615c68565b1690565b50905090565b9073ffffffffffffffffffffffffffffffffffffffff82169182036130c85756fea164736f6c634300081a000a","sourceMap":"4791:12821:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6570:13;4791:12821;6570:13;;;4791:12821;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;1928:50:28;;4791:12821:33;;;;;;1594:10:28;;;:20;;:55;;;4791:12821:33;1590:237:28;;4791:12821:33;;;;;;;;;;;;;;;;;;1837:31:28;4791:12821:33;;;1837:31:28;:::i;:::-;4791:12821:33;;;;;;;;;;;;;;;;;;;;;1879:33:28;4791:12821:33;;;1879:33:28;:::i;:::-;4791:12821:33;;;;;1594:10:28;4791:12821:33;;;;;;;;;;;;;;;;;1928:50:28;;;;4791:12821:33;;;;;;;1590:237:28;4791:12821:33;;;1683:9:28;4791:12821:33;;;;;1594:10:28;;4791:12821:33;-1:-1:-1;4791:12821:33;;;;-1:-1:-1;4791:12821:33;;;;;;;;;;1734:28:28;1745:17;1734:28;;1730:86;;1590:237;;;;;1730:86;1800:16;;;:::i;:::-;4791:12821:33;;;1683:9:28;4791:12821:33;;;;;1594:10:28;;4791:12821:33;-1:-1:-1;4791:12821:33;;;;-1:-1:-1;4791:12821:33;;;;;;;;;;1730:86:28;;;;1594:55;4791:12821:33;;;;1619:10:28;4791:12821:33;;;;;1594:10:28;;4791:12821:33;-1:-1:-1;4791:12821:33;;;;;-1:-1:-1;4791:12821:33;;;1618:31:28;1594:55;;4791:12821:33;;;;;;;;;;;:::i;:::-;837:84:53;;5429:18:33;5425:59;;3435:52:28;;4791:12821:33;;;;;15066:17;15085:10;15066:17;;;:::i;:::-;15085:10;;;;:::i;:::-;4791:12821;15085:10;;651:14:29;;;:43;;;4791:12821:33;647:269:29;;4791:12821:33;;;;;;;;;;;;;;;;;;3388:31:28;4791:12821:33;;;3388:31:28;:::i;3435:52::-;;;;4791:12821:33;647:269:29;4791:12821:33;;;736:9:29;4791:12821:33;;;;;;15085:10;4791:12821;;;;;;;;;;;;;;;;;781:36:29;800:17;781:36;;777:129;;647:269;;;;;777:129;867:24;;;:::i;:::-;4791:12821:33;;;736:9:29;4791:12821:33;;;;;;15085:10;4791:12821;;;;;;;;;;;;;;;;;777:129:29;;;;651:43;4791:12821:33;;;;670:10:29;4791:12821:33;;;;;;15085:10;4791:12821;;;;;;;;;;;669:25:29;651:43;;5425:59:33;5449:22;4791:12821;814:96:46;4791:12821:33;;814:96:46;4791:12821:33;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:53;;;;;5429:18:33;5425:59;;1169:76:32;;:::i;:::-;4791:12821:33;9594:27;9590:77;;4791:12821;357:173:108;;4791:12821:33;;;;17402:6;4791:12821;;;;;9757:25;;;;:::i;:::-;9966:9;;;4791:12821;;;;;;;;;9966:43;;;;:::i;:::-;10285:15;;;;4791:12821;10285:15;;4791:12821;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10234:302;;4791:12821;;10234:302;;4791:12821;;10234:302;;4791:12821;;;9966:9;10234:302;;4791:12821;;;;;10554:49;;;4791:12821;11053:10;10554:49;11470:17;10710:70;10554:49;4791:12821;10554:49;;;4791:12821;5241:25;;4791:12821;10554:49;11470:17;:::i;:::-;11546:20;;;;;;11542:78;;10554:49;4791:12821;;;;;;11884:16;;4791:12821;;11884:16;;4791:12821;;11914:11;;4791:12821;;;;;;2052:83:105;;9966:9:33;2052:83:105;2241:89;4791:12821:33;;;2241:89:105;;;4791:12821:33;;;;;;;;;;;;9966:9;4791:12821;;;;;;;5241:25;11735:221;4791:12821;11769:10;11735:221;;4791:12821;;;;;10710:70;:::i;:::-;1676:48:105;;;;10892:109:33;;10554:49;11769:10;;;;11053;;:::i;:::-;4791:12821;;;;;;10892:109;4791:12821;10982:18;4791:12821;;;10982:18;;;:::i;:::-;10892:109;;;;11542:78;4791:12821;;;;;;;;;;;;;258:35:47;4791:12821:33;;11542:78;;;;10554:49;4791:12821;10590:13;;;5241:25;4791:12821;10554:49;11470:17;:::i;9590:77::-;9623:31;4791:12821;814:96:46;4791:12821:33;;814:96:46;4791:12821:33;;;;;;;;;;;;;;:::i;:::-;;;;;756:44:24;4791:12821:33;;;764:10:24;:19;756:44;:::i;:::-;4791:12821:33;;;;;;;;764:10:24;1424:42;4791:12821:33;1424:42:24;;4791:12821:33;;;;;;;;;;;;;;422:99:31;4791:12821:33;422:99:31;4791:12821:33;;422:99:31;4791:12821:33;;;;;;;;;;;;;931:36:34;4791:12821:33;;;;;;;;;;;;;;;:::i;:::-;;1664:936:30;;4791:12821:33;1664:936:30;;;;;;;;;;;;;;;;;;4791:12821:33;1664:936:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;4791:12821:33;1664:936:30;;;;;;4791:12821:33;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;697:88:28;4791:12821:33;;;;;;697:88:28;4791:12821:33;-1:-1:-1;4791:12821:33;;;;;;-1:-1:-1;4791:12821:33;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;4998:58:107;12906:24:33;;766:73:45;;4791:12821:33;766:73:45;;4791:12821:33;12902:341;13135:24;;;:::i;:::-;937:173:45;;;;;4791:12821:33;;;;;;;;:::i;:::-;;658:936:31;;4791:12821:33;658:936:31;;;;;;;;;;;;;;;;;;4791:12821:33;658:936:31;;;;;;;;;;;;;;;;;;;;;;;;;;;4791:12821:33;;;;;;;;;;;;;;:::i;:::-;;;;819:71:34;4791:12821:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;1917:21:34;4791:12821:33;;1903:10:34;:35;1899:76;;4791:12821:33;;;4998:58:107;;1989:25:34;:77;;;4791:12821:33;1985:257:34;;4791:12821:33;;2421:15:34;;2271:11;;;4791:12821:33;;;;;;;;;;;2270:54:34;;;;4791:12821:33;;;;;;;;2334:48:34;4791:12821:33;;;2334:48:34;:::i;:::-;4791:12821:33;;2421:15:34;:::i;2270:54::-;;;;;;1985:257;2184:34;4791:12821:33;814:96:46;4791:12821:33;;814:96:46;1989:77:34;629:81:45;;4791:12821:33;629:81:45;;4791:12821:33;448:51:107;1989:77:34;;1899:76;1940:22;4791:12821:33;814:96:46;4791:12821:33;;814:96:46;4791:12821:33;;;;;;;;;;;;;:::i;:::-;837:84:53;;5429:18:33;5425:59;;14072:10;547:238:44;;;;;;;;;;;;956:73;14191:17:33;4791:12821;;14191:17;:::i;:::-;4791:12821;;;;14222:22;14218:77;;14429:10;14072;;4791:12821;;;;;14429:10;;:::i;:::-;4791:12821;14218:77;14246:36;4791:12821;814:96:46;4791:12821:33;;814:96:46;4791:12821:33;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;1393:21:34;4791:12821:33;;1379:10:34;:35;1375:76;;1088:252:58;;;;;;;;;;;1465:36:34;1461:97;;4791:12821:33;;1658:38:34;357:173:108;;4791:12821:33;;;;17402:6;4791:12821;;;;;5072:25:56;;;:::i;:::-;4791:12821:33;;2855:254:111;;;;;;;;;4791:12821:33;;;;;;;5241:25;;1658:38:34;4791:12821:33;1461:97:34;4791:12821:33;1084:176:46;1503:28:34;4791:12821:33;1084:176:46;4791:12821:33;;1084:176:46;;4791:12821:33;1084:176:46;4791:12821:33;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;1169:76:32;;:::i;:::-;6341:15:33;;;4791:12821;;;;;1676:15:64;6341:34:33;;6337:96;;4791:12821;;;;;;6447:34;;6443:96;;5241:25;4791:12821;5241:25;;4791:12821;6570:13;;;5241:25;4791:12821;5241:25;;4791:12821;887:51:107;;;;6549:202:33;;6765:9;;;;;4791:12821;;;;;6794:7;4791:12821;6794:7;;4791:12821;6765:37;4791:12821;;;;6765:37;;:::i;:::-;6764:38;6760:109;;4791:12821;6895:25;4791:12821;;;;6895:25;:::i;:::-;4791:12821;;;;;;8814:10:50;;;:27;8810:59;;4791:12821:33;357:173:108;;4791:12821:33;357:173:108;;4791:12821:33;;;;7027:6;6570:13;4791:12821;;;;;;;;1502:93:111;4665:80:56;;6570:13:33;4763:41:56;7393:101:33;4763:41:56;3217:178:111;4763:41:56;4791:12821:33;4763:41:56;;:::i;:::-;3217:178:111;;;;2578:157;;;;;;3217:178;;4791:12821:33;;;;5241:25;;;4791:12821;5241:25;;4791:12821;;;;;;;;;;;;;;;5241:25;;;;;;4791:12821;;5241:25;;;;6341:15;5241:25;;4791:12821;;;5241:25;;6765:9;5241:25;;4791:12821;7393:101;4791:12821;;;;8814:10:50;;;:27;8810:59;;4791:12821:33;;;;;;;;;8810:59:50;4791:12821:33;16467:29:50;9491:164;;8810:59;;;;9491:164;9552:92;4791:12821:33;1460:7:50;4791:12821:33;;9566:77:50;;;;;;8814:10;9566:77;;;4791:12821:33;1460:7:50;;;;4791:12821:33;1907:6:50;;;;;;4791:12821:33;5241:25;;1907:6:50;;;;;4791:12821:33;1907:6:50;;;5241:25:33;4791:12821;1907:6:50;;;;4791:12821:33;1907:6:50;;;5241:25:33;1907:6:50;;;;4791:12821:33;;1907:6:50;;;4791:12821:33;1907:6:50;;4791:12821:33;1907:6:50;;5241:25:33;1907:6:50;1460:7;;;;4791:12821:33;1460:7:50;;;;4791:12821:33;1460:7:50;9566:77;;;;;;:::i;:::-;9552:92;:::i;:::-;;9491:164;;;;;4665:80:56;4701:31;4791:12821:33;814:96:46;4791:12821:33;;814:96:46;8810:59:50;4791:12821:33;16467:29:50;9085:160;;8810:59;;;;9085:160;9147:87;4791:12821:33;;;9161:72:50;;6570:13:33;9161:72:50;;;8814:10;9161:72;;;4791:12821:33;1397:7:50;;;;;4791:12821:33;1907:6:50;;;;;;4791:12821:33;5241:25;;1907:6:50;;;;;4791:12821:33;1907:6:50;;;5241:25:33;4791:12821;1907:6:50;;;;4791:12821:33;1907:6:50;;;5241:25:33;1907:6:50;;;;4791:12821:33;;1907:6:50;;;4791:12821:33;1907:6:50;;4791:12821:33;1907:6:50;;5241:25:33;1907:6:50;1397:7;;;;;4791:12821:33;1397:7:50;9161:72;;;;;;:::i;9147:87::-;;9085:160;;;6760:109:33;6804:34;4791:12821;1084:176:46;4791:12821:33;1084:176:46;;4791:12821:33;1084:176:46;6549:202:33;3008:319:46;;;4791:12821:33;3008:319:46;;6599:36:33;3008:319:46;;4791:12821:33;3008:319:46;;;;;;;;6443:96:33;6483:28;4791:12821;1431:143:46;4791:12821:33;1431:143:46;;4791:12821:33;1431:143:46;6337:96:33;6377:28;4791:12821;1431:143:46;4791:12821:33;1431:143:46;;4791:12821:33;1431:143:46;4791:12821:33;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:53;;;;5429:18:33;5425:59;;1169:76:32;;:::i;:::-;4791:12821:33;357:173:108;;4791:12821:33;;;;17402:6;4791:12821;;;;;;;7954:25;;;;:::i;:::-;4791:12821;7996:9;;4791:12821;;;;8814:10:50;;;:27;8810:59;;4791:12821:33;;;;;;;;;;;;;;;8378:32;4791:12821;;;;8378:32;:::i;:::-;8445:15;4791:12821;8445:15;;4791:12821;;;;;;;;;;;;;;;;;;;;;;;;;8814:10:50;4791:12821:33;;8176:342;4791:12821;8176:342;;4791:12821;8176:342;4791:12821;8176:342;;4791:12821;;;;;8176:342;;4791:12821;;8176:342;;4791:12821;;8176:342;;4791:12821;;4263:22:56;;;;;4259:85;;1032:7:64;4358:29:56;;4354:86;;1317:6:64;4454:29:56;;4450:86;;4791:12821:33;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;6884:1188:56;;4791:12821:33;;23528:10:56;;;:21;4791:12821:33;;;;;;;;;;;23584:21:56;4791:12821:33;;;;;;;;;;23635:10:56;;4791:12821:33;;1682:98:111;4791:12821:33;1682:98:111;23691:23:56;;;23687:800;23691:23;;;23757:27;4791:12821:33;23757:27:56;4791:12821:33;23757:27:56;;4791:12821:33;;23787:27:56;;4791:12821:33;;;23855:27:56;;4791:12821:33;23885:27:56;;4791:12821:33;;;23687:800:56;;4791:12821:33;;5241:25;;4791:12821;8176:342;;4791:12821;2447:609:57;4791:12821:33;2447:609:57;;;;;;;17402:6:33;2447:609:57;;;;;;;;;;4791:12821:33;2447:609:57;;;;;;;4791:12821:33;2447:609:57;;;;4791:12821:33;2447:609:57;;;;4791:12821:33;;17402:6;8286:14:56;;;4791:12821:33;;;;;;;;;;;;;;6888:19:56;3970:270:57;4791:12821:33;;;4069:14:57;;4065:67;;8645:20:56;8623;4791:12821:33;3970:270:57;;8974:79:33;3970:270:57;9328:10:33;3970:270:57;;4791:12821:33;4434:29:57;;4791:12821:33;4537:100:57;4791:12821:33;4395:100:57;4791:12821:33;;;;;4395:100:57;:::i;:::-;4576:29;;4791:12821:33;;;;;4537:100:57;:::i;:::-;4791:12821:33;;;8623:20:56;:::i;:::-;8645;;:::i;:::-;4791:12821:33;553:115:105;;4791:12821:33;553:115:105;;4791:12821:33;;;;;;;8759:18:56;8755:255;;3970:270:57;4791:12821:33;;;;9030:1774:56;;3970:270:57;785:220:105;;;1049:15;1032;785:220;4791:12821:33;785:220:105;;4791:12821:33;785:220:105;;1032:15;:::i;:::-;785:220;;4791:12821:33;785:220:105;;4791:12821:33;785:220:105;;1049:15;:::i;:::-;4791:12821:33;553:115:105;;4791:12821:33;553:115:105;;4791:12821:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8801:103;4791:12821;8814:10:50;8801:103:33;;7996:9;4791:12821;;7996:9;;4791:12821;;8974:79;:::i;:::-;1676:48:105;;;;9165:109:33;;3970:270:57;8814:10:50;;;9328::33;;:::i;:::-;4791:12821;;;;;;;;;;9165:109;9255:18;7996:9;4791:12821;;7996:9;;4791:12821;;9255:18;;;:::i;:::-;9165:109;;;9030:1774:56;9084:10;;4791:12821:33;9084:10:56;;-1:-1:-1;9084:10:56;;4791:12821:33;1502:93:111;;;4791:12821:33;1682:98:111;4791:12821:33;1682:98:111;9201:16:56;;;;;;9568:38;;;9513:182;9568:38;9608;9568;9513:171;9568:38;;:::i;:::-;4791:12821:33;;;9608:38:56;;:::i;:::-;9513:171;;:::i;:::-;:182;:::i;:::-;4791:12821:33;553:115:105;9197:1597:56;9030:1774;;;;;9197:1597;9761:16;;;;;9757:1037;4791:12821:33;;;9998:135:56;4791:12821:33;9841:135:56;:99;9998;4791:12821:33;9885:38:56;4791:12821:33;;;9885:38:56;;:::i;:::-;9841:99;;:::i;:135::-;4791:12821:33;10028:38:56;4791:12821:33;;;10028:38:56;;:::i;:::-;9998:99;:::i;:135::-;4791:12821:33;553:115:105;;4791:12821:33;553:115:105;;10210:14:56;4791:12821:33;10187:54:56;2447:609:57;10210:14:56;;;4791:12821:33;;;;;;;10187:54:56;:::i;:::-;4791:12821:33;;;;;;;;9197:1597:56;;9757:1037;10634:38;10579:171;10634:38;;;10674;10634;10579:182;10634:38;;:::i;10674:::-;10579:171;;:::i;:182::-;4791:12821:33;553:115:105;9197:1597:56;;8755:255;4791:12821:33;;;;8797:91:56;;8755:255;4791:12821:33;;8905:91:56;;8755:255;;;;8905:91;8967:9;;;;29012:10;28935:100;4791:12821:33;;-1:-1:-1;4791:12821:33;29012:10:56;4791:12821:33;;29005:23:56;4791:12821:33;;;;;;;;;;;;;;28935:100:56;8967:9;8905:91;;8797;8859:9;;;;29012:10;28935:100;4791:12821:33;;-1:-1:-1;4791:12821:33;29012:10:56;4791:12821:33;;29005:23:56;4791:12821:33;;;;;;;;;;;;;;28935:100:56;8859:9;8797:91;;4065:67:57;4085:34;4791:12821:33;814:96:46;4791:12821:33;;814:96:46;3970:270:57;8645:20:56;8623;4791:12821:33;;;8974:79;4791:12821;9328:10;4791:12821;;4180:49:57;4791:12821:33;;;4180:49:57;;:::i;:::-;4791:12821:33;;;;;;;;3970:270:57;;23687:800:56;23937:24;;;;-1:-1:-1;4791:12821:33;;;24004:27:56;4791:12821:33;24004:27:56;;4791:12821:33;;24034:27:56;;4791:12821:33;;;24102:27:56;;4791:12821:33;24132:27:56;;4791:12821:33;;;23933:554:56;23687:800;;23933:554;24241:25;4791:12821:33;;24241:25:56;;;4791:12821:33;;24269:27:56;;4791:12821:33;;;;24299:27:56;;4791:12821:33;;;24387:25:56;;;;;;4791:12821:33;24415:27:56;;4791:12821:33;;;24445:27:56;;4791:12821:33;;;23933:554:56;23687:800;;6884:1188;4791:12821:33;25443:10:56;;;4791:12821:33;;;;;;;;;;;;;26390:35:56;4791:12821:33;;;25608:60:56;4791:12821:33;;;;;;25608:60:56;;:::i;:::-;4791:12821:33;25720:25:56;;25690:24;;;;25689:57;;25757:357;;;6884:1188;26344:81;4791:12821:33;;;;;;26390:35:56;:::i;:::-;4791:12821:33;26435:730:56;;;;;4791:12821:33;;;;;;;;;;;;;;;;;;;;;;25608:60:56;4791:12821:33;;;25608:60:56;;:::i;:::-;25720:25;;4791:12821:33;;;;;25690:24:56;25689:57;;25757:357;;;6884:1188;4791:12821:33;;;;;;;;;;;;;;;;;;;26344:81:56;4791:12821:33;26344:81:56;26435:730;4791:12821:33;26435:730:56;4791:12821:33;;;26435:730:56;;;4791:12821:33;;;;;;;;;;;;;7279:19:56;;7275:508;;6884:1188;4791:12821:33;;7801:120:56;;6884:1188;4791:12821:33;;;;7938:120:56;6884:1188;7938:120;8020:18;4791:12821:33;8176:342;;4791:12821;;;7984:15:56;;;;;8020:18;:::i;:::-;6884:1188;;7801:120;7883:18;4791:12821:33;8176:342;;4791:12821;;;7847:15:56;;;;;7883:18;:::i;:::-;7801:120;;7275:508;4791:12821:33;8176:342;;4791:12821;;;;;;;;;;;28155:357:56;4791:12821:33;28155:357:56;1032:7:64;28155:357:56;;;1032:7:64;28155:357:56;;;1317:6:64;28155:357:56;;;;;4791:12821:33;7430:52:56;;;7426:159;;4791:12821:33;;;;;;7610:52:56;7606:159;7275:508;7606:159;1431:143:46;7690:30:56;4791:12821:33;1431:143:46;4791:12821:33;1431:143:46;;4791:12821:33;1431:143:46;7426:159:56;1431:143:46;7510:30:56;4791:12821:33;1431:143:46;4791:12821:33;1431:143:46;;4791:12821:33;1431:143:46;4791:12821:33;;;;;;;;;;25757:357:56;25926:10;;4791:12821:33;;1682:98:111;4791:12821:33;1682:98:111;25918:25:56;;25757:357;25914:190;4791:12821:33;25992:25:56;;;4791:12821:33;;25963:26:56;;4791:12821:33;;26064:25:56;;;4791:12821:33;;26035:26:56;;4791:12821:33;25757:357:56;;;25926:10;;4791:12821:33;;1682:98:111;4791:12821:33;1682:98:111;-1:-1:-1;25918:25:56;25914:190;;25757:357;;;;25914:190;4791:12821:33;25992:25:56;;;4791:12821:33;;25963:26:56;;4791:12821:33;;26064:25:56;;;4791:12821:33;;26035:26:56;;4791:12821:33;25914:190:56;;4450:86;1431:143:46;4485:29:56;4791:12821:33;1431:143:46;4791:12821:33;1431:143:46;;4791:12821:33;1431:143:46;4354:86:56;1431:143:46;4389:29:56;4791:12821:33;1431:143:46;4791:12821:33;1431:143:46;;4791:12821:33;1431:143:46;4259:85:56;2092:251:46;;;4791:12821:33;2092:251:46;;4287:24:56;2092:251:46;;4791:12821:33;2092:251:46;;;;;;;;4791:12821:33;;;;;;;;;;8810:59:50;4791:12821:33;;;;;9963:25:50;;;:74;;;8810:59;9959:409;;;-1:-1:-1;;4791:12821:33;;10067:78:50;4791:12821:33;10067:78:50;;;10053:93;;10067:78;4791:12821:33;10067:78:50;8814:10;;;;;10067:78;;;;:::i;:::-;;;;;;;;;:::i;10053:93::-;;9959:409;8810:59;;;;9959:409;10167:26;:78;;;;9959:409;10163:205;;;9959:409;;;;10163:205;4791:12821:33;;10275:81:50;4791:12821:33;10275:81:50;;;10261:96;;10275:81;4791:12821:33;10275:81:50;8814:10;;;;;10275:81;;;;:::i;10261:96::-;;10163:205;;;10167:78;4791:12821:33;10197:48:50;;16467:29;:34;;10167:78;;;9963:74;9992:45;4791:12821:33;16467:29:50;;:34;;9963:74;;4791:12821:33;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;880:108:28;4791:12821:33;;;;;;880:108:28;4791:12821:33;-1:-1:-1;4791:12821:33;;;;-1:-1:-1;4791:12821:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2355:10:28;;4791:12821:33;;2344:10:28;4791:12821:33;;;;;;;;-1:-1:-1;4791:12821:33;;;;-1:-1:-1;4791:12821:33;;;;;;;;;;;;;;;;;2355:10:28;2403:43;4791:12821:33;2355:10:28;2403:43;;4791:12821:33;;;2464:4:28;4791:12821:33;;;;;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;15288:7;552:8:51;4791:12821:33;;15288:7;;4791:12821;;1379:24:51;15287:23:33;;:59;;;4791:12821;15283:142;;4791:12821;15434:24;;;;:::i;:::-;357:173:108;4791:12821:33;;15502:6;4791:12821;;;;;5306:25:56;;;;:::i;:::-;4791:12821:33;;3217:178:111;;;;;;;;;;4791:12821:33;;;15283:142;15362:39;4791:12821;814:96:46;4791:12821:33;;814:96:46;15287:59:33;15336:9;4791:12821;15336:9;;;4791:12821;;15314:10;:32;;15287:59;;4791:12821;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:53;;5705:60:33;;4791:12821;527:101:53;4791:12821:33;527:101:53;;837:84;527:101;4791:12821:33;;5916:48;;;;;4791:12821;5916:48;;4791:12821;;5916:48;;4791:12821;;;;;;:::i;:::-;5916:48;5932:10;;;5916:48;;;;;;;4791:12821;5916:48;;;4791:12821;622:89:54;;;5975:75:33;;4791:12821;;675:80:53;;837:84;675:80;4791:12821:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:75;6010:27;4791:12821;814:96:46;4791:12821:33;;814:96:46;5916:48:33;;;;;4791:12821;5916:48;;;;;;:::i;:::-;;;4791:12821;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;5916:48;;;;4791:12821;;;;;;;;;5705:60;5728:24;4791:12821;814:96:46;4791:12821:33;;814:96:46;4791:12821:33;;;;;;;;:::i;:::-;2125:10:28;;;;;4791:12821:33;;2115:9:28;4791:12821:33;;;;;;;;-1:-1:-1;4791:12821:33;;;;-1:-1:-1;4791:12821:33;;;;;;;;;;;;;;;;;2125:10:28;2174:41;4791:12821:33;2125:10:28;2174:41;;4791:12821:33;;;2233:4:28;4791:12821:33;;;;;;;;;;;;;:::i;:::-;837:84:53;;5429:18:33;5425:59;;13887:18;4791:12821;13887:18;;:::i;4791:12821::-;;;;;;;;;;;;;;;;656:871:30;;4791:12821:33;656:871:30;4791:12821:33;656:871:30;;;4791:12821:33;656:871:30;;;;;;;;;;4791:12821:33;;;656:871:30;;;;;;;;;;;;;;;;;;;;4791:12821:33;;656:871:30;;;4791:12821:33;;;;;;;;;;;;;;:::i;:::-;756:44:24;4791:12821:33;;;;764:10:24;:19;756:44;:::i;:::-;4791:12821:33;;;1153:34:34;4791:12821:33;;;1153:34:34;4791:12821:33;1202:40:34;4791:12821:33;1202:40:34;;4791:12821:33;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;837:84:53;;;;;5429:18:33;5425:59;;1169:76:32;;:::i;:::-;4791:12821:33;357:173:108;;4791:12821:33;;;;17402:6;4791:12821;;;;;12324:25;;;;:::i;:::-;12362:9;;;4791:12821;;;;;8814:10:50;;;:27;8810:59;;4791:12821:33;22076:15:56;;4791:12821:33;22076:15:56;;;4791:12821:33;;22105:14:56;;;22101:66;;4791:12821:33;22298:18:56;;;;:::i;:::-;4791:12821:33;;22321:18:56;;;:::i;:::-;4791:12821:33;;;553:115:105;;12362:9:33;553:115:105;;22503:11:56;;22499:143;;4791:12821:33;22659:11:56;22655:143;;4791:12821:33;8814:10:50;;12513::33;8814::50;12513::33;;;:::i;:::-;4791:12821;;;;;;;;;;;12641:44;4791:12821;8814:10:50;12641:44:33;;4791:12821;;;;;8814:10:50;;;:27;8810:59;;4791:12821:33;;;;;;;;;8810:59:50;4791:12821:33;16467:29:50;16195:164;;8810:59;;;;16195:164;16252:96;4791:12821:33;16266:81:50;4791:12821:33;16266:81:50;4791:12821:33;;;16266:81:50;;;;;;;;8814:10;16266:81;;;;:::i;16252:96::-;;16195:164;;;;;;;;22655:143:56;22690:26;;1070:86:66;;12362:9:33;1070:86:66;;4791:12821:33;;258:35:47;4791:12821:33;;22655:143:56;;;;22499;4791:12821:33;22534:26:56;;1070:86:66;;12362:9:33;1070:86:66;;4791:12821:33;;258:35:47;4791:12821:33;;22499:143:56;;22101:66;22121:33;4791:12821:33;814:96:46;4791:12821:33;;814:96:46;8810:59:50;4791:12821:33;16467:29:50;15766:166;;8810:59;;;;15766:166;4791:12821:33;;15838:82:50;4791:12821:33;15838:82:50;;;15824:97;;15838:82;4791:12821:33;15838:82:50;8814:10;;;;;;15838:82;;;;:::i;15824:97::-;;15766:166;;;4791:12821:33;;;;;;;;;;;;;411:99:30;4791:12821:33;411:99:30;4791:12821:33;;411:99:30;4791:12821:33;;;;;;;:::i;:::-;837:84:53;;;5429:18:33;5425:59;;3235:54:28;;4791:12821:33;;;;;14759:17;14779:10;14759:17;;;:::i;:::-;4791:12821;;;;14779:10;;;;:::i;:::-;4791:12821;;;;;;;;;;;;;;;;;;;3186:33:28;4791:12821:33;;;3186:33:28;:::i;4791:12821:33:-;;;;;;;;837:84:53;;5429:18:33;5425:59;;4791:12821;13715:19;13723:10;13715:19;:::i;4791:12821::-;;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;837:84:53;;;5429:18:33;5425:59;;13565:6;13498:17;13518:10;13498:17;;;:::i;:::-;4791:12821;;;;13518:10;;;;:::i;:::-;13565:6;:::i;4791:12821::-;;;;;;;;:::i;:::-;1292:10:28;;;;;4791:12821:33;;;;;;;;;;;;;;;;1282:35:28;4791:12821:33;;;1282:35:28;:::i;:::-;4791:12821:33;;;;;;;;;;;;;;;;;;;;;1328:33:28;4791:12821:33;;;1328:33:28;:::i;:::-;4791:12821:33;;;;;1292:10:28;4791:12821:33;;;;;;;;;;1377:54:28;;4791:12821:33;;;;1377:54:28;4791:12821:33;;;;;;;;;;;;;;;;;;;;;;2762:25:28;4791:12821:33;;2762:25:28;;:100;;;;;4791:12821:33;;;;;;;;;;2762:100:28;4791:12821:33;2837:25:28;;;2762:100;;;4791:12821:33;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4791:12821:33;;;;;;;;;;;:::o;2098:168:59:-;2177:8;2172:13;;;2168:57;;4791:12821:33;;2098:168:59;:::o;2168:57::-;2187:25;814:96:46;;;;;16552:356:33;;;4791:12821;;16647:10;;;16643:23;;1367:30:44;;439:352;547:238;439:352;;547:238;;;;;;;;;439:352;;1367:30;1500:16;1408:76;;1500:16;;;:::i;:::-;1526:71;;;16758:9:33;;1271:180:54;;;;;;;16754:148:33;16552:356::o;16754:148::-;16833:13;16829:73;;16552:356::o;16829:73::-;763:180:54;;;;;;16552:356:33:o;16643:23::-;16659:7;;;:::o;1472:2873:107:-;;;;4791:12821:33;;;;4998:58:107;1769:24;;1809:163;;-1:-1:-1;1809:163:107;;;;;;;2085:8;2081:127;;1765:2574;1472:2873::o;2081:127::-;3741:1424:46;;;;;4791:12821:33;3741:1424:46;;;3710:21;3741:1424;;;;;;;-1:-1:-1;3741:1424:46;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3741:1424:46;;;;2163:29:107;3741:1424:46;;;;;;;;;;;;;;;1765:2574:107;2238:1774;-1:-1:-1;2238:1774:107;;;;;;;4791:12821:33;2238:1774:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:8;4120:209;;1765:2574;1472:2873::o;4120:209::-;3741:1424:46;2238:1774:107;3741:1424:46;;;2238:1774:107;3741:1424:46;;3710:21;3741:1424;;2238:1774:107;3741:1424:46;;;2238:1774:107;;3741:1424:46;;;;2238:1774:107;3741:1424:46;;;;;;;;;;;;;;;;-1:-1:-1;3741:1424:46;;;;4268:28:107;3741:1424:46;;;;2238:1774:107;3741:1424:46;;;;;;;;;;15649:825:33;629:81:45;;;15649:825:33;4791:12821;;;15916:24;;16457:9;15963;;15912:494;;16440:15;;;:::i;:::-;16457:9;;:::i;15912:494::-;16007:9;16003:59;;16457:9;1199:81:45;16321:28:33;1199:81:45;;16276:24:33;;;:::i;:::-;16321:28;:::i;:::-;766:73:45;4791:12821:33;629:81:45;766:73;15912:494:33;;16003:59;16022:27;4791:12821;814:96:46;;4791:12821:33;814:96:46;963:137:32;4791:12821:33;1039:8:32;4791:12821:33;1030:4:32;1022:25;1018:75;;963:137::o;1018:75::-;1049:31;814:96:46;;;;;28591:157:56;4791:12821:33;1502:93:111;;28669:30:56;28665:76;;28591:157::o;28665:76::-;28701:27;-1:-1:-1;814:96:46;;-1:-1:-1;814:96:46;1907:6:50;;;;;;4791:12821:33;1907:6:50;;;;4791:12821:33;;;1907:6:50;;;;4791:12821:33;1907:6:50;;;;;;4791:12821:33;5241:25;;1907:6:50;;;;;4791:12821:33;1907:6:50;;;5241:25:33;4791:12821;1907:6:50;;;;4791:12821:33;1907:6:50;;;5241:25:33;1907:6:50;;;;4791:12821:33;;1907:6:50;;;4791:12821:33;1907:6:50;;4791:12821:33;1907:6:50;;5241:25:33;1907:6:50;;;;;4791:12821:33;1907:6:50;;;4791:12821:33;1907:6:50;;;;;;;;:::i;:::-;;:::o;16986:232:33:-;;4791:12821;17172:13;17204:6;16986:232;;17141:6;5241:25;;;;4791:12821;2052:83:105;;;17141:6:33;;:::i;:::-;17172:13;5241:25;4791:12821;2241:89:105;;;17204:6:33;;:::i;1833:122:51:-;4791:12821:33;;1111:7:51;1667:18;;1888:60;;1833:122;:::o;1888:60::-;1909:22;-1:-1:-1;1084:176:46;;;;-1:-1:-1;1084:176:46;1665:6:50;;;;;;;;4791:12821:33;1665:6:50;;4791:12821:33;;;1665:6:50;;;;4791:12821:33;1907:6:50;;;;;;4791:12821:33;5241:25;;1907:6:50;;;;;4791:12821:33;1907:6:50;;;5241:25:33;4791:12821;1907:6:50;;;;4791:12821:33;1907:6:50;;;5241:25:33;1907:6:50;;;;4791:12821:33;;1907:6:50;;;4791:12821:33;1907:6:50;;4791:12821:33;1907:6:50;;5241:25:33;1907:6:50;1665;;;4791:12821:33;;;;1665:6:50;;;4791:12821:33;1665:6:50;;;;4791:12821:33;;1665:6:50;;;4791:12821:33;1665:6:50;;;;;;;4791:12821:33;1665:6:50;;;;;;4791:12821:33;1665:6:50;;;;;;;;;;:::i;1460:151:59:-;;4791:12821:33;;;1558:6:59;;;1554:50;;1460:151::o;1733:6:50:-;;;;;;;;;4791:12821:33;1733:6:50;;;4791:12821:33;;;1733:6:50;;;;4791:12821:33;1907:6:50;;;;;;4791:12821:33;5241:25;;1907:6:50;;;;;4791:12821:33;1907:6:50;;;5241:25:33;4791:12821;1907:6:50;;;;4791:12821:33;1907:6:50;;;5241:25:33;1907:6:50;;;;4791:12821:33;;1907:6:50;;;4791:12821:33;1907:6:50;;4791:12821:33;1907:6:50;;5241:25:33;1907:6:50;1733;1665;;4791:12821:33;;;;1733:6:50;;;4791:12821:33;1665:6:50;;;;4791:12821:33;;1665:6:50;;;4791:12821:33;1665:6:50;;;;;;;4791:12821:33;1665:6:50;;;;;;4791:12821:33;1665:6:50;1733;;;;4791:12821:33;1733:6:50;;;4791:12821:33;1733:6:50;;;;;;;;:::i;10471:1558::-;;;;;;;;4791:12821:33;;;;;10778:10:50;:27;10774:79;;10864:19;4791:12821:33;10897:21:50;;;4791:12821:33;10897:25:50;10893:1130;4791:12821:33;;;;16467:29:50;;10938:518;;10893:1130;;;;;;;;10471:1558::o;10938:518::-;11418:23;4791:12821:33;;;;;11057:311:50;4791:12821:33;;;;11111:151:50;4791:12821:33;11111:151:50;4791:12821:33;10897:21:50;4791:12821:33;11111:151:50;;;;;;;;10778:10;11111:151;;;;:::i;:::-;;;;;;;;;:::i;:::-;4791:12821:33;16467:29:50;;:34;;11057:311;;:::i;:::-;11418:23;;;:::i;:::-;10938:518;;;;;;;;;;10893:1130;11490:47;;;;;;4791:12821:33;16467:29:50;;11486:527;;10893:1130;;;;;;;10471:1558::o;11486:527::-;11975:23;4791:12821:33;;;;;;;11662:154:50;4791:12821:33;11662:154:50;4791:12821:33;;11608:317:50;4791:12821:33;10897:21:50;4791:12821:33;11662:154:50;;;;;;;;10778:10;11662:154;;;;:::i;:::-;4791:12821:33;16467:29:50;;:34;;11608:317;;:::i;10774:79::-;-1:-1:-1;4791:12821:33;;-1:-1:-1;;;;;;10807:46:50:o;5485:1119::-;4791:12821:33;16467:29:50;;:34;;5703:91;;5485:1119;5699:109;;4791:12821:33;16467:29:50;;:34;;5822:89;;5485:1119;5818:107;;4791:12821:33;16467:29:50;;:34;;5939:107;;5485:1119;5935:158;;4791:12821:33;16467:29:50;;:34;;6119:129;;5485:1119;6102:169;;4791:12821:33;;;;;-1:-1:-1;4791:12821:33;;552:8:51;1379:24;6497:19:50;;5485:1119::o;6455:142::-;1325:13;6532:38;:42;;;;:64;;;6455:142;5485:1119;:::o;6532:64::-;552:8:51;4791:12821:33;;;;1379:24:51;5485:1119:50;:::o;6102:169::-;6259:12;;4791:12821:33;6259:12:50;:::o;6119:129::-;6187:61;4791:12821:33;16467:29:50;;:34;;6119:129;;5939:107;5988:58;4791:12821:33;16467:29:50;;:34;;5939:107;;5822:89;5862:49;4791:12821:33;16467:29:50;;:34;;5822:89;;5703:91;5744:50;4791:12821:33;16467:29:50;;:34;;5703:91;;2333:220:51;552:8;4791:12821:33;;;1379:24:51;2467:33;;2510:13;;;:::i;2467:33::-;2492:8;4791:12821:33;2492:8:51;:::o;4351:276:107:-;4791:12821:33;;4998:58:107;4439:24;;4486:21;;4479:28;:::o;4435:186::-;4791:12821:33;4545:65:107;4791:12821:33;;;4545:65:107;;;;4791:12821:33;4545:65:107;;4604:4;4545:65;;;4791:12821:33;4545:65:107;;;;;;;4791:12821:33;4545:65:107;;;4538:72;;:::o;4545:65::-;;;4791:12821:33;4545:65:107;;4791:12821:33;4545:65:107;;;;;;4791:12821:33;4545:65:107;;;:::i;:::-;;;4791:12821:33;;;;;4538:72:107;:::o;4545:65::-;;;-1:-1:-1;4545:65:107;;809:23:106;;;;;;;;;;;;;;;;;;;;;;;;:::o;12116:1967:50:-;12354:22;;;4791:12821:33;;;;;;12116:1967:50;;;12390:10;4791:12821:33;;;12390:27:50;12386:104;;4791:12821:33;16467:29:50;;12501:1576;;12116:1967;;;;;;:::o;12501:1576::-;12579:86;4791:12821:33;809:23:106;12594:70:50;4791:12821:33;809:23:106;4791:12821:33;;;12594:70:50;;;;12354:22;12594:70;;;12390:10;12594:70;;;4791:12821:33;809:23:106;;;;;4791:12821:33;1907:6:50;;;;;;4791:12821:33;5241:25;;1907:6:50;;;;;4791:12821:33;1907:6:50;;;5241:25:33;4791:12821;1907:6:50;;;;4791:12821:33;1907:6:50;;;5241:25:33;1907:6:50;;;;4791:12821:33;;1907:6:50;;;4791:12821:33;1907:6:50;;4791:12821:33;1907:6:50;;5241:25:33;1907:6:50;809:23:106;;;4791:12821:33;;809:23:106;;;4791:12821:33;809:23:106;;;;;;;4791:12821:33;809:23:106;;;4791:12821:33;;809:23:106;;;4791:12821:33;809:23:106;;;;;;;;;;;;:::i;12594:70:50:-;12579:86;;:::i;:::-;4791:12821:33;12800:2:50;4791:12821:33;;12783:19:50;12779:66;;4791:12821:33;13119:7:50;4791:12821:33;;;552:8:51;1379:24;13115:61:50;;12501:1576;4791:12821:33;16467:29:50;13262:805;;12501:1576;;;;;;;13262:805;4791:12821:33;1104:87:55;;;-1:-1:-1;1791:6:50;2052:83:105;;;4791:12821:33;;13721:332:50;;13262:805;13721:332;13828:34;13790:16;4791:12821:33;13790:16:50;;13828:34;;:::i;:::-;13888:48;;;;4791:12821:33;13901:16:50;;13888:48;13884:151;;13721:332;13262:805;;13884:151;13964:35;4791:12821:33;814:96:46;;4791:12821:33;814:96:46;13888:48:50;4791:12821:33;13920:16:50;;13888:48;;13115:61;12800:2;828:82:55;;;;-1:-1:-1;13115:61:50;;12779:66;12804:28;4791:12821:33;814:96:46;;4791:12821:33;814:96:46;12386:104:50;-1:-1:-1;4791:12821:33;;-1:-1:-1;4791:12821:33;;-1:-1:-1;;;;;12419:71:50:o;4791:12821:33:-;;;;;;;;;;;;;;;;;;:::o;14169:1338:50:-;;;;;;;;4791:12821:33;;;14448:10:50;:27;14444:83;;2052::105;;;2241:89;;;14703:35:50;16467:29;4791:12821:33;16467:29:50;;14699:308;;14169:1338;15017:22;;;;;4791:12821:33;;;2241:89:105;4791:12821:33;15053:25:50;;;:52;;;14169:1338;15049:413;;14169:1338;15471:29;;;;14169:1338;:::o;15049:413::-;15430:21;15134:22;;;4791:12821:33;15134:22:50;;;4791:12821:33;15134:26:50;4791:12821:33;;;;15134:47:50;15133:199;;;;553:115:105;;;2052:83;553:115;;15133:199:50;15121:211;15430:21;;:::i;:::-;15049:413;;;;;15133:199;553:115:105;;;;2052:83;553:115;;15133:199:50;;15053:52;4791:12821:33;;2241:89:105;4791:12821:33;15082:23:50;;15053:52;;14699:308;14824:80;14778:218;4791:12821:33;;14778:207:50;4791:12821:33;14754:242:50;4791:12821:33;;;;;;1847:6:50;4791:12821:33;14824:80:50;;;;;;;;14448:10;14824:80;;;4791:12821:33;;;;;;1907:6:50;;;;;;4791:12821:33;5241:25;;1907:6:50;;;;;4791:12821:33;1907:6:50;;;5241:25:33;4791:12821;1907:6:50;;;;4791:12821:33;1907:6:50;;;5241:25:33;1907:6:50;;;;4791:12821:33;;1907:6:50;;;4791:12821:33;1907:6:50;;4791:12821:33;1907:6:50;;5241:25:33;1907:6:50;4791:12821:33;;;;;;;;;;;;;;;;:::i;14824:80:50:-;4791:12821:33;16467:29:50;;:34;;14778:207;;:::i;:218::-;14754:242;;:::i;:::-;14699:308;;;;;;;14444:83;14477:50;;;;;;;;;4791:12821:33;14477:50:50;:::o;6780:1276::-;;;;6901:116;;;-1:-1:-1;6901:116:50;;;;;;;;;;7111:8;7107:102;;7280:504;;;;;;;;;;;;;;;;;;;6901:116;7280:504;;;-1:-1:-1;7280:504:50;;6901:116;4791:12821:33;;7914:18:50;:68;;;;;6780:1276;7910:140;;;;6780:1276::o;7914:68::-;563:85:55;;;4791:12821:33;;;;;;7936:46:50;;;-1:-1:-1;7914:68:50;;;;7107:102;4791:12821:33;;;;;;;;;;;;7107:102:50;3741:1424:46;;4791:12821:33;3741:1424:46;;;;;;4791:12821:33;3741:1424:46;;;3710:21;3741:1424;;4791:12821:33;;3741:1424:46;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3741:1424:46;;;;7185:23:50;3741:1424:46;;;;4791:12821:33;3741:1424:46;;;;;;;;;;4791:12821:33;;;;;;;;;;;;;;;;;2108:1410:63;;;2509:1003;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2108:1410::o;2509:1003::-;;;;;;;;;;;;;;;;;;;;;3149:4018:64;3297:459;;;;;;;;;;1317:6;3774:35;;3770:78;;6424:727;4356:13;;4383:160;;;;;;;4560:13;3297:459;4560:13;;4556:83;;3149:4018;4667:3;4657:13;;4653:83;;3149:4018;4764:3;4754:13;;4750:83;;3149:4018;4861:4;4851:14;;4847:84;;3149:4018;4959:4;4949:14;;4945:84;;3149:4018;5057:4;5047:14;;5043:84;;3149:4018;4383:160;5145:14;;5141:84;;3149:4018;5253:5;5243:15;;5239:85;;3149:4018;5352:5;5342:15;;5338:85;;3149:4018;5451:5;5441:15;;5437:85;;3149:4018;5550:5;5540:15;;5536:85;;3149:4018;5649:6;5639:16;;5635:86;;3149:4018;5749:6;5739:16;;5735:86;;3149:4018;5849:6;5839:16;;5835:86;;3149:4018;5949:6;5939:16;;5935:86;;3149:4018;6049:7;6039:17;;6035:86;;3149:4018;6149:7;6139:17;;6135:85;;3149:4018;6248:7;6238:17;;6234:83;;3149:4018;6345:7;6335:17;6331:78;;3149:4018;-1:-1:-1;;6424:727:64;;3149:4018;6424:727;4959:4;6424:727;3149:4018;:::o;6424:727::-;;;;;6331:78;6376:25;4791:12821:33;;;4383:160:64;4791:12821:33;;6331:78:64;;6234:83;6279:30;4791:12821:33;;;4383:160:64;4791:12821:33;;6234:83:64;;6135:85;4791:12821:33;6180:32:64;4791:12821:33;4383:160:64;4791:12821:33;6135:85:64;;;6035:86;4791:12821:33;6080:33:64;4791:12821:33;4383:160:64;4791:12821:33;6035:86:64;;;5935;4791:12821:33;5979:34:64;4791:12821:33;4383:160:64;4791:12821:33;5935:86:64;;;5835;4791:12821:33;5879:34:64;4791:12821:33;4383:160:64;4791:12821:33;5835:86:64;;;5735;4791:12821:33;5779:34:64;4791:12821:33;4383:160:64;4791:12821:33;5735:86:64;;;5635;4791:12821:33;5679:34:64;4791:12821:33;4383:160:64;4791:12821:33;5635:86:64;;;5536:85;4791:12821:33;5579:34:64;4791:12821:33;4383:160:64;4791:12821:33;5536:85:64;;;5437;4791:12821:33;5480:34:64;4791:12821:33;4383:160:64;4791:12821:33;5437:85:64;;;5338;4791:12821:33;5381:34:64;4791:12821:33;4383:160:64;4791:12821:33;5338:85:64;;;5239;4791:12821:33;5282:34:64;4791:12821:33;4383:160:64;4791:12821:33;5239:85:64;;;5141:84;4791:12821:33;5183:34:64;4791:12821:33;4383:160:64;4791:12821:33;5141:84:64;;;5043;4791:12821:33;5085:34:64;4791:12821:33;4383:160:64;4791:12821:33;5043:84:64;;;4945;4791:12821:33;4987:34:64;4791:12821:33;4383:160:64;4791:12821:33;4945:84:64;;;4847;4791:12821:33;4889:34:64;4791:12821:33;4383:160:64;4791:12821:33;4847:84:64;;;4750:83;4791:12821:33;:34:64;:12821:33;4383:160:64;4791:12821:33;4750:83:64;;;4653;4791:12821:33;4694:34:64;4791:12821:33;4383:160:64;4791:12821:33;4653:83:64;;;4556;4791:12821:33;4597:34:64;4791:12821:33;4383:160:64;4791:12821:33;4556:83:64;;;3770:78;1431:143:46;3811:20:64;1431:143:46;;;;;;;13649:424:60;;13850:1;4791:12821:33;;;13838:13:60;:218;13850:1;;;13870:73;4791:12821:33;13850:1:60;4791:12821:33;;;13870:73:60;;:::i;:::-;13850:1;1875:5:59;;1871:49;;13649:424:60;:::o;13838:218::-;13974:71;4791:12821:33;;;13974:71:60;;:::i;:::-;13850:1;1875:5:59;;1871:49;;13850:1:60;4791:12821:33;13649:424:60;:::o;12876:::-;;13077:1;4791:12821:33;;;13065:13:60;:218;13077:1;;;13097:73;4791:12821:33;13077:1:60;4791:12821:33;;;13097:73:60;;:::i;13065:218::-;13201:71;4791:12821:33;;;13201:71:60;;:::i;369:370:52:-;;452:281;369:370;452:281;;;;;;;;;;;369:370::o;452:281::-;;;;;;;8196:485:50;;8337:20;8196:485;8337:20;:::i;:::-;8449:12;;8445:26;;8587:2;4791:12821:33;;8570:19:50;8566:66;;8587:2;1104:87:55;;8196:485:50;:::o;1070:396:105:-;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;7627:4752:64:-;2282:66;4791:12821:33;1862:10:64;;;4791:12821:33;8182:79:64;8178:168;;4791:12821:33;;8401:2:64;4791:12821:33;;2282:66:64;4791:12821:33;8463:29:64;;;:::i;:::-;4791:12821:33;;8518:3:64;8511:10;;8518:3;;4791:12821:33;;;;;8507:83:64;8660:196;;;;;;4791:12821:33;8660:196:64;;8869;;;8660;8869;;4791:12821:33;8869:196:64;;9078;;;8660;9078;;4791:12821:33;9078:196:64;;9287;;;8660;9287;;4791:12821:33;9287:196:64;;9496;;;8660;9496;;4791:12821:33;9496:196:64;;9705;;;8660;9705;;4791:12821:33;9705:196:64;;9914;;;;8660;9914;;4791:12821:33;9914:196:64;;10123;;;;8660;10123;;4791:12821:33;10123:196:64;;10332;;;;8660;10332;;4791:12821:33;10332:196:64;;10541;;;;8660;10541;;4791:12821:33;10541:196:64;;10750;;;;8660;10750;;4791:12821:33;10750:196:64;;10959;;;;8660;10959;;4791:12821:33;10959:196:64;;11168;;;;;8660;11168;;4791:12821:33;11168:196:64;;11377:165;;;;;;11168:196;;;;;10959;;;;;10750;;;;;10541;;;;;10332;;;;;10123;;;;;9914;;;;;9705;;;;;9496;;;;;9287;;;;;9078;;;;;8869;;;;;8660;;;;;2282:66;;;8643:2;4791:12821:33;8660:196:64;8869;9078;9287;9496;9705;9914;10123;10332;10541;10750;10959;11168;11377:165;11587:24;2282:66;;;;8518:3;2282:66;4791:12821:33;;2282:66:64;12201:39;2282:66;8518:3;2282:66;4791:12821:33;;12271:91:64;:17;;;:91;4791:12821:33;;;12271:91:64;;;7627:4752;:::o;12271:91::-;4791:12821:33;;;12301:26:64;;;:::i;:::-;4791:12821:33;12301:42:64;:61;;;7627:4752;:::o;12301:61::-;;;1907:6:50;:::o;8507:83:64:-;4791:12821:33;;;8580:3:64;4791:12821:33;;8507:83:64;;8178:168;4791:12821:33;1084:176:46;8281:25:64;1084:176:46;;;;;;;;633:9:58;;;;;;;:::o;:::-;;;;;;;;;;12231:9620:56;4791:12821:33;;;12231:9620:56;;4791:12821:33;;;;:::i;:::-;;;;;;;;;;;;;;;;;;12391:24:56;4791:12821:33;;;12488:17:56;4791:12821:33;12488:17:56;;4791:12821:33;;12550:102:56;4791:12821:33;;12550:102:56;4791:12821:33;;;750:5:58;1882:117:111;;;743:12:58;12550:102:56;;4791:12821:33;;12929:27:56;4791:12821:33;1502:93:111;;;;4791:12821:33;;;;1682:98:111;;;;;4791:12821:33;;;13221:14:56;;;4791:12821:33;;;;13451:20:56;;;4791:12821:33;819:8:51;2836:24;;:29;;13451:141:56;819:8:51;;;975;3147:27;3572:12;;;:::i;:::-;4791:12821:33;;;;;13617:70:56;13607:80;4791:12821:33;563:3:62;4791:12821:33;;;13847:32:56;;13843:200;;13617:70;4791:12821:33;;14251:27:56;14247:92;;-1:-1:-1;;4791:12821:33;;;;14384:24:56;;4791:12821:33;1502:93:111;4791:12821:33;;;14384:53:56;;;;14380:190;;-1:-1:-1;;4791:12821:33;1502:93:111;4791:12821:33;1862:10:64;14818:51:56;;;14814:157;;14350:1021;;4791:12821:33;;;2042:49:64;4791:12821:33;;;;;;;;;;;;;;2042:49:64;;4791:12821:33;;2042:49:64;;;4791:12821:33;;2042:49:64;;;4791:12821:33;;2042:49:64;;;4791:12821:33;13451:20:56;2042:49:64;;;4791:12821:33;1682:98:111;2042:49:64;;;4791:12821:33;2042:49:64;;;;4791:12821:33;;15446:66:56;4791:12821:33;;;15459:25:56;;;4791:12821:33;15446:66:56;;;;;2042:49:64;;;4791:12821:33;15639:5244:56;15648:29;;:80;;;;15639:5244;15646:83;;4791:12821:33;;;;;1502:93:111;4791:12821:33;;;;;;15905:11:56;;4791:12821:33;1682:98:111;4791:12821:33;;15918:18:56;;4791:12821:33;1682:98:111;4791:12821:33;15856:93:56;846:396:63;4791:12821:33;846:396:63;;;;;;;4791:12821:33;;4565:1682:63;4791:12821:33;;;;1676:170:63;1032:7:64;4791:12821:33;1676:170:63;1328:919:62;1676:170:63;;15856:15:56;1676:170:63;4791:12821:33;1676:170:63;;4839:13;1676:170;1682:98:111;1676:170:63;;;4791:12821:33;;-1:-1:-1;4791:12821:33;15856:15:56;4791:12821:33;;;-1:-1:-1;4791:12821:33;4748:17:63;4791:12821:33;1676:170:63;4791:12821:33;;;;4839:20:63;5014:11;;;;5164:194;;;;;;5234:34;;1676:170;5234:34;;:::i;:::-;4791:12821:33;;;1682:98:111;4791:12821:33;633:9:58;;1682:98:111;4791:12821:33;;1682:98:111;4791:12821:33;5164:194:63;4565:1682;;4791:12821:33;;2042:49:64;;;4791:12821:33;1682:98:111;4791:12821:33;2042:49:64;4791:12821:33;2042:49:64;;4791:12821:33;16081:34:56;;16077:106;;4565:1682:63;1317:6:64;4791:12821:33;2042:49:64;;4791:12821:33;1682:98:111;4791:12821:33;16200:34:56;;16196:106;;4565:1682:63;1502:93:111;16387:42:56;4791:12821:33;2042:49:64;;4791:12821:33;1682:98:111;4791:12821:33;16387:42:56;:::i;:::-;4791:12821:33;2042:49:64;;;;4791:12821:33;1502:93:111;4791:12821:33;;;16776:24:56;1502:93:111;4791:12821:33;16776:24:56;;4791:12821:33;;;;;;1328:919:62;;;;;;;;;16819:16:56;;4791:12821:33;;16634:282:56;4791:12821:33;1502:93:111;4791:12821:33;;3923:41:62;;;3993:19;4791:12821:33;3993:19:62;;4027:2922;4791:12821:33;;;;;;563:3:62;4791:12821:33;4111:81:62;4791:12821:33;;;;4111:81:62;:::i;:::-;4221:230;;;;;4254:87;;;;;:::i;:::-;4221:230;;4473:34;;;;;4595:37;;1682:98:111;4595:37:62;;;1502:93:111;4595:37:62;4666:256;;;563:3;4791:12821:33;;;4666:24:62;:256;563:3;;;4666:256;;;;4469:969;;5467:228;;;5500:86;;;;:::i;:::-;4027:2922;;2042:49:64;;;4791:12821:33;2042:49:64;4791:12821:33;13451:20:56;2042:49:64;;4791:12821:33;;;;;;;16965:26:56;16961:568;4791:12821:33;;;1682:98:111;2042:49:64;;;1875:5:59;4791:12821:33;1875:5:59;;1871:49;;4791:12821:33;2042:49:64;17153:30:56;13451:20;2042:49:64;;;;;;;17153:30:56;;:::i;:::-;4791:12821:33;1875:5:59;;1871:49;;2042::64;;;;;1328:919:62;2042:49:64;;;16961:568:56;;4791:12821:33;;;17660:951:56;;16961:568;4791:12821:33;;16819:16:56;;4791:12821:33;;18670:20:56;18666:382;;16961:568;4791:12821:33;1502:93:111;4791:12821:33;;;1502:93:111;4791:12821:33;2042:49:64;;4791:12821:33;;19488:44:56;;19484:1389;1502:93:111;;;2042:49:64;4791:12821:33;2042:49:64;;4791:12821:33;19623:835:56;;19484:1389;4791:12821:33;;;633:9:58;4791:12821:33;2042:49:64;;4791:12821:33;1682:98:111;4791:12821:33;633:9:58;1682:98:111;4791:12821:33;20522:46:56;1682:98:111;4791:12821:33;;15905:11:56;;4791:12821:33;19484:1389:56;15639:5244;;;;20522:46;4791:12821:33;2042:49:64;;4791:12821:33;1682:98:111;4791:12821:33;20522:46:56;;19623:835;4791:12821:33;;;;20385:54:56;2042:49:64;;;29769:10:56;2042:49:64;;;;19794:25:56;4791:12821:33;1682:98:111;19794:25:56;;4791:12821:33;19730:170:56;;2042:49:64;4791:12821:33;1682:98:111;4791:12821:33;;;-1:-1:-1;4791:12821:33;29769:10:56;4791:12821:33;;;-1:-1:-1;4791:12821:33;29851:26:56;1328:919:62;29851:26:56;;4791:12821:33;;;;;;;1682:98:111;29943:26:56;;4791:12821:33;;;;;;;;13451:20:56;4791:12821:33;;;;20277:44:56;;19730:170;4791:12821:33;16819:16:56;4791:12821:33;;;20385:54:56;:::i;:::-;4791:12821:33;;16819:16:56;;4791:12821:33;19623:835:56;;20277:44;4791:12821:33;;;;;;;;20277:44:56;;19730:170;4791:12821:33;20385:54:56;19848:25;;;29769:10;1328:919:62;19848:25:56;;4791:12821:33;2042:49:64;4791:12821:33;2042:49:64;;;;19730:170:56;;;19484:1389;1502:93:111;4791:12821:33;;;20611:45:56;;20607:266;;19484:1389;;;;20607:266;20810:48;;;:::i;:::-;1682:98:111;4791:12821:33;;15905:11:56;;4791:12821:33;20607:266:56;;;18666:382;2042:49:64;;;;13451:20:56;1070:86:66;;2042:49:64;;;;258:35:47;2042:49:64;;;4791:12821:33;18666:382:56;;;17660:951;18159:242;4791:12821:33;;;;;;18160:22:56;4791:12821:33;;2042:49:64;;;;18159:242:56;;2042:49:64;;;;;4791:12821:33;2042:49:64;;;4791:12821:33;258:35:47;17660:951:56;;;18159:242;563:3:62;13451:20:56;2042:49:64;;;4791:12821:33;;;2042:49:64;;;;;258:35:47;4791:12821:33;633:9:58;18159:242:56;;;16961:568;13451:20;2042:49:64;;;;;;;258:35:47;1875:5:59;4791:12821:33;1875:5:59;;1871:49;;258:35:47;2042:49:64;1682:98:111;2042:49:64;;;4791:12821:33;1875:5:59;;1871:49;;17469:45:56;;;:::i;:::-;16961:568;;;5467:228:62;5609:86;;;:::i;:::-;5467:228;;4666:256;4791:12821:33;4852:70:62;4791:12821:33;;4852:70:62;;:::i;:::-;4666:256;;4469:969;5021:33;;;;;;;;6731:358:60;;;;;;;;7172:190;1682:98:111;7172:190:60;1502:93:111;7172:190:60;;;;;;7197:74;;;;;:::i;:::-;4791:12821:33;;;;;;4469:969:62;;;7172:190:60;4834:27;;;4791:12821:33;;5042:42:60;5043:28;4884:47;4791:12821:33;;;;295:2:48;4791:12821:33;4884:47:60;:::i;:::-;4791:12821:33;;;5043:28:60;:::i;:::-;5042:42;:::i;:::-;7172:190;;4834:172;5042:42;5043:28;4954:52;4791:12821:33;;;4954:52:60;;:::i;:::-;4834:172;;6731:358;;4791:12821:33;6731:358:60;;;;4221:230:62;4364:87;;;;;:::i;:::-;4221:230;;;4027:2922;5746:232;;-1:-1:-1;5746:232:62;;;;;;5779:88;;;;;:::i;:::-;5746:232;;6000:37;;;;;6126;1502:93:111;6126:37:62;1682:98:111;6126:37:62;5996:516;;;6540:226;;;6573:85;;;;:::i;:::-;6540:226;;6864:70;4791:12821:33;;;563:3:62;4791:12821:33;;;;6529:237:62;6864:70;:::i;:::-;4027:2922;;6540:226;6681:85;;;:::i;:::-;6540:226;;;5996:516;6297:36;;;;;8211:358:60;;;;;;;8646:194;;;;;-1:-1:-1;4791:12821:33;5152:27:60;;4791:12821:33;;;295:2:48;4791:12821:33;;;;558:86:66;;;;;;;;5152:205:60;4791:12821:33;5468:277:60;;;;;;;;;4791:12821:33;;;;1682:98:111;4791:12821:33;;;;;8646:194:60;5996:516:62;;;;5468:277:60;;4791:12821:33;5468:277:60;;;;5152:205;4791:12821:33;;;5315:25:49;;335:27:48;5315:25:49;;:::i;:::-;5358;;;;;335:27:48;5358:25:49;;5354:90;5152:205:60;5354:90:49;4791:12821:33;;5416:12:49;5152:205:60;4791:12821:33;;;;8646:194:60;8764:76;;;;;1502:93:111;8764:76:60;1682:98:111;8764:76:60;;:::i;:::-;8646:194;;5746:232:62;5890:88;;;;;:::i;:::-;5746:232;;;16196:106:56;1317:6:64;4791:12821:33;2042:49:64;;4791:12821:33;16196:106:56;;16077;1032:7:64;4791:12821:33;2042:49:64;;4791:12821:33;16077:106:56;;5164:194:63;4791:12821:33;1682:98:111;4791:12821:33;633:9:58;;1682:98:111;4791:12821:33;;1682:98:111;4791:12821:33;5164:194:63;;4565:1682;1328:919:62;4791:12821:33;;;;;15856:15:56;4791:12821:33;;;;5702:13:63;4791:12821:33;1682:98:111;4791:12821:33;1676:170:63;;4791:12821:33;;;;15856:15:56;4791:12821:33;;;;;;1328:919:62;1676:170:63;4791:12821:33;;;;5647:20:63;4791:12821:33;;5702:20:63;5869:11;;;;;;;;6019:213;;;;;;4791:12821:33;;;;;;1766:834:43;;1328:919:62;1766:834:43;;;;1032:7:64;4791:12821:33;1766:834:43;;;;4791:12821:33;1766:834:43;1676:170:63;1766:834:43;4791:12821:33;1766:834:43;4791:12821:33;1766:834:43;;;;;;;;;;;;;;;;4791:12821:33;1676:170:63;;;1766:834:43;;;;;;;;4791:12821:33;;1682:98:111;4791:12821:33;;1682:98:111;4791:12821:33;;1682:98:111;4791:12821:33;;1682:98:111;4791:12821:33;6019:213:63;4565:1682;;;6019:213;1676:170;;4791:12821:33;1676:170:63;;4791:12821:33;1676:170:63;;1328:919:62;1676:170:63;;1032:7:64;1676:170:63;;;4791:12821:33;1676:170:63;;;;4791:12821:33;;;1682:98:111;4791:12821:33;;1682:98:111;4791:12821:33;;1682:98:111;4791:12821:33;;1682:98:111;4791:12821:33;6019:213:63;;15646:83:56;;;;;;;;;;;;;4791:12821:33;20925:11:56;;4791:12821:33;1682:98:111;2578:157;;;2342:131;1502:93;4791:12821:33;;;2342:131:111;;;;4791:12821:33;;;13221:14:56;;;4791:12821:33;;;;21049:16:56;;4791:12821:33;;21031:34:56;;;21027:73;;15639:5244;-1:-1:-1;4791:12821:33;;;;2042:49:64;1682:98:111;2042:49:64;;;21178:25:56;;4791:12821:33;21147:177:56;4791:12821:33;;;;;21420:26:56;;21405:42;4791:12821:33;;21515:27:56;;21544:62;21515:27;;;:::i;:::-;4791:12821:33;;;21544:62:56;:::i;:::-;4791:12821:33;553:115:105;;13451:20:56;553:115:105;;21401:434:56;12231:9620::o;21401:434::-;21775:27;4791:12821:33;;;21711:62:56;4791:12821:33;;21711:62:56;:::i;:::-;21775:27;;:::i;21147:177::-;2042:49:64;1328:919:62;2042:49:64;;;21261:25:56;;4791:12821:33;21147:177:56;;21027:73;4791:12821:33;;;13221:14:56;;;4791:12821:33;;;13221:14:56;;;4791:12821:33;21027:73:56;;;15648:80;4791:12821:33;1502:93:111;4791:12821:33;;;1502:93:111;4791:12821:33;15704:24:56;;4791:12821:33;;15681:47:56;15648:80;;15446:66;1682:98:111;15487:25:56;;4791:12821:33;15446:66:56;;;;;;14814:157;14889:30;4791:12821:33;1084:176:46;;;;4791:12821:33;1084:176:46;14380:190:56;3008:319:46;;;4791:12821:33;3008:319:46;;14457:34:56;3008:319:46;;;;;;;;;;;14350:1021:56;4791:12821:33;15005:24:56;;4791:12821:33;1502:93:111;4791:12821:33;;;15005:53:56;;;;15001:190;;-1:-1:-1;;4791:12821:33;1502:93:111;4791:12821:33;2042:49:64;15208:51:56;;;15204:157;;14350:1021;;;14247:92;14280:59;;;;;;;;;;;;;;4791:12821:33;14280:59:56;4791:12821:33;14280:59:56;;;:::o;13843:200::-;4791:12821:33;;;13929:26:56;13925:108;13843:200;13925:108;13975:30;4791:12821:33;814:96:46;;4791:12821:33;814:96:46;13617:70:56;4791:12821:33;1864:240:58;;;;;;;;;;;;;13617:70:56;;13451:141;2089:105:111;;;;4791:12821:33;2089:105:111;13451:141:56;;12550:102;4791:12821:33;;;;;12550:102:56;;;741:4141:49;;4791:12821:33;;;1347:147:49;;;;;;;;;;;;;;;;1619:19;;258:35:47;1619:19:49;4791:12821:33;;;1720:10:49;1716:177;;258:35:47;2224:95:49;;2391:145;;;;;;2977:82;4791:12821:33;2391:145:49;;2977:82;;3363:21;741:4141;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;741:4141::-;4791:12821:33;;;1347:147:49;;;;;;;;;;;;;;;;1619:19;;563:3:62;1619:19:49;4791:12821:33;;;1720:10:49;1716:177;;4791:12821:33;2224:95:49;563:3:62;2224:95:49;;2391:145;;;;;;4791:12821:33;;2391:145:49;;2977:82;;3363:21;4791:12821:33;741:4141:49;:::o;1716:177::-;1750:98;;563:3:62;1750:98:49;;;1865:13;:::o;741:4141::-;;4791:12821:33;;;1347:147:49;;;;;;;;;;;;;;;;1619:19;;335:27:48;1619:19:49;4791:12821:33;;;1720:10:49;1716:177;;335:27:48;2224:95:49;;2391:145;;;;;;4791:12821:33;;2391:145:49;;2977:82;;3363:21;741:4141;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;741:4141::-;;4791:12821:33;;;1347:147:49;;335:27:48;1347:147:49;;;;;;;;;;;;;1619:19;;;;4791:12821:33;;;1720:10:49;1716:177;;335:27:48;2224:95:49;;;4791:12821:33;;;;2716:31:49;2811:94;;;3776:1;4791:12821:33;3757:1:49;4791:12821:33;3756:21:49;4791:12821:33;;;3776:1:49;4791:12821:33;;;;;3776:1:49;4791:12821:33;;;;;3776:1:49;4791:12821:33;;;;;3776:1:49;4791:12821:33;;;;;3776:1:49;4791:12821:33;;;;;3776:1:49;4791:12821:33;;3254:96:49;;;;4791:12821:33;3254:96:49;;;2391:145;;;;;;4791:12821:33;2391:145:49;;2977:82;3363:21;4791:12821:33;741:4141:49;:::o;1716:177::-;1750:98;;;;1865:13;:::o;741:4141::-;;4791:12821:33;;;1347:147:49;;;;;;;;;;;;;;;;1619:19;;;;4791:12821:33;;;1720:10:49;1716:177;;2224:95;;;;4791:12821:33;;;;2716:31:49;2811:94;;;3776:1;4791:12821:33;3757:1:49;4791:12821:33;3756:21:49;4791:12821:33;;;3776:1:49;4791:12821:33;;;;;3776:1:49;4791:12821:33;;;;;3776:1:49;4791:12821:33;;;;;3776:1:49;4791:12821:33;;;;;3776:1:49;4791:12821:33;;;;;3776:1:49;4791:12821:33;;3254:96:49;;;;4791:12821:33;3254:96:49;;;2391:145;;;;;;4791:12821:33;2391:145:49;;2977:82;3363:21;4791:12821:33;741:4141:49;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;11589:938:60:-;4791:12821:33;335:27:48;11589:938:60;10595:530;11589:938;14040:4;11589:938;10595:530;;;;;;;;;;;4791:12821:33;;12323:51:60;;;;;:::i;:::-;12384:137;;;;;;11589:938;:::o;:::-;4791:12821:33;11589:938:60;10595:530;11589:938;12323:51;11589:938;;10595:530;;;;;;;;;;;4791:12821:33;;12323:51:60;:::i;9398:1050::-;;4791:12821:33;;;;;;9600:29:60;9596:98;;9398:1050;4791:12821:33;9783:262:60;;;;;;;4791:12821:33;;10262:64:60;10211:220;4791:12821:33;;;1862:10:64;;4791:12821:33;;295:2:48;4791:12821:33;;10262:64:60;:::i;:::-;558:86:66;;;;;;;;;9398:1050:60;:::o;9783:262::-;;;;;;;9596:98;;;;9398:1050;4791:12821:33;;;;;;9600:29:60;9596:98;;9398:1050;4791:12821:33;9783:262:60;;;;;;;10361:70;10211:220;4791:12821:33;;10361:54:60;10211:220;4791:12821:33;;;1862:10:64;;4791:12821:33;;295:2:48;4791:12821:33;;10361:54:60;:::i;:::-;:70;:::i;9596:98::-;9631:63;9596:98;;653:664:43;742:5;;4791:12821:33;;759:552:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;653:664;:::o;5164:296:49:-;;;;5315:25;;;;;:::i;:::-;5358;;;;;;5354:90;;5164:296::o;5354:90::-;4791:12821:33;;;5416:12:49;;;4791:12821:33;;5164:296:49:o;1535:2065:60:-;;;1831:11;;1827:32;;4791:12821:33;;;295:2:48;4791:12821:33;;1946:1648:60;4791:12821:33;;;;;2951:462:60;;;;;;;;;;;;;3497:72;4791:12821:33;3497:60:60;4791:12821:33;;;3497:60:60;;:::i;2951:462::-;;1946:1648;2951:462;;;;1827:32;1844:15;;;:::o;1535:2065::-;;;1831:11;;1827:32;;4791:12821:33;;;;295:2:48;4791:12821:33;;;;;;;2054:16:60;;;;;:::i;:::-;:28;2050:345;;1535:2065;2526:21;;;2525:32;2526:21;;;:::i;:::-;2525:32;:::i;:::-;558:86:66;;;;;;;;4791:12821:33;1535:2065:60;:::o;2050:345::-;258:35:47;;2174:25:60;;;2050:345;2170:207;2293:60;;;;;:::i;:::-;4791:12821:33;2278:76:60;:::o;1827:32::-;1844:15;;;;:::o;460:155:59:-;;4791:12821:33;;;562:6:59;;;558:50;;460:155::o","linkReferences":{},"immutableReferences":{"41241":[{"start":13606,"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)":"6276cbbe","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\":\"address\",\"name\":\"initialOwner\",\"type\":\"address\"}],\"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\":\"ProtocolFeeCurrencySynced\",\"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\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Donate\",\"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\"}],\"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 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\":\"address\",\"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\":\"address\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"settleFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"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 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\":{\"Donate(bytes32,address,uint256,uint256)\":{\"params\":{\"amount0\":\"The amount donated in currency0\",\"amount1\":\"The amount donated in currency1\",\"id\":\"The abi encoded hash of the pool key struct for the pool that was donated to\",\"sender\":\"The address that initiated the donate call\"}},\"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 initialized 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)\":{\"details\":\"This will revert if the contract is unlocked\",\"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)\":{\"details\":\"Calls to donate can be frontrun adding just-in-time liquidity, with the aim of receiving a portion donated funds. Donors should keep this in mind when designing donation mechanisms.This function donates to in-range LPs at slot0.tick. In certain edge-cases of the swap algorithm, the `sqrtPrice` of a pool can be at the lower boundary of tick `n`, but the `slot0.tick` of the pool is already `n - 1`. In this case a call to `donate` would donate to tick `n - 1` (slot0.tick) not tick `n` (getTickAtSqrtPrice(slot0.sqrtPriceX96)). Read the comments in `Pool.swap()` for more information about this.\",\"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)\":{\"details\":\"A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee\",\"params\":{\"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 liquidityDeltaNote that feesAccrued can be artificially inflated by a malicious actor and integrators should be careful using the value For pools with a single liquidity position, actors can donate to themselves to inflate feeGrowthGlobal (and consequently feesAccrued) atomically donating and collecting fees in the same unlockCallback may make the inflated value more extreme\",\"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, fee deltas, and hook deltas if applicable\",\"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\":{\"_0\":\"The amount of currency settled\"}},\"settleFor(address)\":{\"params\":{\"recipient\":\"The address to credit for the payment\"},\"returns\":{\"_0\":\"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. However, if an ERC20 token has been synced and not settled, and the caller instead wants to settle native funds, this function can be called with the native currency to then be able to settle the native currency\"},\"take(address,address,uint256)\":{\"details\":\"Will revert if the requested amount is not available, consider using `mint` insteadCan 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)\":{\"details\":\"A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee\",\"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\"}],\"ProtocolFeeCurrencySynced()\":[{\"notice\":\"Thrown when collectProtocolFees is attempted on a token that is synced.\"}],\"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\":{\"Donate(bytes32,address,uint256,uint256)\":{\"notice\":\"Emitted for donations\"},\"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-retrievable, 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 in-range liquidity providers of a pool\"},\"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)\":{\"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\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":44444444},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":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\":\"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6\",\"dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18\"]},\"src/PoolManager.sol\":{\"keccak256\":\"0xf9ff5d5e261a21a5e72a01c5badd988beeff437e0f6b82fd56f80be42d727c07\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://4a92a25102c73245e1343f0dbc8400b8bac3c464ba064aa5574b9584a12e6c72\",\"dweb:/ipfs/QmfCcvspZ8XzDeQjEd2FfM76wzkfE9KDgBoqAcqhf3nsnu\"]},\"src/ProtocolFees.sol\":{\"keccak256\":\"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa\",\"dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq\"]},\"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\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"src/libraries/CurrencyDelta.sol\":{\"keccak256\":\"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb\",\"dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn\"]},\"src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725\",\"dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX\"]},\"src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"]},\"src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4\",\"dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ\"]},\"src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"src/libraries/Hooks.sol\":{\"keccak256\":\"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb\",\"dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx\"]},\"src/libraries/LPFeeLibrary.sol\":{\"keccak256\":\"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475\",\"dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J\"]},\"src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"]},\"src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"src/libraries/NonzeroDeltaCount.sol\":{\"keccak256\":\"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59\",\"dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm\"]},\"src/libraries/ParseBytes.sol\":{\"keccak256\":\"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17\",\"dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa\"]},\"src/libraries/Pool.sol\":{\"keccak256\":\"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407\",\"dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey\"]},\"src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"]},\"src/libraries/ProtocolFeeLibrary.sol\":{\"keccak256\":\"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba\",\"dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787\"]},\"src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"src/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138\",\"dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF\"]},\"src/libraries/SwapMath.sol\":{\"keccak256\":\"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812\",\"dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD\"]},\"src/libraries/TickBitmap.sol\":{\"keccak256\":\"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d\",\"dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy\"]},\"src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"]},\"src/libraries/UnsafeMath.sol\":{\"keccak256\":\"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572\",\"dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn\"]},\"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\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"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":"address","name":"initialOwner","type":"address"}],"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":"ProtocolFeeCurrencySynced"},{"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":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"amount0","type":"uint256","indexed":false},{"internalType":"uint256","name":"amount1","type":"uint256","indexed":false}],"type":"event","name":"Donate","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"}],"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 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":"address","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":"address","name":"controller","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFeeController"},{"inputs":[],"stateMutability":"payable","type":"function","name":"settle","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"payable","type":"function","name":"settleFor","outputs":[{"internalType":"uint256","name":"","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 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)":{"details":"This will revert if the contract is unlocked","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)":{"details":"Calls to donate can be frontrun adding just-in-time liquidity, with the aim of receiving a portion donated funds. Donors should keep this in mind when designing donation mechanisms.This function donates to in-range LPs at slot0.tick. In certain edge-cases of the swap algorithm, the `sqrtPrice` of a pool can be at the lower boundary of tick `n`, but the `slot0.tick` of the pool is already `n - 1`. In this case a call to `donate` would donate to tick `n - 1` (slot0.tick) not tick `n` (getTickAtSqrtPrice(slot0.sqrtPriceX96)). Read the comments in `Pool.swap()` for more information about this.","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)":{"details":"A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee","params":{"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 liquidityDeltaNote that feesAccrued can be artificially inflated by a malicious actor and integrators should be careful using the value For pools with a single liquidity position, actors can donate to themselves to inflate feeGrowthGlobal (and consequently feesAccrued) atomically donating and collecting fees in the same unlockCallback may make the inflated value more extreme","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, fee deltas, and hook deltas if applicable","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":{"_0":"The amount of currency settled"}},"settleFor(address)":{"params":{"recipient":"The address to credit for the payment"},"returns":{"_0":"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. However, if an ERC20 token has been synced and not settled, and the caller instead wants to settle native funds, this function can be called with the native currency to then be able to settle the native currency"},"take(address,address,uint256)":{"details":"Will revert if the requested amount is not available, consider using `mint` insteadCan 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)":{"details":"A swap fee totaling MAX_SWAP_FEE (100%) makes exact output swaps impossible since the input is entirely consumed by the fee","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-retrievable, 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 in-range liquidity providers of a pool"},"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)":{"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/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","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":"none"},"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":"0xacb81aecb7c74c86650a035462dae38c313b4b7b5842e14b645f864f61da2b51","urls":["bzz-raw://363a0e15fc30ea68a5d52a78772facecde6433ea156e3ec2ce25068c97cd5ad6","dweb:/ipfs/QmYhWaF3wH71SDx5TZr9qEXXQf5FYQvdjoo3B2qWiAbm18"],"license":"MIT"},"src/PoolManager.sol":{"keccak256":"0xf9ff5d5e261a21a5e72a01c5badd988beeff437e0f6b82fd56f80be42d727c07","urls":["bzz-raw://4a92a25102c73245e1343f0dbc8400b8bac3c464ba064aa5574b9584a12e6c72","dweb:/ipfs/QmfCcvspZ8XzDeQjEd2FfM76wzkfE9KDgBoqAcqhf3nsnu"],"license":"BUSL-1.1"},"src/ProtocolFees.sol":{"keccak256":"0x81362ef1d19670b41cefc2b6f2dc0333b6743fe39a1929edd36bd9b6a1111755","urls":["bzz-raw://de483bbd8bf9a53b9644d7f9a6a6fe77ae527b755cf29e1db8725de89e70c7aa","dweb:/ipfs/Qmex3PcgJGbYsuDNaMXc8mg5fW1DNaPGiNToPpAAzz6GEq"],"license":"MIT"},"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":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"src/libraries/CurrencyDelta.sol":{"keccak256":"0x80dbd898cf0f90c5c27192689b16c34edc765d6ab21b8358e3bb792c7fef238c","urls":["bzz-raw://107698da024313f132d9fe28deb920b5c03d14624889c3ce5720e588f03635bb","dweb:/ipfs/QmQteUbhj5SsWbvSF6U8niBUSrETqVbEwULc8E7vS4Kbnn"],"license":"BUSL-1.1"},"src/libraries/CurrencyReserves.sol":{"keccak256":"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3","urls":["bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725","dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX"],"license":"BUSL-1.1"},"src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"src/libraries/FixedPoint128.sol":{"keccak256":"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542","urls":["bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb","dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy"],"license":"MIT"},"src/libraries/FixedPoint96.sol":{"keccak256":"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741","urls":["bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4","dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ"],"license":"MIT"},"src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"src/libraries/Hooks.sol":{"keccak256":"0xd679b4b2d429689bc44f136050ebc958fb2d7d0d3a3c7b3e48c08ab4fba09aaa","urls":["bzz-raw://287190cb72840e5eb63cc7a8a1d0b9150af17d8e4ea0323f47c7e7928f2033cb","dweb:/ipfs/QmVfqWBnAQM2jUcuREDdvjcP21gNuLU35CoL3NG5CEhNcx"],"license":"MIT"},"src/libraries/LPFeeLibrary.sol":{"keccak256":"0xbf6914e01014e7c1044111feb7df7a3d96bb503b3da827ad8464b1955580d13b","urls":["bzz-raw://33823c20a91882c9aacdcbb02f0558c05209f4d5954aa6dd4fa17c95664db475","dweb:/ipfs/QmR7owkFgpfztpp1QUg3ut3nw9iPVQqLGP4hzgmZtRUQ2J"],"license":"MIT"},"src/libraries/LiquidityMath.sol":{"keccak256":"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353","urls":["bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99","dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD"],"license":"MIT"},"src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"src/libraries/NonzeroDeltaCount.sol":{"keccak256":"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87","urls":["bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59","dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm"],"license":"BUSL-1.1"},"src/libraries/ParseBytes.sol":{"keccak256":"0x7533b13f53ee2c2c55500100b22ffd6e37e7523c27874edc98663d53a8672b15","urls":["bzz-raw://82449058634fde28a085f3c59a6a5f412550c02181590593fd84c3e8b329aa17","dweb:/ipfs/Qmev4E9Au6SsE4wsArChCwfg94KhHc5gYsEsZUnjF5sRLa"],"license":"MIT"},"src/libraries/Pool.sol":{"keccak256":"0xb8191707c5913f5e2f589cec5167e3fac4a5b86bd84f61fdba0fbe6a8ce8a3a0","urls":["bzz-raw://a609f9c365f05becf61877d9dc767e7825bce8c34607dbfc0f0437a71f6ff407","dweb:/ipfs/QmThDUzLePs2Hbp6XTpRSHT67rdsjQLhdmS6krm8cpKSey"],"license":"BUSL-1.1"},"src/libraries/Position.sol":{"keccak256":"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9","urls":["bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2","dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5"],"license":"BUSL-1.1"},"src/libraries/ProtocolFeeLibrary.sol":{"keccak256":"0xf483001899229ab10f5a626fe1c5866134d9e965b48ce6cf55ce0d7f74f7d8ec","urls":["bzz-raw://6ba9211a7f69bbb44649c35211eb29d193c09032ec600064ef9d04b4625dd8ba","dweb:/ipfs/QmQSjQvtguYgMJSkkKRhHjxasfX9xfTbrbcZ1QmjUVb787"],"license":"MIT"},"src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"src/libraries/SqrtPriceMath.sol":{"keccak256":"0xf8079fe6e3460db495451d06b1705e18f1c4075c1af96a31ad313545f7082982","urls":["bzz-raw://582fc51546723a0a8acccf782f69b530bacf9b3ef929458e82569b7121f0b138","dweb:/ipfs/QmSBXcmqZdFsM7M4sRaiyQAxykCeMNFKyKgBcwSMTw1bcF"],"license":"MIT"},"src/libraries/SwapMath.sol":{"keccak256":"0x6baa782ae523269c079cc763639a9b91a25fcfa1743c049c76e43741ef494bd9","urls":["bzz-raw://035c337e62e05262a5bd5d3bc85bc9a383c1013001216b429f49cf1e129a0812","dweb:/ipfs/QmU7s4h58Fh2A6mM8yeorZ2ygwEJMQw8zdZLLkHeDoSWxD"],"license":"MIT"},"src/libraries/TickBitmap.sol":{"keccak256":"0x6779f89e28a0b4af6e09d518caf014b7e8fc627400f5561f86fed11635b1458a","urls":["bzz-raw://a64dee983106de3be3f968be94368c1e37592f5418aa2a39e8dd358d5a962b0d","dweb:/ipfs/QmYuECZTiEeQVxDLYx6pBSSnVrg56Apw75bugQiM3FmGwy"],"license":"MIT"},"src/libraries/TickMath.sol":{"keccak256":"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8","urls":["bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70","dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva"],"license":"MIT"},"src/libraries/UnsafeMath.sol":{"keccak256":"0xa6e55e0a43a15df2df471d9972cd48f613d07c663ecb8bbeaf7623f6f99bcce4","urls":["bzz-raw://02ea6e13879fc5a5f35149a2f1cd8af3a1f0877ff69101dad53841d16f515572","dweb:/ipfs/QmcpL4gdG6hL2w1wqs2Vw4J1EFCwBs9T1Qd4p16CtECQkn"],"license":"MIT"},"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":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"},"src/types/Slot0.sol":{"keccak256":"0x8b4912fac7e25ea680056748121113f902d56f8b2640f421d5c38d438db11c1b","urls":["bzz-raw://c19b1ff5b951fb54129268d2be37d82c8bb3ea6e29ac9bc78a8a37794fc082b8","dweb:/ipfs/QmTAQ2mUoiT77hoWJAfn9pyoGy47qaevn45QHrbyovGt2C"],"license":"MIT"}},"version":1},"id":33}