{"abi":[{"type":"constructor","inputs":[{"name":"_poolManager","type":"address","internalType":"contract IPoolManager"},{"name":"_permit2","type":"address","internalType":"contract IAllowanceTransfer"},{"name":"_unsubscribeGasLimit","type":"uint256","internalType":"uint256"},{"name":"_tokenDescriptor","type":"address","internalType":"contract IPositionDescriptor"},{"name":"_weth9","type":"address","internalType":"contract IWETH9"}],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"WETH9","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IWETH9"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getApproved","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPoolAndPositionInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"poolKey","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":"info","type":"uint256","internalType":"PositionInfo"}],"stateMutability":"view"},{"type":"function","name":"getPositionLiquidity","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"liquidity","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"initializePool","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":"","type":"int24","internalType":"int24"}],"stateMutability":"payable"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"modifyLiquidities","inputs":[{"name":"unlockData","type":"bytes","internalType":"bytes"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"modifyLiquiditiesWithoutUnlock","inputs":[{"name":"actions","type":"bytes","internalType":"bytes"},{"name":"params","type":"bytes[]","internalType":"bytes[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"msgSender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"multicall","inputs":[{"name":"data","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nextTokenId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"nonces","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"word","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"bitmap","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"permit","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"permit","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"permitSingle","type":"tuple","internalType":"struct IAllowanceTransfer.PermitSingle","components":[{"name":"details","type":"tuple","internalType":"struct IAllowanceTransfer.PermitDetails","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint160","internalType":"uint160"},{"name":"expiration","type":"uint48","internalType":"uint48"},{"name":"nonce","type":"uint48","internalType":"uint48"}]},{"name":"spender","type":"address","internalType":"address"},{"name":"sigDeadline","type":"uint256","internalType":"uint256"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"err","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"permit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IAllowanceTransfer"}],"stateMutability":"view"},{"type":"function","name":"permitBatch","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"_permitBatch","type":"tuple","internalType":"struct IAllowanceTransfer.PermitBatch","components":[{"name":"details","type":"tuple[]","internalType":"struct IAllowanceTransfer.PermitDetails[]","components":[{"name":"token","type":"address","internalType":"address"},{"name":"amount","type":"uint160","internalType":"uint160"},{"name":"expiration","type":"uint48","internalType":"uint48"},{"name":"nonce","type":"uint48","internalType":"uint48"}]},{"name":"spender","type":"address","internalType":"address"},{"name":"sigDeadline","type":"uint256","internalType":"uint256"}]},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"err","type":"bytes","internalType":"bytes"}],"stateMutability":"payable"},{"type":"function","name":"permitForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"},{"name":"deadline","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"signature","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"poolKeys","inputs":[{"name":"poolId","type":"bytes25","internalType":"bytes25"}],"outputs":[{"name":"currency0","type":"address","internalType":"Currency"},{"name":"currency1","type":"address","internalType":"Currency"},{"name":"fee","type":"uint24","internalType":"uint24"},{"name":"tickSpacing","type":"int24","internalType":"int24"},{"name":"hooks","type":"address","internalType":"contract IHooks"}],"stateMutability":"view"},{"type":"function","name":"poolManager","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPoolManager"}],"stateMutability":"view"},{"type":"function","name":"positionInfo","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"info","type":"uint256","internalType":"PositionInfo"}],"stateMutability":"view"},{"type":"function","name":"revokeNonce","inputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"subscribe","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"newSubscriber","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"subscriber","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"subscriber","type":"address","internalType":"contract ISubscriber"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenDescriptor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPositionDescriptor"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"id","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlockCallback","inputs":[{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"unsubscribe","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"unsubscribeGasLimit","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"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"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","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":"Subscription","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"subscriber","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"id","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Unsubscription","inputs":[{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"subscriber","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AlreadySubscribed","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"subscriber","type":"address","internalType":"address"}]},{"type":"error","name":"BurnNotificationReverted","inputs":[{"name":"subscriber","type":"address","internalType":"address"},{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"ContractLocked","inputs":[]},{"type":"error","name":"DeadlinePassed","inputs":[{"name":"deadline","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"DeltaNotNegative","inputs":[{"name":"currency","type":"address","internalType":"Currency"}]},{"type":"error","name":"DeltaNotPositive","inputs":[{"name":"currency","type":"address","internalType":"Currency"}]},{"type":"error","name":"GasLimitTooLow","inputs":[]},{"type":"error","name":"InputLengthMismatch","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[]},{"type":"error","name":"InvalidContractSignature","inputs":[]},{"type":"error","name":"InvalidEthSender","inputs":[]},{"type":"error","name":"InvalidSignature","inputs":[]},{"type":"error","name":"InvalidSignatureLength","inputs":[]},{"type":"error","name":"InvalidSigner","inputs":[]},{"type":"error","name":"MaximumAmountExceeded","inputs":[{"name":"maximumAmount","type":"uint128","internalType":"uint128"},{"name":"amountRequested","type":"uint128","internalType":"uint128"}]},{"type":"error","name":"MinimumAmountInsufficient","inputs":[{"name":"minimumAmount","type":"uint128","internalType":"uint128"},{"name":"amountReceived","type":"uint128","internalType":"uint128"}]},{"type":"error","name":"ModifyLiquidityNotificationReverted","inputs":[{"name":"subscriber","type":"address","internalType":"address"},{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"NoCodeSubscriber","inputs":[]},{"type":"error","name":"NoSelfPermit","inputs":[]},{"type":"error","name":"NonceAlreadyUsed","inputs":[]},{"type":"error","name":"NotApproved","inputs":[{"name":"caller","type":"address","internalType":"address"}]},{"type":"error","name":"NotPoolManager","inputs":[]},{"type":"error","name":"NotSubscribed","inputs":[]},{"type":"error","name":"PoolManagerMustBeLocked","inputs":[]},{"type":"error","name":"SignatureDeadlineExpired","inputs":[]},{"type":"error","name":"SubscriptionReverted","inputs":[{"name":"subscriber","type":"address","internalType":"address"},{"name":"reason","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"Unauthorized","inputs":[]},{"type":"error","name":"UnsupportedAction","inputs":[{"name":"action","type":"uint256","internalType":"uint256"}]}],"bytecode":{"object":"0x61018080604052346105365760a0816162a38038038091610020828561053a565b8339810103126105365780516001600160a01b03811681036105365760208201516001600160a01b03811681036105365760408301516060840151936001600160a01b03851685036105365760800151926001600160a01b03841684036105365760405161008f60408261053a565b6018815260208101907f556e697377617020763420506f736974696f6e73204e4654000000000000000082526040516100c960408261053a565b600b81526a554e492d56342d504f534d60a81b602082015281516001600160401b03811161044a575f54600181811c9116801561052c575b602082101461042c57601f81116104ca575b50806020601f8211600114610469575f9161045e575b508160011b915f199060031b1c1916175f555b8051906001600160401b03821161044a5760015490600182811c92168015610440575b602083101461042c5781601f8493116103be575b50602090601f8311600114610358575f9261034d575b50508160011b915f199060031b1c1916176001555b5190208060c0524660a05260405160208101917f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86683526040820152466060820152306080820152608081526101f460a08261053a565b51902060805260e052610100526101205261014052600160085561016052604051615d45908161055e8239608051816124d5015260a051816124af015260c05181612524015260e051818181610af601528181610eb501528181611174015281816118c001528181611c3c01528181611cd1015281816120a1015281816121980152818161295801528181612a2c01528181612f1b01528181613d4601528181613e3901528181613edc01528181613ff30152818161431b0152818161457401528181614ae901528181614c6601528181614de401528181614ec901528181614f59015261576f01526101005181818161144001526131fb01526101205181818161039c01528181610a0e01528181610dc90152614efa015261014051818181611482015281816129ca01528181613a4201528181613a9e01528181613bc20152613c4b0152610160518181816116350152611fab0152f35b015190505f80610189565b60015f9081528281209350601f198516905b8181106103a6575090846001959493921061038e575b505050811b0160015561019e565b01515f1960f88460031b161c191690555f8080610380565b9293602060018192878601518155019501930161036a565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c81019160208510610422575b90601f859493920160051c01905b8181106104145750610173565b5f8155849350600101610407565b90915081906103f9565b634e487b7160e01b5f52602260045260245ffd5b91607f169161015f565b634e487b7160e01b5f52604160045260245ffd5b90508301515f610129565b5f8080528181209250601f198416905b8181106104b25750908360019493921061049a575b5050811b015f5561013c565b8501515f1960f88460031b161c191690555f8061048e565b9192602060018192868a015181550194019201610479565b5f80527f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563601f830160051c81019160208410610522575b601f0160051c01905b8181106105175750610113565b5f815560010161050a565b9091508190610501565b90607f1690610101565b5f80fd5b601f909101601f19168101906001600160401b0382119082101761044a5760405256fe60806040526004361015610022575b3615610018575f80fd5b6100206129c0565b005b5f3560e01c80622a3e3a1461029057806301ffc9a71461028b57806305c1ee201461028657806306fdde0314610281578063081812fc1461027c578063095ea7b3146102775780630f5730f11461027257806312261ee71461026d57806316a24131146102685780631efeed331461026357806323b872dd1461025e5780632b67b570146102595780632b9261de146102545780633644e5151461024f5780633aea60f01461024a57806342842e0e146102455780634767565f146102405780634aa4a4fc1461023b5780634afe393c14610236578063502e1a16146102315780635a9d7a681461022c5780636352211e1461022757806370a082311461022257806375794a3c1461021d5780637ba03aad1461021857806386b6be7d1461021357806389097a6a1461020e57806391dd73461461020957806395d89b4114610204578063a22cb465146101ff578063ac9650d8146101fa578063ad0b27fb146101f5578063b88d4fde146101f0578063c87b56dd146101eb578063d737d0c7146101e6578063dc4c90d3146101e1578063dd46508f146101dc578063e985e9c5146101d75763f70204050361000e576122ae565b612248565b6120c5565b612082565b61203d565b611f56565b611c7c565b611c28565b611b2b565b611a7b565b6119c6565b611884565b61185a565b6117be565b61174f565b611732565b611688565b611659565b611616565b6115cc565b6114d7565b611463565b611429565b611161565b611088565b611057565b610e72565b610d58565b610ae2565b610a65565b610a32565b6109ef565b6108e0565b610839565b610806565b6106ef565b61063e565b61056c565b61033c565b6001600160a01b038116036102a657565b5f80fd5b35906102b582610295565b565b9181601f840112156102a65782359167ffffffffffffffff83116102a657602083818601950101116102a657565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060206103399281815201906102e5565b90565b60606003193601126102a65760043561035481610295565b6024359067ffffffffffffffff82116102a6578136039160606003198401126102a65760443567ffffffffffffffff81116102a6576103979036906004016102b7565b6060947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693909290843b156102a6576001600160a01b03604051967f2a2d80d10000000000000000000000000000000000000000000000000000000088521660048701526060602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156102a65781016024600482013591019467ffffffffffffffff82116102a6578160071b360386136102a65760606064890152819052869460e48601949392915f5b81811061051a575050506104cb5f9694869488946044856104b36104a360248b99016102aa565b6001600160a01b03166084890152565b013560a48601526003198584030160448601526123c0565b03925af19081610500575b506104f757506104f36104e7612466565b60405191829182610328565b0390f35b6104f3906104e7565b8061050e5f610514936106ae565b80610656565b5f6104d6565b91965091929394608080826105316001948b612361565b01970191019188969594939261047c565b7fffffffff000000000000000000000000000000000000000000000000000000008116036102a657565b346102a65760206003193601126102a65760207fffffffff000000000000000000000000000000000000000000000000000000006004356105ac81610542565b167f01ffc9a7000000000000000000000000000000000000000000000000000000008114908115610614575b81156105ea575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150145f6105df565b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491506105d8565b60206003193601126102a65761002060043533612a54565b5f9103126102a657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176106a957604052565b610660565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a957604052565b346102a6575f6003193601126102a6576040515f80548060011c90600181169081156107fc575b6020831082146107cf5782855260208501919081156107985750600114610748575b6104f3846104e7818603826106ae565b5f8080529250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818410610784575050016104e782610738565b805484840152602090930192600101610771565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b0190506104e782610738565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610716565b346102a65760206003193601126102a6576004355f52600460205260206001600160a01b0360405f205416604051908152f35b346102a65760406003193601126102a65760043561085681610295565b602435805f5260026020526001600160a01b0360405f2054169182331415806108af575b6108875761002092612ab5565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b50825f52600560205260ff6108d83360405f20906001600160a01b03165f5260205260405f2090565b54161561087a565b60a06003193601126102a6576004356108f881610295565b602435604435916064359260843567ffffffffffffffff81116102a6576109239036906004016102b7565b948242116109c7576109bc856109c293610020986109b6885f8099868252600260205281896001600160a01b036040832054169c8d9981604051977f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad89526001600160a01b0360208a01911681526040890192835260608901948552608089019687528160a08a20995252525252612b2c565b91612be5565b82612a54565b612ab5565b7f5a9165ff000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576004355f52600760205260206001600160a01b0360405f205416604051908152f35b346102a65760206003193601126102a6576020610a9c600435610a8781612669565b919082851c60020b9260081c60020b91612e68565b6fffffffffffffffffffffffffffffffff60405191168152f35b60031960609101126102a657600435610ace81610295565b90602435610adb81610295565b9060443590565b346102a657610af036610ab6565b91610b1a7f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30578291610c41610b54610b48610b3b865f52600260205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b91610b6a6001600160a01b03851693841461302f565b610bb46001600160a01b03821694610b83861515613094565b8433148015610cf2575b8015610ccd575b610b9d906130f9565b6001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610bf5816001600160a01b03165f52600360205260405f2090565b80546001019055610c0e855f52600260205260405f2090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b610c7e610c56845f52600460205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4610cbe610cb7825f52600960205260405f2090565b5460ff1690565b610cc457005b6100209061315e565b50610b9d610ce9610b48610b3b8a5f52600460205260405f2090565b33149050610b94565b50610d2b610cb733610d15846001600160a01b03165f52600560205260405f2090565b906001600160a01b03165f5260205260405f2090565b610b8d565b7fd4b05fe0000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101006003193601126102a657600435610d7181610295565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102a65760e43567ffffffffffffffff81116102a657610dbb9036906004016102b7565b916060926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576001600160a01b035f80946104cb604051978896879586947f2b67b570000000000000000000000000000000000000000000000000000000008652166004850152610e3d602485016122f6565b6001600160a01b0360a435610e5181610295565b1660a485015260c43560c485015261010060e48501526101048401916123c0565b60606003193601126102a657602435600435610e8d82610295565b60443567ffffffffffffffff81116102a657610ead9036906004016102b7565b610ed99391937f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057610ee783336132b6565b1561102b576001600160a01b03610f09610b3b855f52600760205260405f2090565b1680610fef57505f83815260096020526040902080546001179055610fbf90610fbb90610fb56001600160a01b03851696610f5088610c0e895f52600760205260405f2090565b610f896040519384927f8d57f6b20000000000000000000000000000000000000000000000000000000060208501528960248501612495565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826106ae565b8361334b565b1590565b610fea57507f9709492381f90bdc5938bb4e3b8e35b7e0eac8af058619e27191c5a40ce79fa95f80a3005b61338c565b7f25fbd8be000000000000000000000000000000000000000000000000000000005f5260048490526001600160a01b031660245260445ffd5b5ffd5b7f0ca968d8000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346102a6575f6003193601126102a65760206110716124ac565b604051908152f35b6044359081151582036102a657565b60c06003193601126102a6576004356110a081610295565b6024356110ac81610295565b6110b4611079565b906064359260843560a43567ffffffffffffffff81116102a6576110dc9036906004016102b7565b8692919242116109c7578361115c936109bc926109b6885f6100209c8189818f81604051977f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f7689526001600160a01b0360208a0191168152600160408a019316835260608901948552608089019687528160a08a20995252525252612b2c565b6136b8565b346102a65761116f36610ab6565b6111987f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30576111b4610b48610b3b835f52600260205260405f2090565b916111ca6001600160a01b03851693841461302f565b816001600160a01b03821680946111e2821515613094565b8033148015611401575b80156113dc575b6111fc906130f9565b611217876001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611258846001600160a01b03165f52600360205260405f2090565b8054600101905561127584610c0e855f52600260205260405f2090565b61128a610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a46112c3610cb7835f52600960205260405f2090565b6113ce575b3b159182156112db575b6100208361257e565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039490941660248501526044840191909152608060648401525f6084840181905260209250839160a49183915af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f9161139a575b5016145f806112d2565b6113bc915060203d6020116113c2575b6113b481836106ae565b810190612569565b5f611390565b503d6113aa565b6123fe565b6113d78261315e565b6112c8565b506111fc6113f8610b48610b3b865f52600460205260405f2090565b331490506111f3565b50611424610cb733610d158a6001600160a01b03165f52600560205260405f2090565b6111ec565b346102a6575f6003193601126102a65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156102a65782359167ffffffffffffffff83116102a6576020808501948460051b0101116102a657565b60406003193601126102a65760043567ffffffffffffffff81116102a6576115039036906004016102b7565b60243567ffffffffffffffff81116102a6576115239036906004016114a6565b916001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a45761157f93337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d61376b565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a65760406003193601126102a6576004356115e981610295565b6001600160a01b0360243591165f52600660205260405f20905f52602052602060405f2054604051908152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576020611677600435612648565b6001600160a01b0360405191168152f35b346102a65760206003193601126102a6576001600160a01b036004356116ad81610295565b1680156116d4575f5260036020526104f360405f2054604051918291829190602083019252565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b346102a6575f6003193601126102a6576020600854604051908152f35b346102a65760206003193601126102a65760c061176d600435612669565b6117b760405180936001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a0820152f35b346102a65760206003193601126102a6576004357fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000081168091036102a6575f908152600a60209081526040918290208054600182015460029283015485516001600160a01b0393841681528383169581019590955260a082811c62ffffff169686019690965260b89190911c90920b6060840152166080820152f35b346102a65760206003193601126102a6576004355f526009602052602060405f2054604051908152f35b346102a65760206003193601126102a65760043567ffffffffffffffff81116102a6576118b59036906004016102b7565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361199e5760408135189063ffffffff60408201351663ffffffe0601f8201169260608401602084013518179282019260608401359483641fffffffe08760051b16805f905b8881831061196f5790506080929150010191011017611962576060608063ffffffff61195796169401920161376b565b6104f36104e7612452565b633b99b53d5f526004601cfd5b8294509263ffffffe0601f60808060209687969801013599848b1817998d010135011601019201869291611927565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a6576040515f6001548060011c9060018116908115611a71575b6020831082146107cf5782855260208501919081156107985750600114611a1f576104f3846104e7818603826106ae565b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b818410611a5d575050016104e782610738565b805484840152602090930192600101611a4a565b91607f16916119ee565b346102a65760406003193601126102a657600435611a9881610295565b60243580151581036102a65761002091336136b8565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611ae057505050505090565b9091929394602080611b1c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102e5565b97019301930191939290611ad1565b60206003193601126102a65760043567ffffffffffffffff81116102a657611b579036906004016114a6565b90611b6182612747565b91611b6f60405193846106ae565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611b9c82612747565b015f5b818110611c175750505f5b818110611bbf57604051806104f38682611aae565b5f80611bcc83858761278c565b90611bdc604051809381936127f1565b0390305af4611be9612466565b9015611c0f5790600191611bfd82876127fe565b52611c0881866127fe565b5001611baa565b602081519101fd5b806060602080938801015201611b9f565b60206003193601126102a657600435611c607f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611c6e81336132b6565b1561102b576100209061315e565b346102a65760806003193601126102a657600435611c9981610295565b60243590611ca682610295565b60443560643567ffffffffffffffff81116102a657611cc99036906004016102b7565b939091611cf57f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611d11610b48610b3b835f52600260205260405f2090565b91611d276001600160a01b03861693841461302f565b816001600160a01b0382168094611d3f821515613094565b8033148015611f2e575b8015611f09575b611d59906130f9565b611d74886001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611db5846001600160a01b03165f52600360205260405f2090565b80546001019055611dd284610c0e855f52600260205260405f2090565b611de7610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611e20610cb7835f52600960205260405f2090565b611efb575b3b15938415611e38575b6100208561257e565b602094505f90611e78604051978896879586947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701612812565b03925af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91611edc575b5016145f808080611e2f565b611ef5915060203d6020116113c2576113b481836106ae565b5f611ed0565b611f048261315e565b611e25565b50611d59611f25610b48610b3b865f52600460205260405f2090565b33149050611d50565b50611f51610cb733610d158b6001600160a01b03165f52600560205260405f2090565b611d49565b346102a65760206003193601126102a657600435604051907fe9dc637500000000000000000000000000000000000000000000000000000000825230600483015260248201525f816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9575f90611fea575b6104f39060405191829182610328565b503d805f833e611ffa81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a6570181601f820112156102a6576104f39181602061203893519101612840565b611fda565b346102a6575f6003193601126102a65760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6001600160a01b0360405191168152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b60406003193601126102a65760043567ffffffffffffffff81116102a6576120f19036906004016102b7565b6024356001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a457337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d80421161221d576040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f818061218b6024820187896123c0565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9576121cd575b610020613746565b3d805f833e6121dc81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a657019080601f830112156102a657815161221692602001612840565b50806121c5565b7fbfb22adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102a65760406003193601126102a657602060ff6122a260043561226c81610295565b6001600160a01b036024359161228183610295565b165f526005845260405f20906001600160a01b03165f5260205260405f2090565b54166040519015158152f35b600319360160c081126102a65760a0136102a65760206122d860a4356122d381610295565b6128a3565b6040519060020b8152f35b359065ffffffffffff821682036102a657565b6001600160a01b0360243561230a81610295565b1681526001600160a01b0360443561232181610295565b16602082015260643565ffffffffffff81168091036102a657604082015260843565ffffffffffff811681036102a65765ffffffffffff60609116910152565b65ffffffffffff6123ba606080936001600160a01b03813561238281610295565b1686526001600160a01b03602082013561239b81610295565b166020870152836123ae604083016122e3565b166040870152016122e3565b16910152565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6040513d5f823e3d90fd5b604051906102b56080836106ae565b67ffffffffffffffff81116106a957601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b604051906124616020836106ae565b5f8252565b3d15612490573d9061247782612418565b9161248560405193846106ae565b82523d5f602084013e565b606090565b6040906103399492815281602082015201916123c0565b467f0000000000000000000000000000000000000000000000000000000000000000036124f7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f000000000000000000000000000000000000000000000000000000000000000060408201524660608201523060808201526080815261256360a0826106ae565b51902090565b908160209103126102a6575161033981610542565b1561258557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fd5b156125ea57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b5f5260026020526001600160a01b0360405f205416906102b58215156125e3565b5f60806040516126788161068d565b82815282602082015282604082015282606082015201525f52600960205260405f2054807fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f206127446127346002604051936126de8561068d565b6001600160a01b03815416855261272661271c60018301546001600160a01b038116602089015262ffffff8160a01c16604089015260b81c60020b90565b60020b6060870152565b01546001600160a01b031690565b6001600160a01b03166080830152565b91565b67ffffffffffffffff81116106a95760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156127ec5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102a657019081359167ffffffffffffffff83116102a65760200182360381136102a6579190565b61275f565b908092918237015f815290565b80518210156127ec5760209160051b010190565b90926001600160a01b03608093816103399896168452166020830152604082015281606082015201916123c0565b92919261284c82612418565b9161285a60405193846106ae565b8294818452818301116102a6578281602093845f96015e010152565b8060020b036102a657565b908160209103126102a6575161033981612876565b62ffffff8116036102a657565b6001600160a01b03604051917f6276cbbe000000000000000000000000000000000000000000000000000000008352816004356128df81610295565b166004840152816024356128f281610295565b16602484015262ffffff60443561290881612896565b16604484015260643561291a81612876565b60020b606484015261294160843561293181610295565b6001600160a01b03166084850152565b1660a482015260208160c4815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af15f918161298f575b506103395750627fffff90565b6129b291925060203d6020116129b9575b6129aa81836106ae565b810190612881565b905f612982565b503d6129a0565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633141580612a21575b6129f957565b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314156129f3565b906001600160a01b03600160ff83161b92165f52600660205260405f209060081c5f5260205260405f20818154188091551615612a8d57565b7f1fb09b80000000000000000000000000000000000000000000000000000000005f5260045ffd5b906001600160a01b038091845f526004602052612b038160405f20906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4565b90612b356124ac565b91604051927f19010000000000000000000000000000000000000000000000000000000000008452600284015260228301525f604060428420938281528260208201520152565b91908260409103126102a6576020823592013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff601b9116019060ff8211612bd157565b612b92565b90604010156127ec5760400190565b90833b612d7a5760418103612cee5790602092612c6e83612c46612c40612c1a612c125f98880188612b7c565b949097612bd6565b357fff000000000000000000000000000000000000000000000000000000000000001690565b60f81c90565b935b604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156113c9576001600160a01b035f5116908115612cc6576001600160a01b031603612c9e57565b7f815e1d64000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b9060408203612d5257602092612d0b825f94612c6e940190612b7c565b929092612d4c612d47612d417f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c90565b60ff1690565b612bbf565b93612c48565b7f4be6321b000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092612dc1936001600160a01b03602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501612495565b0392165afa9081156113c9577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000915f91612e49575b501603612e2157565b7fb0669cbc000000000000000000000000000000000000000000000000000000005f5260045ffd5b612e62915060203d6020116113c2576113b481836106ae565b5f612e18565b9290612ea39260a092604051956026870152600686015260038501523084525f603a600c860120948160408201528160208201525220614bbf565b60068101809111612bd15760408051602081810194855291810192909252612f0f929091612ed48160608101610f89565b519020604051809381927f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9576fffffffffffffffffffffffffffffffff915f91612f6057501690565b612f82915060203d602011612f86575b612f7a81836106ae565b810190612f8d565b1690565b503d612f70565b908160209103126102a6575190565b60206001600160a01b03916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156113c9575f91613010575b50151590565b613029915060203d602011612f8657612f7a81836106ae565b5f61300a565b1561303657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b1561309b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b1561310057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b6001600160a01b0361317b610b3b835f52600760205260405f2090565b1690811561328e575f81815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556131cb610c56825f52600760205260405f2090565b813b6131f8575b7fa0ebb1de82db929a9153472f37d3a66dbede4436258311ad0f52a35a2c91d1505f80a3565b5a7f000000000000000000000000000000000000000000000000000000000000000080911061328957823b156102a6575f60405180927faf45dd140000000000000000000000000000000000000000000000000000000082528183878261326789600483019190602083019252565b0393f1613275575b506131d2565b8061050e5f613283936106ae565b5f61326f565b6137d4565b7f237e6c28000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b036132c783612648565b16916001600160a01b03821692831492831561332a575b5082156132ea57505090565b60ff9250906001600160a01b0361330361332593612648565b165f52600560205260405f20906001600160a01b03165f5260205260405f2090565b541690565b908093505f5260046020526001600160a01b0360405f20541614915f6132de565b803b1561336457815f92918360208194519301915af190565b7f7c402b21000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f8d57f6b2000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f81ea5e9e0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fb1a9116f000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7face944810000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60206001600160a01b03807f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31931693845f526005835261370c8160405f20906001600160a01b03165f5260205260405f2090565b951515957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff88161790556040519586521693a3565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d565b909291938284036137ac575f5b848110156137a45760019061379e81850161379483888b61278c565b913560f81c6137fc565b01613778565b509350505050565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fed43c3a6000000000000000000000000000000000000000000000000000000005f5260045ffd5b909190600b8110156139175780613827575061381b906102b5926149cc565b94939093929192614b63565b60048103613846575061383d906102b592614185565b93929092614a79565b60018103613868575061385c906102b5926149cc565b94939093929192614a0e565b600281036138975750613881613891916102b5936145df565b9890979691959295949394613cc2565b9561478a565b600581036138c357506138b06138bd916102b593614481565b9790969591949294613cc2565b94614543565b91600383146138ff57505061102891505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f52600452602490565b6102b592509061390e91614185565b939290926141c1565b600d8103613933575061392d906102b592613caf565b90614147565b6011810361395b575061394c613955916102b593613e9e565b92909192613cc2565b9161412c565b600b810361398f5750613989613977613983926102b594613e9e565b93829493929193613f73565b92613fa1565b91613fe2565b600e81036139c157506139b56139ab6139bb926102b594613e9e565b9282949291613cc2565b92613eb6565b91613eca565b601281036139dc57506139d7906102b592613ac8565b613e32565b601381036139f857506139f2906102b592613caf565b90613d25565b60148103613a1f5750613a11613a19916102b593613caf565b919091613cc2565b90613d07565b60158103613a6d5750613a38613a68916102b593613ac8565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690613b54565b613c39565b9160168314613a8257505061102891506138d4565b6102b59250613ac391613a9491613ac8565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613ad4565b613bb0565b90602011611962573590565b613adf903090614bdf565b7f80000000000000000000000000000000000000000000000000000000000000008214613b4f578115613b3e575b8111613b165790565b7ff4d678b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050613b495f614c5f565b90613b0d565b905090565b90613b5f305f614bdf565b907f80000000000000000000000000000000000000000000000000000000000000008314613baa578215613b98575b508111613b165790565b613ba3919250614c5f565b905f613b8e565b50905090565b80613bb85750565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b156102a6575f916024839260405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af180156113c957613c2f5750565b5f6102b5916106ae565b80613c415750565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af180156113c957613c2f5750565b9190604011611962576020823592013590565b6001600160a01b03811660018103613cfb5750507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b60020361033957503090565b90613d1182614cd1565b9081613d1c57505050565b6102b592614d37565b90613d2f82614ddd565b908115613e01578111613dd5576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6575f9283926040519485809481937f80f0b44c0000000000000000000000000000000000000000000000000000000083526020600484016001600160a01b036040820194168152015203925af180156113c957613dc75750565b8061050e5f6102b5936106ae565b6102b5917f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90613eca565b505050565b7f80000000000000000000000000000000000000000000000000000000000000008114612bd1575f0390565b613e5d81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b907f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5f831215613e94576139896102b593613e06565b6102b59291613eca565b90606011611962578035916040602083013592013590565b9081613ec6576103399150614ddd565b5090565b90918015613e01576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156113c957613f5e5750565b80613f6a5f80936106ae565b8003126102a657565b15613f9d577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b3090565b907f80000000000000000000000000000000000000000000000000000000000000008203613fd3576103399150614cd1565b81613ec6576103399150614c5f565b908215613e01576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f8160248183885af180156113c957614118575b506001600160a01b0381166140ce5750506020906004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b6140cb9060203d602011612f8657612f7a81836106ae565b50565b5f93602093926140dd92614ea7565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b8061050e5f614126936106ae565b5f614064565b9161413e6102b593826139bb82614ddd565b6139bb82614ddd565b906102b59161417c7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c918261398982614c5f565b61398982614c5f565b919082359260208101359260408201359263ffffffff60608401351683019063ffffffff82351693602080840193860101910110611962579190565b939290927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6141f186826132b6565b156143ae575061420085612669565b9290938360081c60020b958460201c60020b9661423761422289838a8d612e68565b6fffffffffffffffffffffffffffffffff1690565b966142418a612648565b955f6142558c5f52600960205260405f2090565b5561425f8b614faa565b5f9989614291575b505050505050508160ff1661427e575b5050505050565b614287946151b4565b5f80808080614277565b60409495969a509061430e916142d16142b16142ac8d61507e565b613e06565b916142c76142bd612409565b97889060020b9052565b60020b6020870152565b858501528b606085015284519a8b9485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9575f965f9161436e575b509061435d826143629493986150b0565b6150ed565b5f808080808080614267565b61435d97506143629392915061439b9060403d6040116143a7575b61439381836106ae565b8101906143e3565b9790979192935061434c565b503d614389565b6001600160a01b03907f0ca968d8000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b91908260409103126102a6576020825192015190565b6060610339959361444a83610140956001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60a0840152602081015160020b60c0840152604081015160e084015201516101008201528161012082015201916123c0565b91908260a08101359260c08201359260e083013592610100810135926101208201359263ffffffff6101408401351683019063ffffffff82351693602080840193860101910110611962579190565b91908260a09103126102a6576040516144e88161068d565b608080829480356144f881610295565b8452602081013561450881610295565b6020850152604081013561451b81612896565b6040850152606081013561452e81612876565b606085015201359161453f83610295565b0152565b90916102b59796959493926fffffffffffffffffffffffffffffffff6145d861459860a061457136886144d0565b207f0000000000000000000000000000000000000000000000000000000000000000615264565b5050506145a484615303565b6145ad86615303565b6145c088356145bb81610295565b614ddd565b916145d260208a01356145bb81610295565b9361564f565b169261478a565b9091819260a08301359260c08101359260e08201359261010083013592610120810135926101408201359263ffffffff6101608401351683019063ffffffff82351693602080840193860101910110611962579190565b600260806102b593614680813561464c81610295565b85906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b600184016146c9602083013561469581610295565b82906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60408201356146d781612896565b81547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000606086013561472081612876565b60b81b79ffffff0000000000000000000000000000000000000000000000169360a01b1691161717905501359161475683610295565b01906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b90919496929793959760085492600184016008556001600160a01b038a16996147b48b1515613094565b845f5260026020526001600160a01b0360405f20541661496e5761488a6149259861491f93876102b59e61481986614800614917986001600160a01b03165f52600360205260405f2090565b80546001019055610c0e845f52600260205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a461484836886144d0565b63ffffff007fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000060a066ffffff000000009320169260081b169260201b16171790565b928361489e875f52600960205260405f2090565b55837fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000168561490760016148fc847fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b015460b81c60020b90565b60020b1561492b575b505061507e565b9236906144d0565b906156fc565b506157de565b614962614967927fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b614636565b5f85614910565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152fd5b909181359260208301359260408101359260608201359263ffffffff60808401351683019063ffffffff82351693602080840193860101910110611962579190565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614a4283826132b6565b156143ae57509561435d92826142ac6102b59899614a6d614a65614a7397612669565b93909261507e565b916156fc565b906150b0565b949394929091927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614aac82826132b6565b156143ae57506102b59495614b5e9282614ac8614a7394612669565b90614a6d6fffffffffffffffffffffffffffffffff614b58614b0d60a085207f0000000000000000000000000000000000000000000000000000000000000000615264565b505050614b1f8660081c60020b615303565b614b2e8760201c60020b615303565b614b416001600160a01b03885116614ddd565b916145d26001600160a01b0360208a015116614ddd565b1661507e565b6157de565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614b9783826132b6565b156143ae575095614b5e9282614a6d6102b59899614bb7614a7396612669565b92909161507e565b6040516020810191825260066040820152604081526125636060826106ae565b6001600160a01b038116614bf257503190565b906001600160a01b0360246020928260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa9081156113c9575f91614c46575090565b610339915060203d602011612f8657612f7a81836106ae565b614c8a81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8213614c9c575061033990613e06565b6001600160a01b03907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b038116614ce457504790565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290602090829060249082906001600160a01b03165afa9081156113c9575f91614c46575090565b9091906001600160a01b038116614d6457505f808080614d5894865af11590565b614d5f5750565b613532565b91906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d11600185511416171692828152826020820152015215614dcf5750565b6001600160a01b031661345f565b614e0881307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8212614e14575090565b6001600160a01b03907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b03809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa9081156113c9575f91614c46575090565b9091906001600160a01b0383163003614eef576102b592506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690614d37565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0394851660048201527f00000000000000000000000000000000000000000000000000000000000000008516602482015291841660448301529190921660648301525f908290608490829084905af180156113c957613dc75750565b805f5260026020525f6001600160a01b03604082205416614fcc8115156125e3565b8082526003602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055615010835f52600260205260405f2090565b80548360031b906001600160a01b03808616831b921b191617905561503d835f52600460205260405f2090565b80548360031b906001600160a01b03808616831b921b19161790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4565b905f821261508857565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b6150d3906150c58360801d8260801d0361592c565b92600f0b90600f0b0361592c565b6fffffffffffffffffffffffffffffffff169060801b1790565b929190926fffffffffffffffffffffffffffffffff8160801d94816151118761593a565b9116918291161061519957506fffffffffffffffffffffffffffffffff929350600f0b908261513f8361593a565b9116928391161061514e575050565b906151696fffffffffffffffffffffffffffffffff9261593a565b907f12816f22000000000000000000000000000000000000000000000000000000005f526004521660245260445ffd5b6fffffffffffffffffffffffffffffffff906151698661593a565b5f81815260076020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091556001600160a01b039081169561525895610fbb959394919390929091604051957fb1a9116f00000000000000000000000000000000000000000000000000000000602088015260248701521660448501526064840152608483015260a482015260a48152610fb560c4826106ae565b61525f5750565b6135e5565b602090602461527b6001600160a01b039594614bbf565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156113c9575f926152e2575b506001600160a01b038216918060a01c60020b9162ffffff808360b81c169260d01c1690565b6152fc91925060203d602011612f8657612f7a81836106ae565b905f6152bc565b60020b908160ff1d82810118620d89e881116156495763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018916002811661562d575b60048116615611575b600881166155f5575b601081166155d9575b602081166155bd575b604081166155a1575b60808116615585575b6101008116615569575b610200811661554d575b6104008116615531575b6108008116615515575b61100081166154f9575b61200081166154dd575b61400081166154c1575b61800081166154a5575b620100008116615489575b62020000811661546e575b620400008116615453575b620800001661543a575b5f12615413575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0461540c565b6b048a170391f7dc42444e8fa290910260801c90615405565b6d2216e584f5fa1ea926041bedfe9890920260801c916153fb565b916e5d6af8dedb81196699c329225ee6040260801c916153f0565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916153e5565b916f31be135f97d08fd981231505542fcfa60260801c916153da565b916f70d869a156d2a1b890bb3df62baf32f70260801c916153d0565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916153c6565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916153bc565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916153b2565b916ff3392b0822b70005940c7a398e4b70f30260801c916153a8565b916ff987a7253ac413176f2b074cf7815e540260801c9161539e565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91615394565b916ffe5dee046a99a2a811c461f1969c30530260801c9161538a565b916fff2ea16466c96a3843ec78b326b528610260801c91615381565b916fff973b41fa98c081472e6896dfb254c00260801c91615378565b916fffcb9843d60f6159c9db58835c9266440260801c9161536f565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91615366565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161535d565b916ffff97272373d413259a46990580e213a0260801c91615354565b82615959565b936001600160a01b0383166001600160a01b038316116156f4575b6001600160a01b0385811695908316861161568b57505061033993506159b7565b92909391946001600160a01b038216115f146156e85782916156b1916156b795946159b7565b93615987565b6fffffffffffffffffffffffffffffffff81166fffffffffffffffffffffffffffffffff8316105f14613b4f575090565b91505061033992615987565b90919061566a565b95939460409161576261570d612409565b60088a901c60020b81529260208a811c60020b908501528585850152866060850152845198899485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156113c9575f945f926157ba575b5081949560ff166157b157505050565b6102b592615a00565b9094506157d6915060403d6040116143a75761439381836106ae565b90935f6157a1565b908160801d600f0b91600f0b915f8112806158f7575b6158955750505f81128061585e575b61580b575050565b9061581b61422261102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff91821660045216602452604490565b506fffffffffffffffffffffffffffffffff8061587a83613e06565b16166fffffffffffffffffffffffffffffffff831610615803565b906fffffffffffffffffffffffffffffffff6158b361102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff9283166004521616602452604490565b506fffffffffffffffffffffffffffffffff61591282613e06565b166fffffffffffffffffffffffffffffffff8316106157f4565b9081600f0b91820361508857565b5f81600f0b12615088576fffffffffffffffffffffffffffffffff1690565b7f8b86327a000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b916001600160a01b03610339936159ac93828116838316116159b1575b031690615b43565b615d1b565b906159a4565b916159ac91610339936001600160a01b0382166001600160a01b038216116159fa575b6001600160a01b03906159f1828416838316615bff565b92031691615c79565b906159da565b615a6a9192815f5260076020526001600160a01b0360405f20541693604051927fd8865c2700000000000000000000000000000000000000000000000000000000602085015260248401526044830152606482015260648152615a646084826106ae565b8261334b565b15615a725750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fd8865c27000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fe94f10e20000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b156102a657565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000008409928280851094039380850394615b91868511615b3c565b14615bf8576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156102a65714615c70576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395615cb9878611615b3c565b14615d13579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b906fffffffffffffffffffffffffffffffff82168092036150885756fea164736f6c634300081a000a","sourceMap":"8042:20055:34:-:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;8042:20055:34;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;1219:22:37;;1204:37;;;1271:13;8042:20055:34;1252:32:37;8042:20055:34;;;1816:66:37;;1075:80;;;;8042:20055:34;1075:80:37;;;1271:13;8042:20055:34;1075:80:37;;;1876:4;8042:20055:34;1075:80:37;;;8042:20055:34;1816:66:37;;;8042:20055:34;1816:66:37;;:::i;:::-;8042:20055:34;1806:77:37;;8042:20055:34;1294:50:37;782:26:39;;903:42:42;;553:18:43;;588:14:41;;8042:20055:34;8644:1;8042:20055;9269:34;;8042:20055;;;;;;;;;;;;;;;;;;;;1204:37:37;8042:20055:34;;;;;782:26:39;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;903:42:42;8042:20055:34;;;;;;;;;;553:18:43;8042:20055:34;;;;;;;;;;;;;;;;;;;;588:14:41;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9269:34;8042:20055;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;-1:-1:-1;8042:20055:34;;;;;;;-1:-1:-1;;;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;-1:-1:-1;8042:20055:34;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;-1:-1:-1;8042:20055:34;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;-1:-1:-1;;;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;-1:-1:-1;;8042:20055:34;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361015610022575b3615610018575f80fd5b6100206129c0565b005b5f3560e01c80622a3e3a1461029057806301ffc9a71461028b57806305c1ee201461028657806306fdde0314610281578063081812fc1461027c578063095ea7b3146102775780630f5730f11461027257806312261ee71461026d57806316a24131146102685780631efeed331461026357806323b872dd1461025e5780632b67b570146102595780632b9261de146102545780633644e5151461024f5780633aea60f01461024a57806342842e0e146102455780634767565f146102405780634aa4a4fc1461023b5780634afe393c14610236578063502e1a16146102315780635a9d7a681461022c5780636352211e1461022757806370a082311461022257806375794a3c1461021d5780637ba03aad1461021857806386b6be7d1461021357806389097a6a1461020e57806391dd73461461020957806395d89b4114610204578063a22cb465146101ff578063ac9650d8146101fa578063ad0b27fb146101f5578063b88d4fde146101f0578063c87b56dd146101eb578063d737d0c7146101e6578063dc4c90d3146101e1578063dd46508f146101dc578063e985e9c5146101d75763f70204050361000e576122ae565b612248565b6120c5565b612082565b61203d565b611f56565b611c7c565b611c28565b611b2b565b611a7b565b6119c6565b611884565b61185a565b6117be565b61174f565b611732565b611688565b611659565b611616565b6115cc565b6114d7565b611463565b611429565b611161565b611088565b611057565b610e72565b610d58565b610ae2565b610a65565b610a32565b6109ef565b6108e0565b610839565b610806565b6106ef565b61063e565b61056c565b61033c565b6001600160a01b038116036102a657565b5f80fd5b35906102b582610295565b565b9181601f840112156102a65782359167ffffffffffffffff83116102a657602083818601950101116102a657565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b9060206103399281815201906102e5565b90565b60606003193601126102a65760043561035481610295565b6024359067ffffffffffffffff82116102a6578136039160606003198401126102a65760443567ffffffffffffffff81116102a6576103979036906004016102b7565b6060947f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031693909290843b156102a6576001600160a01b03604051967f2a2d80d10000000000000000000000000000000000000000000000000000000088521660048701526060602487015260c48601937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdd826004013591018112156102a65781016024600482013591019467ffffffffffffffff82116102a6578160071b360386136102a65760606064890152819052869460e48601949392915f5b81811061051a575050506104cb5f9694869488946044856104b36104a360248b99016102aa565b6001600160a01b03166084890152565b013560a48601526003198584030160448601526123c0565b03925af19081610500575b506104f757506104f36104e7612466565b60405191829182610328565b0390f35b6104f3906104e7565b8061050e5f610514936106ae565b80610656565b5f6104d6565b91965091929394608080826105316001948b612361565b01970191019188969594939261047c565b7fffffffff000000000000000000000000000000000000000000000000000000008116036102a657565b346102a65760206003193601126102a65760207fffffffff000000000000000000000000000000000000000000000000000000006004356105ac81610542565b167f01ffc9a7000000000000000000000000000000000000000000000000000000008114908115610614575b81156105ea575b506040519015158152f35b7f5b5e139f000000000000000000000000000000000000000000000000000000009150145f6105df565b7f80ac58cd00000000000000000000000000000000000000000000000000000000811491506105d8565b60206003193601126102a65761002060043533612a54565b5f9103126102a657565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60a0810190811067ffffffffffffffff8211176106a957604052565b610660565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176106a957604052565b346102a6575f6003193601126102a6576040515f80548060011c90600181169081156107fc575b6020831082146107cf5782855260208501919081156107985750600114610748575b6104f3846104e7818603826106ae565b5f8080529250907f290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e5635b818410610784575050016104e782610738565b805484840152602090930192600101610771565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001682525090151560051b0190506104e782610738565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b91607f1691610716565b346102a65760206003193601126102a6576004355f52600460205260206001600160a01b0360405f205416604051908152f35b346102a65760406003193601126102a65760043561085681610295565b602435805f5260026020526001600160a01b0360405f2054169182331415806108af575b6108875761002092612ab5565b7f82b42900000000000000000000000000000000000000000000000000000000005f5260045ffd5b50825f52600560205260ff6108d83360405f20906001600160a01b03165f5260205260405f2090565b54161561087a565b60a06003193601126102a6576004356108f881610295565b602435604435916064359260843567ffffffffffffffff81116102a6576109239036906004016102b7565b948242116109c7576109bc856109c293610020986109b6885f8099868252600260205281896001600160a01b036040832054169c8d9981604051977f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad89526001600160a01b0360208a01911681526040890192835260608901948552608089019687528160a08a20995252525252612b2c565b91612be5565b82612a54565b612ab5565b7f5a9165ff000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576004355f52600760205260206001600160a01b0360405f205416604051908152f35b346102a65760206003193601126102a6576020610a9c600435610a8781612669565b919082851c60020b9260081c60020b91612e68565b6fffffffffffffffffffffffffffffffff60405191168152f35b60031960609101126102a657600435610ace81610295565b90602435610adb81610295565b9060443590565b346102a657610af036610ab6565b91610b1a7f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30578291610c41610b54610b48610b3b865f52600260205260405f2090565b546001600160a01b031690565b6001600160a01b031690565b91610b6a6001600160a01b03851693841461302f565b610bb46001600160a01b03821694610b83861515613094565b8433148015610cf2575b8015610ccd575b610b9d906130f9565b6001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055610bf5816001600160a01b03165f52600360205260405f2090565b80546001019055610c0e855f52600260205260405f2090565b906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b610c7e610c56845f52600460205260405f2090565b80547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4610cbe610cb7825f52600960205260405f2090565b5460ff1690565b610cc457005b6100209061315e565b50610b9d610ce9610b48610b3b8a5f52600460205260405f2090565b33149050610b94565b50610d2b610cb733610d15846001600160a01b03165f52600560205260405f2090565b906001600160a01b03165f5260205260405f2090565b610b8d565b7fd4b05fe0000000000000000000000000000000000000000000000000000000005f5260045ffd5b6101006003193601126102a657600435610d7181610295565b60c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffdc3601126102a65760e43567ffffffffffffffff81116102a657610dbb9036906004016102b7565b916060926001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576001600160a01b035f80946104cb604051978896879586947f2b67b570000000000000000000000000000000000000000000000000000000008652166004850152610e3d602485016122f6565b6001600160a01b0360a435610e5181610295565b1660a485015260c43560c485015261010060e48501526101048401916123c0565b60606003193601126102a657602435600435610e8d82610295565b60443567ffffffffffffffff81116102a657610ead9036906004016102b7565b610ed99391937f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057610ee783336132b6565b1561102b576001600160a01b03610f09610b3b855f52600760205260405f2090565b1680610fef57505f83815260096020526040902080546001179055610fbf90610fbb90610fb56001600160a01b03851696610f5088610c0e895f52600760205260405f2090565b610f896040519384927f8d57f6b20000000000000000000000000000000000000000000000000000000060208501528960248501612495565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081018352826106ae565b8361334b565b1590565b610fea57507f9709492381f90bdc5938bb4e3b8e35b7e0eac8af058619e27191c5a40ce79fa95f80a3005b61338c565b7f25fbd8be000000000000000000000000000000000000000000000000000000005f5260048490526001600160a01b031660245260445ffd5b5ffd5b7f0ca968d8000000000000000000000000000000000000000000000000000000005f523360045260245ffd5b346102a6575f6003193601126102a65760206110716124ac565b604051908152f35b6044359081151582036102a657565b60c06003193601126102a6576004356110a081610295565b6024356110ac81610295565b6110b4611079565b906064359260843560a43567ffffffffffffffff81116102a6576110dc9036906004016102b7565b8692919242116109c7578361115c936109bc926109b6885f6100209c8189818f81604051977f6673cb397ee2a50b6b8401653d3638b4ac8b3db9c28aa6870ffceb7574ec2f7689526001600160a01b0360208a0191168152600160408a019316835260608901948552608089019687528160a08a20995252525252612b2c565b6136b8565b346102a65761116f36610ab6565b6111987f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d30576111b4610b48610b3b835f52600260205260405f2090565b916111ca6001600160a01b03851693841461302f565b816001600160a01b03821680946111e2821515613094565b8033148015611401575b80156113dc575b6111fc906130f9565b611217876001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611258846001600160a01b03165f52600360205260405f2090565b8054600101905561127584610c0e855f52600260205260405f2090565b61128a610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a46112c3610cb7835f52600960205260405f2090565b6113ce575b3b159182156112db575b6100208361257e565b6040517f150b7a020000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b039490941660248501526044840191909152608060648401525f6084840181905260209250839160a49183915af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f9161139a575b5016145f806112d2565b6113bc915060203d6020116113c2575b6113b481836106ae565b810190612569565b5f611390565b503d6113aa565b6123fe565b6113d78261315e565b6112c8565b506111fc6113f8610b48610b3b865f52600460205260405f2090565b331490506111f3565b50611424610cb733610d158a6001600160a01b03165f52600560205260405f2090565b6111ec565b346102a6575f6003193601126102a65760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b9181601f840112156102a65782359167ffffffffffffffff83116102a6576020808501948460051b0101116102a657565b60406003193601126102a65760043567ffffffffffffffff81116102a6576115039036906004016102b7565b60243567ffffffffffffffff81116102a6576115239036906004016114a6565b916001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a45761157f93337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d61376b565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d005b7f6f5ffb7e000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a65760406003193601126102a6576004356115e981610295565b6001600160a01b0360243591165f52600660205260405f20905f52602052602060405f2054604051908152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102a65760206003193601126102a6576020611677600435612648565b6001600160a01b0360405191168152f35b346102a65760206003193601126102a6576001600160a01b036004356116ad81610295565b1680156116d4575f5260036020526104f360405f2054604051918291829190602083019252565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152fd5b346102a6575f6003193601126102a6576020600854604051908152f35b346102a65760206003193601126102a65760c061176d600435612669565b6117b760405180936001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60a0820152f35b346102a65760206003193601126102a6576004357fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000081168091036102a6575f908152600a60209081526040918290208054600182015460029283015485516001600160a01b0393841681528383169581019590955260a082811c62ffffff169686019690965260b89190911c90920b6060840152166080820152f35b346102a65760206003193601126102a6576004355f526009602052602060405f2054604051908152f35b346102a65760206003193601126102a65760043567ffffffffffffffff81116102a6576118b59036906004016102b7565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016330361199e5760408135189063ffffffff60408201351663ffffffe0601f8201169260608401602084013518179282019260608401359483641fffffffe08760051b16805f905b8881831061196f5790506080929150010191011017611962576060608063ffffffff61195796169401920161376b565b6104f36104e7612452565b633b99b53d5f526004601cfd5b8294509263ffffffe0601f60808060209687969801013599848b1817998d010135011601019201869291611927565b7fae18210a000000000000000000000000000000000000000000000000000000005f5260045ffd5b346102a6575f6003193601126102a6576040515f6001548060011c9060018116908115611a71575b6020831082146107cf5782855260208501919081156107985750600114611a1f576104f3846104e7818603826106ae565b60015f9081529250907fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf65b818410611a5d575050016104e782610738565b805484840152602090930192600101611a4a565b91607f16916119ee565b346102a65760406003193601126102a657600435611a9881610295565b60243580151581036102a65761002091336136b8565b602081016020825282518091526040820191602060408360051b8301019401925f915b838310611ae057505050505090565b9091929394602080611b1c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0866001960301875289516102e5565b97019301930191939290611ad1565b60206003193601126102a65760043567ffffffffffffffff81116102a657611b579036906004016114a6565b90611b6182612747565b91611b6f60405193846106ae565b8083527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0611b9c82612747565b015f5b818110611c175750505f5b818110611bbf57604051806104f38682611aae565b5f80611bcc83858761278c565b90611bdc604051809381936127f1565b0390305af4611be9612466565b9015611c0f5790600191611bfd82876127fe565b52611c0881866127fe565b5001611baa565b602081519101fd5b806060602080938801015201611b9f565b60206003193601126102a657600435611c607f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611c6e81336132b6565b1561102b576100209061315e565b346102a65760806003193601126102a657600435611c9981610295565b60243590611ca682610295565b60443560643567ffffffffffffffff81116102a657611cc99036906004016102b7565b939091611cf57f0000000000000000000000000000000000000000000000000000000000000000612f9c565b610d3057611d11610b48610b3b835f52600260205260405f2090565b91611d276001600160a01b03861693841461302f565b816001600160a01b0382168094611d3f821515613094565b8033148015611f2e575b8015611f09575b611d59906130f9565b611d74886001600160a01b03165f52600360205260405f2090565b80547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055611db5846001600160a01b03165f52600360205260405f2090565b80546001019055611dd284610c0e855f52600260205260405f2090565b611de7610c56845f52600460205260405f2090565b7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef5f80a4611e20610cb7835f52600960205260405f2090565b611efb575b3b15938415611e38575b6100208561257e565b602094505f90611e78604051978896879586947f150b7a020000000000000000000000000000000000000000000000000000000086523360048701612812565b03925af180156113c9577fffffffff000000000000000000000000000000000000000000000000000000007f150b7a020000000000000000000000000000000000000000000000000000000091610020935f91611edc575b5016145f808080611e2f565b611ef5915060203d6020116113c2576113b481836106ae565b5f611ed0565b611f048261315e565b611e25565b50611d59611f25610b48610b3b865f52600460205260405f2090565b33149050611d50565b50611f51610cb733610d158b6001600160a01b03165f52600560205260405f2090565b611d49565b346102a65760206003193601126102a657600435604051907fe9dc637500000000000000000000000000000000000000000000000000000000825230600483015260248201525f816044816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9575f90611fea575b6104f39060405191829182610328565b503d805f833e611ffa81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a6570181601f820112156102a6576104f39181602061203893519101612840565b611fda565b346102a6575f6003193601126102a65760207f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6001600160a01b0360405191168152f35b346102a6575f6003193601126102a65760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b60406003193601126102a65760043567ffffffffffffffff81116102a6576120f19036906004016102b7565b6024356001600160a01b037f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c166115a457337f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d80421161221d576040517f48c89491000000000000000000000000000000000000000000000000000000008152602060048201525f818061218b6024820187896123c0565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9576121cd575b610020613746565b3d805f833e6121dc81836106ae565b8101906020818303126102a65780519067ffffffffffffffff82116102a657019080601f830112156102a657815161221692602001612840565b50806121c5565b7fbfb22adf000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b346102a65760406003193601126102a657602060ff6122a260043561226c81610295565b6001600160a01b036024359161228183610295565b165f526005845260405f20906001600160a01b03165f5260205260405f2090565b54166040519015158152f35b600319360160c081126102a65760a0136102a65760206122d860a4356122d381610295565b6128a3565b6040519060020b8152f35b359065ffffffffffff821682036102a657565b6001600160a01b0360243561230a81610295565b1681526001600160a01b0360443561232181610295565b16602082015260643565ffffffffffff81168091036102a657604082015260843565ffffffffffff811681036102a65765ffffffffffff60609116910152565b65ffffffffffff6123ba606080936001600160a01b03813561238281610295565b1686526001600160a01b03602082013561239b81610295565b166020870152836123ae604083016122e3565b166040870152016122e3565b16910152565b601f82602094937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe093818652868601375f8582860101520116010190565b6040513d5f823e3d90fd5b604051906102b56080836106ae565b67ffffffffffffffff81116106a957601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b604051906124616020836106ae565b5f8252565b3d15612490573d9061247782612418565b9161248560405193846106ae565b82523d5f602084013e565b606090565b6040906103399492815281602082015201916123c0565b467f0000000000000000000000000000000000000000000000000000000000000000036124f7577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86682527f000000000000000000000000000000000000000000000000000000000000000060408201524660608201523060808201526080815261256360a0826106ae565b51902090565b908160209103126102a6575161033981610542565b1561258557565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152fd5b156125ea57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152fd5b5f5260026020526001600160a01b0360405f205416906102b58215156125e3565b5f60806040516126788161068d565b82815282602082015282604082015282606082015201525f52600960205260405f2054807fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f206127446127346002604051936126de8561068d565b6001600160a01b03815416855261272661271c60018301546001600160a01b038116602089015262ffffff8160a01c16604089015260b81c60020b90565b60020b6060870152565b01546001600160a01b031690565b6001600160a01b03166080830152565b91565b67ffffffffffffffff81116106a95760051b60200190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b91908110156127ec5760051b810135907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1813603018212156102a657019081359167ffffffffffffffff83116102a65760200182360381136102a6579190565b61275f565b908092918237015f815290565b80518210156127ec5760209160051b010190565b90926001600160a01b03608093816103399896168452166020830152604082015281606082015201916123c0565b92919261284c82612418565b9161285a60405193846106ae565b8294818452818301116102a6578281602093845f96015e010152565b8060020b036102a657565b908160209103126102a6575161033981612876565b62ffffff8116036102a657565b6001600160a01b03604051917f6276cbbe000000000000000000000000000000000000000000000000000000008352816004356128df81610295565b166004840152816024356128f281610295565b16602484015262ffffff60443561290881612896565b16604484015260643561291a81612876565b60020b606484015261294160843561293181610295565b6001600160a01b03166084850152565b1660a482015260208160c4815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af15f918161298f575b506103395750627fffff90565b6129b291925060203d6020116129b9575b6129aa81836106ae565b810190612881565b905f612982565b503d6129a0565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001633141580612a21575b6129f957565b7f38bbd576000000000000000000000000000000000000000000000000000000005f5260045ffd5b506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163314156129f3565b906001600160a01b03600160ff83161b92165f52600660205260405f209060081c5f5260205260405f20818154188091551615612a8d57565b7f1fb09b80000000000000000000000000000000000000000000000000000000005f5260045ffd5b906001600160a01b038091845f526004602052612b038160405f20906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b1691167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4565b90612b356124ac565b91604051927f19010000000000000000000000000000000000000000000000000000000000008452600284015260228301525f604060428420938281528260208201520152565b91908260409103126102a6576020823592013590565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff601b9116019060ff8211612bd157565b612b92565b90604010156127ec5760400190565b90833b612d7a5760418103612cee5790602092612c6e83612c46612c40612c1a612c125f98880188612b7c565b949097612bd6565b357fff000000000000000000000000000000000000000000000000000000000000001690565b60f81c90565b935b604051948594859094939260ff6060936080840197845216602083015260408201520152565b838052039060015afa156113c9576001600160a01b035f5116908115612cc6576001600160a01b031603612c9e57565b7f815e1d64000000000000000000000000000000000000000000000000000000005f5260045ffd5b7f8baa579f000000000000000000000000000000000000000000000000000000005f5260045ffd5b9060408203612d5257602092612d0b825f94612c6e940190612b7c565b929092612d4c612d47612d417f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84169360ff1c90565b60ff1690565b612bbf565b93612c48565b7f4be6321b000000000000000000000000000000000000000000000000000000005f5260045ffd5b9092612dc1936001600160a01b03602094604051968795869485937f1626ba7e00000000000000000000000000000000000000000000000000000000855260048501612495565b0392165afa9081156113c9577f1626ba7e00000000000000000000000000000000000000000000000000000000917fffffffff00000000000000000000000000000000000000000000000000000000915f91612e49575b501603612e2157565b7fb0669cbc000000000000000000000000000000000000000000000000000000005f5260045ffd5b612e62915060203d6020116113c2576113b481836106ae565b5f612e18565b9290612ea39260a092604051956026870152600686015260038501523084525f603a600c860120948160408201528160208201525220614bbf565b60068101809111612bd15760408051602081810194855291810192909252612f0f929091612ed48160608101610f89565b519020604051809381927f1e2eaeaf000000000000000000000000000000000000000000000000000000008352600483019190602083019252565b03816001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165afa80156113c9576fffffffffffffffffffffffffffffffff915f91612f6057501690565b612f82915060203d602011612f86575b612f7a81836106ae565b810190612f8d565b1690565b503d612f70565b908160209103126102a6575190565b60206001600160a01b03916024604051809481937ff135baaa0000000000000000000000000000000000000000000000000000000083527fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab236004840152165afa9081156113c9575f91613010575b50151590565b613029915060203d602011612f8657612f7a81836106ae565b5f61300a565b1561303657565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152fd5b1561309b57565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152fd5b1561310057565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152fd5b6001600160a01b0361317b610b3b835f52600760205260405f2090565b1690811561328e575f81815260096020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690556131cb610c56825f52600760205260405f2090565b813b6131f8575b7fa0ebb1de82db929a9153472f37d3a66dbede4436258311ad0f52a35a2c91d1505f80a3565b5a7f000000000000000000000000000000000000000000000000000000000000000080911061328957823b156102a6575f60405180927faf45dd140000000000000000000000000000000000000000000000000000000082528183878261326789600483019190602083019252565b0393f1613275575b506131d2565b8061050e5f613283936106ae565b5f61326f565b6137d4565b7f237e6c28000000000000000000000000000000000000000000000000000000005f5260045ffd5b6001600160a01b036132c783612648565b16916001600160a01b03821692831492831561332a575b5082156132ea57505090565b60ff9250906001600160a01b0361330361332593612648565b165f52600560205260405f20906001600160a01b03165f5260205260405f2090565b541690565b908093505f5260046020526001600160a01b0360405f20541614915f6132de565b803b1561336457815f92918360208194519301915af190565b7f7c402b21000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527f8d57f6b2000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7f81ea5e9e0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fa9059cbb000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff27f64e40000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301525f6024830152608060448301528060a00160648301523d60848301523d5f60a484013e7ff4b3b1bc0000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d01166001600160a01b03604051927f90bfb8650000000000000000000000000000000000000000000000000000000084521660048301527fb1a9116f000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7face944810000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b60206001600160a01b03807f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31931693845f526005835261370c8160405f20906001600160a01b03165f5260205260405f2090565b951515957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff88161790556040519586521693a3565b5f7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5d565b909291938284036137ac575f5b848110156137a45760019061379e81850161379483888b61278c565b913560f81c6137fc565b01613778565b509350505050565b7faaad13f7000000000000000000000000000000000000000000000000000000005f5260045ffd5b7fed43c3a6000000000000000000000000000000000000000000000000000000005f5260045ffd5b909190600b8110156139175780613827575061381b906102b5926149cc565b94939093929192614b63565b60048103613846575061383d906102b592614185565b93929092614a79565b60018103613868575061385c906102b5926149cc565b94939093929192614a0e565b600281036138975750613881613891916102b5936145df565b9890979691959295949394613cc2565b9561478a565b600581036138c357506138b06138bd916102b593614481565b9790969591949294613cc2565b94614543565b91600383146138ff57505061102891505b7f5cda29d7000000000000000000000000000000000000000000000000000000005f52600452602490565b6102b592509061390e91614185565b939290926141c1565b600d8103613933575061392d906102b592613caf565b90614147565b6011810361395b575061394c613955916102b593613e9e565b92909192613cc2565b9161412c565b600b810361398f5750613989613977613983926102b594613e9e565b93829493929193613f73565b92613fa1565b91613fe2565b600e81036139c157506139b56139ab6139bb926102b594613e9e565b9282949291613cc2565b92613eb6565b91613eca565b601281036139dc57506139d7906102b592613ac8565b613e32565b601381036139f857506139f2906102b592613caf565b90613d25565b60148103613a1f5750613a11613a19916102b593613caf565b919091613cc2565b90613d07565b60158103613a6d5750613a38613a68916102b593613ac8565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690613b54565b613c39565b9160168314613a8257505061102891506138d4565b6102b59250613ac391613a9491613ac8565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016613ad4565b613bb0565b90602011611962573590565b613adf903090614bdf565b7f80000000000000000000000000000000000000000000000000000000000000008214613b4f578115613b3e575b8111613b165790565b7ff4d678b8000000000000000000000000000000000000000000000000000000005f5260045ffd5b9050613b495f614c5f565b90613b0d565b905090565b90613b5f305f614bdf565b907f80000000000000000000000000000000000000000000000000000000000000008314613baa578215613b98575b508111613b165790565b613ba3919250614c5f565b905f613b8e565b50905090565b80613bb85750565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690813b156102a6575f916024839260405194859384927f2e1a7d4d00000000000000000000000000000000000000000000000000000000845260048401525af180156113c957613c2f5750565b5f6102b5916106ae565b80613c415750565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f906004604051809481937fd0e30db00000000000000000000000000000000000000000000000000000000083525af180156113c957613c2f5750565b9190604011611962576020823592013590565b6001600160a01b03811660018103613cfb5750507f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b60020361033957503090565b90613d1182614cd1565b9081613d1c57505050565b6102b592614d37565b90613d2f82614ddd565b908115613e01578111613dd5576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6575f9283926040519485809481937f80f0b44c0000000000000000000000000000000000000000000000000000000083526020600484016001600160a01b036040820194168152015203925af180156113c957613dc75750565b8061050e5f6102b5936106ae565b6102b5917f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90613eca565b505050565b7f80000000000000000000000000000000000000000000000000000000000000008114612bd1575f0390565b613e5d81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b907f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c5f831215613e94576139896102b593613e06565b6102b59291613eca565b90606011611962578035916040602083013592013590565b9081613ec6576103399150614ddd565b5090565b90918015613e01576001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6575f92836064926001600160a01b03948560405198899788967f0b0d9c0900000000000000000000000000000000000000000000000000000000885216600487015216602485015260448401525af180156113c957613f5e5750565b80613f6a5f80936106ae565b8003126102a657565b15613f9d577f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c90565b3090565b907f80000000000000000000000000000000000000000000000000000000000000008203613fd3576103399150614cd1565b81613ec6576103399150614c5f565b908215613e01576001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691823b156102a6576040517fa58411940000000000000000000000000000000000000000000000000000000081526001600160a01b03821660048201525f8160248183885af180156113c957614118575b506001600160a01b0381166140ce5750506020906004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b6140cb9060203d602011612f8657612f7a81836106ae565b50565b5f93602093926140dd92614ea7565b6004604051809481937f11da60b40000000000000000000000000000000000000000000000000000000083525af180156113c9576140b35750565b8061050e5f614126936106ae565b5f614064565b9161413e6102b593826139bb82614ddd565b6139bb82614ddd565b906102b59161417c7f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c918261398982614c5f565b61398982614c5f565b919082359260208101359260408201359263ffffffff60608401351683019063ffffffff82351693602080840193860101910110611962579190565b939290927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c6141f186826132b6565b156143ae575061420085612669565b9290938360081c60020b958460201c60020b9661423761422289838a8d612e68565b6fffffffffffffffffffffffffffffffff1690565b966142418a612648565b955f6142558c5f52600960205260405f2090565b5561425f8b614faa565b5f9989614291575b505050505050508160ff1661427e575b5050505050565b614287946151b4565b5f80808080614277565b60409495969a509061430e916142d16142b16142ac8d61507e565b613e06565b916142c76142bd612409565b97889060020b9052565b60020b6020870152565b858501528b606085015284519a8b9485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af180156113c9575f965f9161436e575b509061435d826143629493986150b0565b6150ed565b5f808080808080614267565b61435d97506143629392915061439b9060403d6040116143a7575b61439381836106ae565b8101906143e3565b9790979192935061434c565b503d614389565b6001600160a01b03907f0ca968d8000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b91908260409103126102a6576020825192015190565b6060610339959361444a83610140956001600160a01b036080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b805160020b60a0840152602081015160020b60c0840152604081015160e084015201516101008201528161012082015201916123c0565b91908260a08101359260c08201359260e083013592610100810135926101208201359263ffffffff6101408401351683019063ffffffff82351693602080840193860101910110611962579190565b91908260a09103126102a6576040516144e88161068d565b608080829480356144f881610295565b8452602081013561450881610295565b6020850152604081013561451b81612896565b6040850152606081013561452e81612876565b606085015201359161453f83610295565b0152565b90916102b59796959493926fffffffffffffffffffffffffffffffff6145d861459860a061457136886144d0565b207f0000000000000000000000000000000000000000000000000000000000000000615264565b5050506145a484615303565b6145ad86615303565b6145c088356145bb81610295565b614ddd565b916145d260208a01356145bb81610295565b9361564f565b169261478a565b9091819260a08301359260c08101359260e08201359261010083013592610120810135926101408201359263ffffffff6101608401351683019063ffffffff82351693602080840193860101910110611962579190565b600260806102b593614680813561464c81610295565b85906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b600184016146c9602083013561469581610295565b82906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b60408201356146d781612896565b81547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff76ffffff0000000000000000000000000000000000000000606086013561472081612876565b60b81b79ffffff0000000000000000000000000000000000000000000000169360a01b1691161717905501359161475683610295565b01906001600160a01b03167fffffffffffffffffffffffff0000000000000000000000000000000000000000825416179055565b90919496929793959760085492600184016008556001600160a01b038a16996147b48b1515613094565b845f5260026020526001600160a01b0360405f20541661496e5761488a6149259861491f93876102b59e61481986614800614917986001600160a01b03165f52600360205260405f2090565b80546001019055610c0e845f52600260205260405f2090565b5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8180a461484836886144d0565b63ffffff007fffffffffffffffffffffffffffffffffffffffffffffffffff0000000000000060a066ffffff000000009320169260081b169260201b16171790565b928361489e875f52600960205260405f2090565b55837fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000168561490760016148fc847fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b015460b81c60020b90565b60020b1561492b575b505061507e565b9236906144d0565b906156fc565b506157de565b614962614967927fffffffffffffffffffffffffffffffffffffffffffffffffff00000000000000165f52600a60205260405f2090565b614636565b5f85614910565b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152fd5b909181359260208301359260408101359260608201359263ffffffff60808401351683019063ffffffff82351693602080840193860101910110611962579190565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614a4283826132b6565b156143ae57509561435d92826142ac6102b59899614a6d614a65614a7397612669565b93909261507e565b916156fc565b906150b0565b949394929091927f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614aac82826132b6565b156143ae57506102b59495614b5e9282614ac8614a7394612669565b90614a6d6fffffffffffffffffffffffffffffffff614b58614b0d60a085207f0000000000000000000000000000000000000000000000000000000000000000615264565b505050614b1f8660081c60020b615303565b614b2e8760201c60020b615303565b614b416001600160a01b03885116614ddd565b916145d26001600160a01b0360208a015116614ddd565b1661507e565b6157de565b90959495939192937f0aedd6bde10e3aa2adec092b02a3e3e805795516cda41f27aa145b8f300af87a5c614b9783826132b6565b156143ae575095614b5e9282614a6d6102b59899614bb7614a7396612669565b92909161507e565b6040516020810191825260066040820152604081526125636060826106ae565b6001600160a01b038116614bf257503190565b906001600160a01b0360246020928260405195869485937f70a08231000000000000000000000000000000000000000000000000000000008552166004840152165afa9081156113c9575f91614c46575090565b610339915060203d602011612f8657612f7a81836106ae565b614c8a81307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8213614c9c575061033990613e06565b6001600160a01b03907f3351b260000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b038116614ce457504790565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290602090829060249082906001600160a01b03165afa9081156113c9575f91614c46575090565b9091906001600160a01b038116614d6457505f808080614d5894865af11590565b614d5f5750565b613532565b91906001600160a01b03604051927fa9059cbb00000000000000000000000000000000000000000000000000000000845216600483015260248201525f604060208260448582885af13d15601f3d11600185511416171692828152826020820152015215614dcf5750565b6001600160a01b031661345f565b614e0881307f0000000000000000000000000000000000000000000000000000000000000000614e49565b905f8212614e14575090565b6001600160a01b03907f4c085bf1000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b6001600160a01b03809381602094165f52168252602460405f2060405194859384927ff135baaa0000000000000000000000000000000000000000000000000000000084526004840152165afa9081156113c9575f91614c46575090565b9091906001600160a01b0383163003614eef576102b592506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690614d37565b906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b156102a6576040517f36c785160000000000000000000000000000000000000000000000000000000081526001600160a01b0394851660048201527f00000000000000000000000000000000000000000000000000000000000000008516602482015291841660448301529190921660648301525f908290608490829084905af180156113c957613dc75750565b805f5260026020525f6001600160a01b03604082205416614fcc8115156125e3565b8082526003602052604082207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8154019055615010835f52600260205260405f2090565b80548360031b906001600160a01b03808616831b921b191617905561503d835f52600460205260405f2090565b80548360031b906001600160a01b03808616831b921b19161790557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8280a4565b905f821261508857565b7f93dafdf1000000000000000000000000000000000000000000000000000000005f5260045ffd5b6150d3906150c58360801d8260801d0361592c565b92600f0b90600f0b0361592c565b6fffffffffffffffffffffffffffffffff169060801b1790565b929190926fffffffffffffffffffffffffffffffff8160801d94816151118761593a565b9116918291161061519957506fffffffffffffffffffffffffffffffff929350600f0b908261513f8361593a565b9116928391161061514e575050565b906151696fffffffffffffffffffffffffffffffff9261593a565b907f12816f22000000000000000000000000000000000000000000000000000000005f526004521660245260445ffd5b6fffffffffffffffffffffffffffffffff906151698661593a565b5f81815260076020526040902080547fffffffffffffffffffffffff000000000000000000000000000000000000000081169091556001600160a01b039081169561525895610fbb959394919390929091604051957fb1a9116f00000000000000000000000000000000000000000000000000000000602088015260248701521660448501526064840152608483015260a482015260a48152610fb560c4826106ae565b61525f5750565b6135e5565b602090602461527b6001600160a01b039594614bbf565b60405195869384927f1e2eaeaf0000000000000000000000000000000000000000000000000000000084526004840152165afa9182156113c9575f926152e2575b506001600160a01b038216918060a01c60020b9162ffffff808360b81c169260d01c1690565b6152fc91925060203d602011612f8657612f7a81836106ae565b905f6152bc565b60020b908160ff1d82810118620d89e881116156495763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a5940010270010000000000000000000000000000000018916002811661562d575b60048116615611575b600881166155f5575b601081166155d9575b602081166155bd575b604081166155a1575b60808116615585575b6101008116615569575b610200811661554d575b6104008116615531575b6108008116615515575b61100081166154f9575b61200081166154dd575b61400081166154c1575b61800081166154a5575b620100008116615489575b62020000811661546e575b620400008116615453575b620800001661543a575b5f12615413575b0160201c90565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0461540c565b6b048a170391f7dc42444e8fa290910260801c90615405565b6d2216e584f5fa1ea926041bedfe9890920260801c916153fb565b916e5d6af8dedb81196699c329225ee6040260801c916153f0565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c916153e5565b916f31be135f97d08fd981231505542fcfa60260801c916153da565b916f70d869a156d2a1b890bb3df62baf32f70260801c916153d0565b916fa9f746462d870fdf8a65dc1f90e061e50260801c916153c6565b916fd097f3bdfd2022b8845ad8f792aa58250260801c916153bc565b916fe7159475a2c29b7443b29c7fa6e889d90260801c916153b2565b916ff3392b0822b70005940c7a398e4b70f30260801c916153a8565b916ff987a7253ac413176f2b074cf7815e540260801c9161539e565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c91615394565b916ffe5dee046a99a2a811c461f1969c30530260801c9161538a565b916fff2ea16466c96a3843ec78b326b528610260801c91615381565b916fff973b41fa98c081472e6896dfb254c00260801c91615378565b916fffcb9843d60f6159c9db58835c9266440260801c9161536f565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c91615366565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c9161535d565b916ffff97272373d413259a46990580e213a0260801c91615354565b82615959565b936001600160a01b0383166001600160a01b038316116156f4575b6001600160a01b0385811695908316861161568b57505061033993506159b7565b92909391946001600160a01b038216115f146156e85782916156b1916156b795946159b7565b93615987565b6fffffffffffffffffffffffffffffffff81166fffffffffffffffffffffffffffffffff8316105f14613b4f575090565b91505061033992615987565b90919061566a565b95939460409161576261570d612409565b60088a901c60020b81529260208a811c60020b908501528585850152866060850152845198899485947f5a6bcfda000000000000000000000000000000000000000000000000000000008652600486016143f9565b03815f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af19081156113c9575f945f926157ba575b5081949560ff166157b157505050565b6102b592615a00565b9094506157d6915060403d6040116143a75761439381836106ae565b90935f6157a1565b908160801d600f0b91600f0b915f8112806158f7575b6158955750505f81128061585e575b61580b575050565b9061581b61422261102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff91821660045216602452604490565b506fffffffffffffffffffffffffffffffff8061587a83613e06565b16166fffffffffffffffffffffffffffffffff831610615803565b906fffffffffffffffffffffffffffffffff6158b361102893613e06565b7f31e30ad0000000000000000000000000000000000000000000000000000000005f526fffffffffffffffffffffffffffffffff9283166004521616602452604490565b506fffffffffffffffffffffffffffffffff61591282613e06565b166fffffffffffffffffffffffffffffffff8316106157f4565b9081600f0b91820361508857565b5f81600f0b12615088576fffffffffffffffffffffffffffffffff1690565b7f8b86327a000000000000000000000000000000000000000000000000000000005f5260020b60045260245ffd5b916001600160a01b03610339936159ac93828116838316116159b1575b031690615b43565b615d1b565b906159a4565b916159ac91610339936001600160a01b0382166001600160a01b038216116159fa575b6001600160a01b03906159f1828416838316615bff565b92031691615c79565b906159da565b615a6a9192815f5260076020526001600160a01b0360405f20541693604051927fd8865c2700000000000000000000000000000000000000000000000000000000602085015260248401526044830152606482015260648152615a646084826106ae565b8261334b565b15615a725750565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f3d0116604051917f90bfb86500000000000000000000000000000000000000000000000000000000835260048301527fd8865c27000000000000000000000000000000000000000000000000000000006024830152608060448301528060a00160648301523d60848301523d5f60a484013e7fe94f10e20000000000000000000000000000000000000000000000000000000060c4828401600460a4820152015260e40190fd5b156102a657565b908160601b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6c010000000000000000000000008409928280851094039380850394615b91868511615b3c565b14615bf8576c0100000000000000000000000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b90808202917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff828209918380841093039280840393846c0100000000000000000000000011156102a65714615c70576c01000000000000000000000000910990828211900360a01b910360601c1790565b50505060601c90565b91818302917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff818509938380861095039480860395615cb9878611615b3c565b14615d13579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b906fffffffffffffffffffffffffffffffff82168092036150885756fea164736f6c634300081a000a","sourceMap":"8042:20055:34:-:0;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;;:::i;:::-;-1:-1:-1;;;;;8042:20055:34;;;;;:::o;:::-;;;;;;;;;;:::i;:::-;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::i;:::-;;:::o;:::-;;-1:-1:-1;;8042:20055:34;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;;;;;;;;;;:::i;:::-;;;1379:7:43;-1:-1:-1;;;;;8042:20055:34;;;;;1379:46:43;;;;;-1:-1:-1;;;;;8042:20055:34;;1379:46:43;8042:20055:34;1379:46:43;;8042:20055:34;;1379:46:43;;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;:::i;:::-;1379:46:43;;;;;;;;8042:20055:34;-1:-1:-1;1375:127:43;;1437:65;8042:20055:34;1437:65:43;;:::i;:::-;8042:20055:34;;;;;;;:::i;:::-;;;;1375:127:43;8042:20055:34;1375:127:43;;;1379:46;;;-1:-1:-1;1379:46:43;;;:::i;:::-;;;:::i;:::-;;;;8042:20055:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;;;:::i;:::-;;;4825:25:5;;:100;;;;;8042:20055:34;4825:175:5;;;;8042:20055:34;;;;;;;;;;4825:175:5;8042:20055:34;4975:25:5;;;4825:175;;;:100;8042:20055:34;4900:25:5;;;-1:-1:-1;4825:100:5;;8042:20055:34;;-1:-1:-1;;8042:20055:34;;;;;1100:5:47;8042:20055:34;;1088:10:47;1100:5;:::i;8042:20055:34:-;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;-1:-1:-1;8042:20055:34;;;;;-1:-1:-1;;;;;8042:20055:34;-1:-1:-1;8042:20055:34;;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;8042:20055:34;3607:8:38;8042:20055:34;;-1:-1:-1;;;;;8042:20055:34;-1:-1:-1;8042:20055:34;;;3634:10:38;;;:19;;:59;;;8042:20055:34;3630:86:38;;3752:2;;;:::i;3630:86::-;3702:14;-1:-1:-1;3702:14:38;8042:20055:34;-1:-1:-1;3702:14:38;3634:59;8042:20055:34;;-1:-1:-1;8042:20055:34;3658:16:38;8042:20055:34;;;3658:35:38;3634:10;8042:20055:34;-1:-1:-1;8042:20055:34;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;3658:35:38;8042:20055:34;;3657:36:38;3634:59;;8042:20055:34;;-1:-1:-1;;8042:20055:34;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;987:15:38;;;:26;983:65;;1538:5;8042:20055:34;1581:5:38;8042:20055:34;1622:7:38;8042:20055:34;1514:22:38;8042:20055:34;-1:-1:-1;8042:20055:34;;;;;1380:8:38;8042:20055:34;;;;-1:-1:-1;;;;;8042:20055:34;;;;;1346:730:65;;;;8042:20055:34;1346:730:65;;;;;-1:-1:-1;;;;;8042:20055:34;1346:730:65;;;;;;8042:20055:34;1346:730:65;;;;;8042:20055:34;1346:730:65;;;;;8042:20055:34;1346:730:65;;;;;;8042:20055:34;1346:730:65;;;;;;;;1514:22:38;:::i;:::-;1538:5;;:::i;:::-;1581;;:::i;:::-;1622:7;:::i;983:65::-;1022:26;-1:-1:-1;1022:26:38;8042:20055:34;-1:-1:-1;1022:26:38;8042:20055:34;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;-1:-1:-1;;;;;452:43:43;8042:20055:34;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;-1:-1:-1;8042:20055:34;776:68:42;8042:20055:34;;;-1:-1:-1;;;;;8042:20055:34;-1:-1:-1;8042:20055:34;;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;27643:67;8042:20055;;27590:31;;;:::i;:::-;2264:106:69;;;;;2057;2264;2057;;;;;27643:67:34;;:::i;:::-;8042:20055;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;:::i;:::-;10298:11;:24;:11;:24;:::i;:::-;10294:62;;3081:12:5;;3596:17;3073:20;3081:12;;;8042:20055:34;;3081:8:5;8042:20055:34;;;;;;;3081:12:5;8042:20055:34;-1:-1:-1;;;;;8042:20055:34;;;3081:12:5;-1:-1:-1;;;;;8042:20055:34;;;3073:20:5;8042:20055:34;3065:43:5;-1:-1:-1;;;;;8042:20055:34;;3073:20:5;;;3065:43;:::i;:::-;3526:16;-1:-1:-1;;;;;8042:20055:34;;3127:16:5;3119:46;3127:16;;;3119:46;:::i;:::-;3197:10;;:18;:56;;;;8042:20055:34;3197:89:5;;;;8042:20055:34;3176:150:5;;;:::i;:::-;-1:-1:-1;;;;;8042:20055:34;;;3526:10:5;8042:20055:34;;;;;;;3526:16:5;8042:20055:34;;;;;;3559:14:5;;-1:-1:-1;;;;;8042:20055:34;;;3526:10:5;8042:20055:34;;;;;;;3559:14:5;8042:20055:34;;;;;;3596:12:5;;8042:20055:34;;3081:8:5;8042:20055:34;;;;;;;3596:12:5;635:23:42;-1:-1:-1;;;;;8042:20055:34;635:23:42;;;;;;;;3596:17:5;8042:20055:34;3631:15:5;;8042:20055:34;;;;;;;;;;3631:15:5;8042:20055:34;;;;;;;;3662:22:5;3141:1;3662:22;;27101:32:34;:16;;8042:20055;;27101:12;8042:20055;;;;;;;27101:16;8042:20055;2478:89:69;;2382:191;;27101:32:34;27097:54;;8042:20055;27097:54;27148:2;;;:::i;3197:89:5:-;3271:15;3176:150;3257:29;3271:15;;;8042:20055:34;;;;;;;;;;3257:29:5;3197:10;3257:29;3197:89;;;;:56;:10;3219:34;;3197:10;3219:22;;-1:-1:-1;;;;;8042:20055:34;;;3219:16:5;8042:20055:34;;;;;;;3219:22:5;8042:20055:34;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;3219:34:5;3197:56;;10294:62:34;10331:25;;;8042:20055;10331:25;;8042:20055;;-1:-1:-1;;8042:20055:34;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;912:7:43;-1:-1:-1;;;;;912:7:43;8042:20055:34;912:46:43;;;;;-1:-1:-1;;;;;;8042:20055:34;;;;;912:46:43;;;;;;;8042:20055:34;912:46:43;;8042:20055:34;;912:46:43;;8042:20055:34;;;;;;:::i;:::-;-1:-1:-1;;;;;8042:20055:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;-1:-1:-1;;8042:20055:34;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10298:24;:11;;;;:24;:::i;:::-;10294:62;;10096:35;1727:10:42;;10096:35:34;:::i;:::-;10095:36;10091:68;;-1:-1:-1;;;;;1788:19:42;;;8042:20055:34;;1788:10:42;8042:20055:34;;;;;;;1788:19:42;8042:20055:34;1822:28:42;1818:89;;-1:-1:-1;;8042:20055:34;;;26547:12;8042:20055;;;;;;;2725:81:69;;8042:20055:34;;2122:8:42;;2025:82;;2046:60;-1:-1:-1;;;;;8042:20055:34;;1951:19:42;:48;:19;;;8042:20055:34;;1788:10:42;8042:20055:34;;;;;;;1951:48:42;2046:60;8042:20055:34;;2046:60:42;;;;8042:20055:34;2046:60:42;;;;8042:20055:34;2046:60:42;;;:::i;:::-;;;;;;;;;:::i;:::-;2025:82;;:::i;:::-;2122:8;;8042:20055:34;2122:8:42;2118:143;;2276:36;;-1:-1:-1;2276:36:42;;8042:20055:34;2118:143:42;2220:29;:::i;1818:89::-;1859:48;-1:-1:-1;1859:48:42;8042:20055:34;;;;-1:-1:-1;;;;;8042:20055:34;635:23:42;8042:20055:34;635:23:42;-1:-1:-1;1859:48:42;;-1:-1:-1;1859:48:42;10091:68:34;10140:19;-1:-1:-1;10140:19:34;1727:10:42;8042:20055:34;;;-1:-1:-1;10140:19:34;8042:20055;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;8042:20055:34;;;;;;;;;;:::i;:::-;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;987:15:38;;;;;:26;983:65;;2963:760:65;2104:5:38;2963:760:65;2061:5:38;2963:760:65;2037:22:38;2963:760:65;-1:-1:-1;2152:8:38;2963:760:65;;;;;;8042:20055:34;2963:760:65;;;;;-1:-1:-1;;;;;8042:20055:34;2963:760:65;;;;;;;8042:20055:34;2963:760:65;;;;;;8042:20055:34;2963:760:65;;;;;8042:20055:34;2963:760:65;;;;;;8042:20055:34;2963:760:65;;;;;;;;2037:22:38;:::i;2104:5::-;2152:8;:::i;8042:20055:34:-;;;;;;;:::i;:::-;10298:24;:11;:24;:::i;:::-;10294:62;;3073:20:5;3081:12;;;8042:20055:34;;3081:8:5;8042:20055:34;;;;;;;3073:20:5;8042:20055:34;3065:43:5;-1:-1:-1;;;;;8042:20055:34;;3073:20:5;;;3065:43;:::i;:::-;8042:20055:34;-1:-1:-1;;;;;8042:20055:34;;3127:16:5;;3119:46;3127:16;;;3119:46;:::i;:::-;3197:10;;:18;:56;;;;8042:20055:34;3197:89:5;;;;8042:20055:34;3176:150:5;;;:::i;:::-;3526:16;;-1:-1:-1;;;;;8042:20055:34;;;3526:10:5;8042:20055:34;;;;;;;3526:16:5;8042:20055:34;;;;;;3559:14:5;;-1:-1:-1;;;;;8042:20055:34;;;3526:10:5;8042:20055:34;;;;;;;3559:14:5;8042:20055:34;;;;;;3596:17:5;:12;;;8042:20055:34;;3081:8:5;8042:20055:34;;;;;;;3596:17:5;8042:20055:34;3631:15:5;;8042:20055:34;;;;;;;;;;;3662:22:5;3141:1;3662:22;;27101:32:34;:16;;8042:20055;;27101:12;8042:20055;;;;;;;27101:32;27097:54;;8042:20055;3874:14:5;:19;:170;;;;;8042:20055:34;3853:233:5;;;:::i;3874:170::-;8042:20055:34;;;3913:66:5;;3197:10;8042:20055:34;3913:66:5;;8042:20055:34;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;3913:66:5;;-1:-1:-1;8042:20055:34;;;;;;3913:66:5;;;;;;8042:20055:34;;3913:66:5;3853:233;3913:66;3141:1;3913:66;;;3874:170;8042:20055:34;;3913:131:5;3874:170;;;;3913:66;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;:::i;27097:54:34:-;27148:2;;;:::i;:::-;27097:54;;3197:89:5;3271:15;3176:150;3257:29;3271:15;;;8042:20055:34;;;;;;;;;;3257:29:5;3197:10;3257:29;3197:89;;;;:56;:10;3219:34;;3197:10;3219:22;;-1:-1:-1;;;;;8042:20055:34;;;3219:16:5;8042:20055:34;;;;;;;3219:34:5;3197:56;;8042:20055:34;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;695:44:42;8042:20055:34;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;-1:-1:-1;;;;;407:29:41;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;-1:-1:-1;;8042:20055:34;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;661:64:67;-1:-1:-1;;;;;661:64:67;;8042:20055:34;285:55:45;;11029:6:34;361:10:45;;661:64:67;522:63;11029:6:34;:::i;:::-;-1:-1:-1;661:64:67;522:63;8042:20055:34;285:55:45;324:16;-1:-1:-1;324:16:45;8042:20055:34;-1:-1:-1;324:16:45;8042:20055:34;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8042:20055:34;;;;-1:-1:-1;8042:20055:34;317:79:47;8042:20055:34;;;-1:-1:-1;8042:20055:34;;-1:-1:-1;8042:20055:34;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;-1:-1:-1;;;;;8652:52:34;8042:20055;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;-1:-1:-1;;;;;8042:20055:34;;;;;:::i;:::-;;1572:19:5;;8042:20055:34;;-1:-1:-1;8042:20055:34;1626:10:5;8042:20055:34;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;8615:30;8042:20055;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;8782:58;8042:20055;;;;;;;;;;;8782:58;;;8042:20055;;8782:58;;;8042:20055;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;-1:-1:-1;8042:20055:34;8711:65;8042:20055;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;;;;;;;;;;:::i;:::-;672:11:39;-1:-1:-1;;;;;672:11:39;8042:20055:34;650:10:39;:34;646:63;;1311:2457:64;;;;;;;;;;;;;;;;;8042:20055:34;1311:2457:64;;8042:20055:34;1311:2457:64;;;;;;;;;8042:20055:34;1311:2457:64;;;;;;;;;;;-1:-1:-1;1311:2457:64;;;;;;;;;;;;;;;;;;;;;;8042:20055:34;1311:2457:64;;1782:6:35;1311:2457:64;;;;;;1782:6:35;:::i;:::-;8042:20055:34;;;:::i;1311:2457:64:-;;-1:-1:-1;1311:2457:64;8042:20055:34;1311:2457:64;;;;;;;;;;;8042:20055:34;1311:2457:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;646:63:39;693:16;-1:-1:-1;693:16:39;8042:20055:34;-1:-1:-1;693:16:39;8042:20055:34;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;924:20:5;8042:20055:34;;924:20:5;8042:20055:34;;924:20:5;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;924:20:5;8042:20055:34;;;;;-1:-1:-1;8042:20055:34;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;;;;;;;;924:20:5;8042:20055:34;;;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;:::i;:::-;;;;;;;;;;2807:8:38;2785:10;;2807:8;:::i;8042:20055:34:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;-1:-1:-1;8042:20055:34;;;;;;462:13:40;;-1:-1:-1;477:15:40;;;;;;8042:20055:34;;;;;;;:::i;494:3:40:-;-1:-1:-1;578:7:40;;;;;;:::i;:::-;8042:20055:34;;;;;;;;;:::i;:::-;551:35:40;559:4;;551:35;;;;:::i;:::-;605:8;;601:182;;797:19;8042:20055:34;797:19:40;;;;;:::i;:::-;;;;;;:::i;:::-;;8042:20055:34;462:13:40;;601:182;8042:20055:34;680:89:40;;;;;8042:20055:34;;;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;10298:24;:11;:24;:::i;:::-;10294:62;;10096:35;2481:10:42;;10096:35:34;:::i;:::-;10095:36;10091:68;;2529:7:42;;;:::i;8042:20055:34:-;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;10298:11;;;:24;:11;:24;:::i;:::-;10294:62;;3073:20:5;3081:12;;;8042:20055:34;;3081:8:5;8042:20055:34;;;;;;;3073:20:5;8042:20055:34;3065:43:5;-1:-1:-1;;;;;8042:20055:34;;3073:20:5;;;3065:43;:::i;:::-;8042:20055:34;-1:-1:-1;;;;;8042:20055:34;;3127:16:5;;3119:46;3127:16;;;3119:46;:::i;:::-;3197:10;;:18;:56;;;;8042:20055:34;3197:89:5;;;;8042:20055:34;3176:150:5;;;:::i;:::-;3526:16;;-1:-1:-1;;;;;8042:20055:34;;;3526:10:5;8042:20055:34;;;;;;;3526:16:5;8042:20055:34;;;;;;3559:14:5;;-1:-1:-1;;;;;8042:20055:34;;;3526:10:5;8042:20055:34;;;;;;;3559:14:5;8042:20055:34;;;;;;3596:17:5;:12;;;8042:20055:34;;3081:8:5;8042:20055:34;;;;;;;3596:17:5;8042:20055:34;3631:15:5;;8042:20055:34;;;;;;;;;;;3662:22:5;-1:-1:-1;3662:22:5;;27101:32:34;:16;;8042:20055;;27101:12;8042:20055;;;;;;;27101:32;27097:54;;8042:20055;4305:14:5;:19;:172;;;;;8042:20055:34;4284:235:5;;;:::i;4305:172::-;8042:20055:34;;;-1:-1:-1;8042:20055:34;4344:68:5;8042:20055:34;;4344:68:5;;;;;;;8042:20055:34;4344:68:5;;3197:10;8042:20055:34;4344:68:5;;;:::i;:::-;;;;;;;;;8042:20055:34;;4344:68:5;4284:235;4344:68;-1:-1:-1;4344:68:5;;;4305:172;8042:20055:34;;4344:133:5;4305:172;;;;;;4344:68;;;;8042:20055:34;4344:68:5;8042:20055:34;4344:68:5;;;;;;;:::i;:::-;;;;27097:54:34;27148:2;;;:::i;:::-;27097:54;;3197:89:5;3271:15;3176:150;3257:29;3271:15;;;8042:20055:34;;;;;;;;;;3257:29:5;3197:10;3257:29;3197:89;;;;:56;:10;3219:34;;3197:10;3219:22;;-1:-1:-1;;;;;8042:20055:34;;;3219:16:5;8042:20055:34;;;;;;;3219:34:5;3197:56;;8042:20055:34;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;10477:60;8042:20055;10477:60;;10523:4;8042:20055;10477:60;;8042:20055;;;;;-1:-1:-1;10497:15:34;10477:60;10497:15;-1:-1:-1;;;;;10497:15:34;8042:20055;10477:60;;;;;;-1:-1:-1;10477:60:34;;;8042:20055;;;;;;;;;;:::i;10477:60::-;;;;-1:-1:-1;10477:60:34;;;;;;:::i;:::-;;;8042:20055;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10477:60;;8042:20055;;;;;-1:-1:-1;;8042:20055:34;;;;;;661:64:67;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;-1:-1:-1;;;;;411:41:39;8042:20055:34;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;661:64:67;;8042:20055:34;285:55:45;;361:10;661:64:67;522:63;9522:15:34;;:26;9518:63;;8042:20055;;;1231:30:35;;8042:20055:34;;1231:30:35;;8042:20055:34;-1:-1:-1;8042:20055:34;;;;;;;;;:::i;:::-;1231:30:35;:11;;-1:-1:-1;;;;;1231:11:35;8042:20055:34;1231:30:35;;;;;;;;8042:20055:34;404:10:45;;:::i;1231:30:35:-;;;-1:-1:-1;1231:30:35;;;;;;:::i;:::-;;;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1231:30:35;;;9518:63:34;9557:24;-1:-1:-1;9557:24:34;8042:20055;;;-1:-1:-1;9557:24:34;8042:20055;;;;;-1:-1:-1;;8042:20055:34;;;;;;;1897:68:5;8042:20055:34;;;;;:::i;:::-;-1:-1:-1;;;;;8042:20055:34;;;;;;:::i;:::-;;-1:-1:-1;8042:20055:34;1897:68:5;8042:20055:34;;;-1:-1:-1;8042:20055:34;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;1897:68:5;8042:20055:34;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;;;8042:20055:34;;;;;:::i;:::-;;;;-1:-1:-1;;;;;8042:20055:34;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;;:::i;:::-;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;1089:20:69;8042:20055:34;;:::i;:::-;;;;;;;;;;;;;:::o;:::-;;;;;;;;:::i;:::-;-1:-1:-1;8042:20055:34;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;8042:20055:34;;;;:::o;:::-;;;:::o;635:23:42:-;;;;;;8042:20055:34;;635:23:42;;;;;;;;:::i;1388:241:37:-;1536:13;1553:16;1536:33;1553:16;;1572:24;1388:241;:::o;1536:86::-;8042:20055:34;;1816:66:37;;;8042:20055:34;1075:80:37;8042:20055:34;;1839:12:37;8042:20055:34;1075:80:37;;8042:20055:34;1536:13:37;1075:80;;;8042:20055:34;1876:4:37;1075:80;;;8042:20055:34;1075:80:37;1816:66;;;;;;:::i;:::-;8042:20055:34;1806:77:37;;1388:241;:::o;8042:20055:34:-;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;1327:149:5;-1:-1:-1;8042:20055:34;1427:8:5;8042:20055:34;;-1:-1:-1;;;;;8042:20055:34;-1:-1:-1;8042:20055:34;;;1418:36:5;1410:59;1418:36;;;1410:59;:::i;27201:201:34:-;-1:-1:-1;8042:20055:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;27331:12;8042:20055;;;-1:-1:-1;8042:20055:34;;1866:90:69;;;-1:-1:-1;8042:20055:34;27372:8;8042:20055;;;-1:-1:-1;8042:20055:34;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;27201:201;:::o;8042:20055::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;:::i;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;8042:20055:34;;;;;;:::o;:::-;;;;;;;:::o;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::o;527:274:44:-;-1:-1:-1;;;;;8042:20055:34;;642:41:44;8042:20055:34;642:41:44;;8042:20055:34;;;;;;:::i;:::-;;;642:41:44;;8042:20055:34;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;;642:11:44;:41;:11;8042:20055:34;-1:-1:-1;;;;;642:11:44;8042:20055:34;642:41:44;;8042:20055:34;;642:41:44;;;527:274;-1:-1:-1;638:157:44;;762:22;769:15;762:22;:::o;642:41::-;;;;;8042:20055:34;642:41:44;8042:20055:34;642:41:44;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;993:141:41;-1:-1:-1;;;;;1056:5:41;8042:20055:34;1034:10:41;:28;;:66;;;993:141;1030:97;;993:141::o;1030:97::-;1109:18;;;;;;1034:66;1088:11;-1:-1:-1;;;;;1088:11:41;8042:20055:34;1034:10:41;1066:34;;1034:66;;661:303:47;;-1:-1:-1;;;;;830:1:47;8042:20055:34;;;;;;-1:-1:-1;8042:20055:34;869:6:47;8042:20055:34;;;-1:-1:-1;8042:20055:34;;765:1:47;8042:20055:34;-1:-1:-1;8042:20055:34;;;;-1:-1:-1;8042:20055:34;;;;869:29:47;8042:20055:34;;;912:13:47;:18;908:49;;661:303::o;908:49::-;939:18;-1:-1:-1;939:18:47;;-1:-1:-1;939:18:47;3768:156:38;;-1:-1:-1;;;;;3768:156:38;;8042:20055:34;-1:-1:-1;8042:20055:34;3849:11:38;8042:20055:34;;3849:25:38;8042:20055:34;;-1:-1:-1;8042:20055:34;635:23:42;-1:-1:-1;;;;;8042:20055:34;635:23:42;;;;;;;;3849:25:38;8042:20055:34;;;3889:28:38;-1:-1:-1;3889:28:38;;3768:156::o;1947:745:37:-;;2155:18;;:::i;:::-;2183:503;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1947:745::o;8042:20055:34:-;;;;;;;;;;;;;;;;;:::o;625:68:3:-;;;;;;;;;;;8042:20055:34;;625:68:3;8042:20055:34;625:68:3;;8042:20055:34;625:68:3;;;;:::o;:::-;;:::i;:::-;;1043:2;625:68;;;;1043:2;625:68;;:::o;700:1109::-;;863:25;;;;933:2;913:22;;933:2;;964:41;1429:24;964:41;1429:24;964:41;1027:20;1033:13;;964:41;-1:-1:-1;964:41:3;;;;;:::i;:::-;955:50;;1033:13;;:::i;:::-;;625:68;;;;1033:13;625:68;;;;1027:20;909:490;;8042:20055:34;;1429:24:3;;;;625:68;;;;8042:20055:34;625:68:3;;;;;8042:20055:34;;;;625:68:3;;;;;;;8042:20055:34;625:68:3;8042:20055:34;625:68:3;1429:24;;;;;;;;;;;;-1:-1:-1;;;;;;1429:24:3;8042:20055:34;1471:20:3;;;1467:51;;-1:-1:-1;;;;;8042:20055:34;1536:23:3;1532:51;;700:1109::o;1532:51::-;1568:15;-1:-1:-1;1568:15:3;;-1:-1:-1;1568:15:3;1467:51;1500:18;-1:-1:-1;1500:18:3;;-1:-1:-1;1500:18:3;909:490;1072:22;1092:2;1072:22;;1092:2;;1429:24;1180:41;;;-1:-1:-1;1180:41:3;1429:24;1180:41;;;;:::i;:::-;1170:51;;1243:19;1284:30;:25;1298:9;626:66;1243:19;;1298:9;8042:20055:34;;;;1298:9:3;8042:20055:34;;;;1284:25:3;:30;:::i;:::-;1068:331;909:490;;1068:331;1360:24;-1:-1:-1;1360:24:3;;-1:-1:-1;1360:24:3;859:944;8042:20055:34;;1634:57:3;8042:20055:34;-1:-1:-1;;;;;1634:57:3;8042:20055:34;;;1634:57:3;;;;;;;8042:20055:34;1634:57:3;;;;;;:::i;:::-;;8042:20055:34;;1634:57:3;;;;;;;8042:20055:34;1634:57:3;8042:20055:34;1634:57:3;-1:-1:-1;1634:57:3;;;859:944;8042:20055:34;;1709:48:3;1705:87;;700:1109::o;1705:87::-;1766:26;-1:-1:-1;1766:26:3;1634:57;-1:-1:-1;1766:26:3;1634:57;;;;;;;;;;;;;;:::i;:::-;;;;27723:372:34;;;15691:25:25;27723:372:34;357:173:31;27723:372:34;2447:609:23;;;;;;;;;;;;;;;27960:4:34;2447:609:23;;-1:-1:-1;2447:609:23;;;;;;;;;;;;;;;;;357:173:31;15691:25:25;:::i;:::-;2447:609:23;1100:1:25;;;;;;;2447:609:23;8042:20055:34;;2447:609:23;15971:45:25;;;8042:20055:34;;;1100:1:25;;;8042:20055:34;;;;12731:22:25;;2447:609:23;;15971:45:25;8042:20055:34;1100:1:25;;;15971:45;1100:1;15971:45;8042:20055:34;15961:56:25;;2447:609:23;8042:20055:34;12731:22:25;;;;8042:20055:34;12731:22:25;;;;;8042:20055:34;;;;;;;;12731:22:25;;28028:11:34;-1:-1:-1;;;;;28028:11:34;8042:20055;12731:22:25;;;;;;8042:20055:34;12731:22:25;-1:-1:-1;12731:22:25;;;8042:20055:34;;27723:372;:::o;12731:22:25:-;;;;2447:609:23;12731:22:25;2447:609:23;12731:22:25;;;;;;;;:::i;:::-;;;;;:::i;:::-;8042:20055:34;27723:372;:::o;12731:22:25:-;;;;;417:66:21;;;;;;;;;;;:::o;2217:141:27:-;8042:20055:34;-1:-1:-1;;;;;2217:141:27;2305:39;8042:20055:34;;2305:39:27;;;;8042:20055:34;2305:39:27;;417:66:21;2305:39:27;;;8042:20055:34;;2305:39:27;;;;;;;-1:-1:-1;2305:39:27;;;2217:141;2305:46;;;2217:141;:::o;2305:39::-;;;;8042:20055:34;2305:39:27;8042:20055:34;2305:39:27;;;;;;;:::i;:::-;;;;8042:20055:34;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;2550:800:42;-1:-1:-1;;;;;2634:19:42;;;8042:20055:34;;1788:10:42;8042:20055:34;;;;;;;2634:19:42;8042:20055:34;2668:28:42;;;2664:56;;-1:-1:-1;8042:20055:34;;;26743:12;8042:20055;;;;;;;2966:84:69;;8042:20055:34;;;2773:19:42;;8042:20055:34;;1788:10:42;8042:20055:34;;;;;;;;2807:32:42;;2803:480;;2550:800;3298:45;655:1;3298:45;;2550:800::o;2803:480::-;3110:9;3122:19;3110:31;;;3106:73;;3197:64;;;;;655:1;8042:20055:34;;3197:64:42;;8042:20055:34;3197:64:42;;;;;;;;;;;8042:20055:34;;;;;;;;3197:64:42;;;;;;2803:480;;;;3197:64;;;655:1;3197:64;;;:::i;:::-;;;;3106:73;3143:34;:::i;2664:56::-;2705:15;655:1;2705:15;;655:1;2705:15;3930:236:38;-1:-1:-1;;;;;4049:16:38;;;:::i;:::-;8042:20055:34;;-1:-1:-1;;;;;8042:20055:34;;4038:27:38;;;:62;;;;;3930:236;4038:121;;;;;4031:128;;3930:236;:::o;4038:121::-;8042:20055:34;4133:16:38;;;-1:-1:-1;;;;;4133:16:38;4116:43;4133:16;;:::i;:::-;8042:20055:34;-1:-1:-1;8042:20055:34;4116:16:38;8042:20055:34;;;-1:-1:-1;8042:20055:34;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;4116:43:38;8042:20055:34;;3930:236:38;:::o;4038:62::-;8042:20055:34;;;;-1:-1:-1;8042:20055:34;4069:11:38;8042:20055:34;;-1:-1:-1;;;;;8042:20055:34;-1:-1:-1;8042:20055:34;;;4069:31:38;4038:62;;;;4610:314:42;4713:18;;:23;4709:67;;4786:132;4735:1;4786:132;;;;;;;;;;;;4610:314;:::o;4709:67::-;4738:25;4735:1;814:96:16;;4735:1:42;814:96:16;3508:1663;3741:1424;;;;;-1:-1:-1;;;;;3741:1424:16;;;3710:21;3741:1424;;;;;;;2046:60:42;3741:1424:16;;;;;;;;;;;;;;;;;;;;;;;;;;;2220:29:42;3741:1424:16;;;;;;;;;;;;;;;3508:1663;3741:1424;;;;;-1:-1:-1;;;;;3741:1424:16;;;3710:21;3741:1424;;;;;;;2238:1774:30;3741:1424:16;;;;;;;;;;;;;;;;;;;;;;;;;;;4268:28:30;3741:1424:16;;;;;;;;;;;;;;;3508:1663;3741:1424;;;;;-1:-1:-1;;;;;3741:1424:16;;;3710:21;3741:1424;;;;;;;8042:20055:34;3741:1424:16;;;;;;;;;;;;;;;;;;;;;;8042:20055:34;3741:1424:16;;;;2163:29:30;3741:1424:16;;;;;;;;;;;;;;;3508:1663;3741:1424;;;;;-1:-1:-1;;;;;3741:1424:16;;;3710:21;3741:1424;;;;;;;3819:86:42;3741:1424:16;;;;;;;;;;;;;;;;;;;;;;;;;;;4012:33:42;3741:1424:16;;;;;;;;;;;;;;;2829:198:38;8042:20055:34;-1:-1:-1;;;;;2829:198:38;2979:41;2829:198;8042:20055:34;;;-1:-1:-1;8042:20055:34;2920:16:38;8042:20055:34;;2920:33:38;8042:20055:34;;-1:-1:-1;8042:20055:34;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;2920:33:38;8042:20055:34;;;;;;;;;;;;;;;;;;;;2979:41:38;;2829:198::o;474:117:67:-;8042:20055:34;522:63:67;;474:117::o;1821:426:35:-;;;;;1976:27;;;1972:61;;2071:1;2100:13;2074:24;;;;;;8042:20055:34;2152:20:35;2210:19;625:68:3;;;2210:19:35;;;;;:::i;:::-;2152:20;;625:68:3;;2210:19:35;:::i;:::-;8042:20055:34;2049:23:35;;2074:24;;;;;;;1821:426::o;1972:61::-;2012:21;;;;;;753:163:16;3143:23:42;814:96:16;;;;;11189:4967:34;;;;1272:4:63;11291:23:34;;1272:4:63;;;11334:36:34;;;11514;;;16273:795;11514:36;;:::i;:::-;16273:795;;;;;;;;:::i;11330:2586::-;735:4:63;11680:48:34;;735:4:63;;11853:48:34;;;17156:1303;11853:48;;:::i;:::-;17156:1303;;;;;:::i;11676:2240::-;562:4:63;12030:36:34;;562:4:63;;12210:36:34;;;18576:716;12210:36;;:::i;:::-;18576:716;;;;;;;;:::i;12026:1890::-;614:4:63;12376:31:34;;614:4:63;;12767:25:34;;12882:20;12767:25;12904:8;12767:25;;:::i;:::-;12882:20;;;;;;;;;;;;:::i;:::-;12904:8;;:::i;12372:1544::-;799:4:63;12962:43:34;;799:4:63;;13326:35:34;;13450:20;13326:35;13472:8;13326:35;;:::i;:::-;13450:20;;;;;;;;;:::i;:::-;13472:8;;:::i;12958:958::-;13530:31;666:4:63;13530:31:34;;13526:390;;12958:958;;16124:25;12958:958;;11287:4821;16124:25;;;;8042:20055;;;;13526:390;21413:1585;13786:25;;;;;;:::i;:::-;21413:1585;;;;;:::i;11287:4821::-;1371:4:63;13950:29:34;;1371:4:63;;14042:27:34;;;14110:9;14042:27;;:::i;:::-;14110:9;;:::i;13946:2152::-;1574:4:63;14169:27:34;;1574:4:63;;14278:37:34;;14365:24;14278:37;14365:24;14278:37;;:::i;:::-;14365:24;;;;;:::i;:::-;;;:::i;14165:1933::-;1272:4:63;14439:24:34;;1272:4:63;;14539:37:34;14636:34;14539:37;14612:22;14539:37;14636:34;14539:37;;:::i;:::-;14612:22;;;;;;;;:::i;:::-;14636:34;;:::i;:::-;;;:::i;14435:1663::-;1428:4:63;14720:22:34;;1428:4:63;;14819:40:34;14893:24;14819:40;14919:32;14819:40;14919:32;14819:40;;:::i;:::-;14893:24;;;;;;:::i;:::-;14919:32;;:::i;:::-;;;:::i;14716:1382::-;1628:4:63;15001:32:34;;1628:4:63;;15073:23:34;;;15121:8;15073:23;;:::i;:::-;15121:8;:::i;14997:1101::-;1680:4:63;15179:31:34;;1680:4:63;;15271:33:34;;;15345:9;15271:33;;:::i;:::-;15345:9;;:::i;15175:923::-;1724:4:63;15404:23:34;;1724:4:63;;15481:33:34;;15549:17;15481:33;15549:17;15481:33;;:::i;:::-;15549:17;;;;:::i;:::-;;;:::i;15400:698::-;1768:4:63;15616:22:34;;1768:4:63;;15675:22:34;;15721:89;15675:22;15721:89;15675:22;;:::i;:::-;-1:-1:-1;;;;;15802:5:34;8042:20055;15721:89;;:::i;:::-;;:::i;15612:486::-;15860:24;1813:4:63;15860:24:34;;15856:242;;15612:486;;16124:25;15612:486;;11287:4821;;15856:242;15969:89;15921:22;;15969:89;15921:22;;;;:::i;:::-;-1:-1:-1;;;;;16012:5:34;8042:20055;15969:89;:::i;:::-;;:::i;14252:322:64:-;;14347:221;-1:-1:-1;14347:221:64;;;14252:322;:::o;4841:957:36:-;5153:38;4841:957;5185:4;5153:38;;:::i;:::-;678:66:62;5205:42:36;;5201:150;;5364:36;;5360:349;;4841:957;5722:16;;5718:50;;4841:957;:::o;5718:50::-;5747:21;8042:20055:34;5747:21:36;;8042:20055:34;5747:21:36;5360:349;5670:28;;;8042:20055:34;5670:28:36;:::i;:::-;5360:349;;;5201:150;5326:14;;;:::o;4841:957::-;;5153:38;5185:4;8042:20055:34;5153:38:36;:::i;:::-;5205:42;678:66:62;5205:42:36;;5201:150;;5364:36;;5360:349;;4841:957;5722:16;;;5718:50;;4841:957;:::o;5360:349::-;5670:28;;;;;:::i;:::-;5360:349;;;;5201:150;5326:14;;;;:::o;890:97:41:-;946:10;942:38;;890:97;:::o;942:38::-;-1:-1:-1;;;;;958:5:41;8042:20055:34;958:22:41;;;;;;955:1;8042:20055:34;958:22:41;8042:20055:34;;;;958:22:41;;;;;8042:20055:34;958:22:41;;;;;8042:20055:34;958:22:41;;;;;;;;890:97;:::o;958:22::-;955:1;958:22;;;:::i;698:103::-;752:10;748:46;;698:103;:::o;748:46::-;-1:-1:-1;;;;;764:5:41;8042:20055:34;764:30:41;;;;;761:1;8042:20055:34;764:30:41;8042:20055:34;;764:30:41;;;;8042:20055:34;764:30:41;;;;;;;;;;698:103;:::o;12574:447:64:-;;;12729:286;-1:-1:-1;12729:286:64;;;;;;;;12574:447;:::o;3033:323:35:-;-1:-1:-1;;;;;8042:20055:34;;885:1:62;3121:39:35;;885:1:62;;661:64:67;;;;3176:18:35;:::o;3117:233::-;1034:1:62;3215:41:35;1034:1:62;;3287:4:35;;3272:20;:::o;24898:172:34:-;;24982:24;;;:::i;:::-;25020:11;;25016:47;;24898:172;;;:::o;25016:47::-;25055:7;;;:::i;24402:400::-;;24497:24;;;:::i;:::-;24535:10;;;24531:23;;24651:18;;;;-1:-1:-1;;;;;24685:11:34;8042:20055;24685:34;;;;;;24544:1;8042:20055;;;;;24685:34;;;;;;8042:20055;24685:34;;8042:20055;24685:34;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;24685:34;;;;;;;;;;24647:149;24402:400::o;24685:34::-;;;24544:1;24685:34;;;:::i;24647:149::-;24779:5;499:12:45;661:64:67;;24779:5:34;;:::i;24531:23::-;24547:7;;;:::o;8042:20055::-;;;;;;;;;:::o;23524:661::-;23782:50;23816:4;;23782:11;:50;:::i;:::-;661:64:67;;;-1:-1:-1;23932:17:34;;-1:-1:-1;;;24074:14:34;24066:23;24074:14;;:::i;23928:251::-;24145:22;;;;:::i;13116:531:64:-;;13294:347;-1:-1:-1;13294:347:64;;;;;;;;;;;;;13116:531;:::o;4181:249:36:-;;4286:36;;;4345:24;;;;:::i;4282:142::-;4400:13;;:::o;1270:173::-;;;1362:11;;1358:24;;-1:-1:-1;;;;;1391:11:36;8042:20055:34;1391:45:36;;;;;1372:1;8042:20055:34;;1391:45:36;8042:20055:34;-1:-1:-1;;;;;8042:20055:34;;;;1391:45:36;;;;;8042:20055:34;1391:45:36;;8042:20055:34;1391:45:36;;;8042:20055:34;;;;;;;;;;1391:45:36;;;;;;;;1270:173;:::o;1391:45::-;;;1372:1;1391:45;;;:::i;:::-;8042:20055:34;;;;;1270:173:36:o;3413:134:35:-;3499:41;;;661:64:67;;3413:134:35;:::o;3499:41::-;3535:4;3413:134;:::o;3760:359:36:-;;678:66:62;3867:42:36;;678:66:62;;3932:24:36;;;;:::i;3863:250::-;3977:36;;;4036:22;;;;:::i;1766:346::-;;1856:11;;1852:24;;-1:-1:-1;;;;;1886:11:36;8042:20055:34;1886:26:36;;;;;;8042:20055:34;;;1886:26:36;;-1:-1:-1;;;;;8042:20055:34;;1886:26:36;;;8042:20055:34;-1:-1:-1;8042:20055:34;;;-1:-1:-1;1886:26:36;;;;;;;;;1766:346;-1:-1:-1;;;;;;8042:20055:34;;1926:24:36;;8042:20055:34;;1966:35:36;8042:20055:34;1886:26:36;8042:20055:34;;1966:35:36;;;;8042:20055:34;1966:35:36;;;;;;;;;;1922:184;1766:346::o;1966:35::-;;;;;;;;;;;;;:::i;:::-;;890:97:41:o;1922:184:36:-;1866:1;2054:6;2075:20;2054:6;;;;;:::i;:::-;1886:26;8042:20055:34;;2075:20:36;;;;8042:20055:34;2075:20:36;;;;;;;;;;1922:184;1766:346::o;1886:26::-;;;1866:1;1886:26;;;:::i;:::-;;;;23296:222:34;;23421:25;23485;23296:222;23421:25;;;;:::i;:::-;23485;;;:::i;23004:286::-;;23259:23;23004:286;23198:23;661:64:67;;23198:23:34;;;;;:::i;:::-;23259;;;:::i;7339:532:64:-;;;7609:217;;;;;;;;;;;;7847:17;15527:941;;;;;;;;;;;;;;7609:217;15527:941;;;;;;;;;;;;7836:28;7339:532;:::o;10015:162:34:-;;;;;661:64:67;;10096:35:34;;;;:::i;:::-;10095:36;10091:68;;21632:31;;;;:::i;:::-;2057:106:69;;;;;;;;2264;;;;2057;2264;21702:67:34;21694:76;21702:67;;;;;;:::i;:::-;8042:20055;;;;21694:76;21797:16;;;;:::i;:::-;21860:21;-1:-1:-1;21860:21:34;;8042:20055;;27101:12;8042:20055;;;;;;;21860:21;8042:20055;21966:7;;;:::i;:::-;-1:-1:-1;22087:13:34;;22083:748;;10015:162;2478:89:69;;;;;;;;;;22889:102:34;;10015:162;;;;;;:::o;22889:102::-;22979:11;;;:::i;:::-;22889:102;;;;;;;22083:748;22293:224;22441:20;;;;;;22563:54;22441:20;22293:224;22439:23;22441:20;;;:::i;:::-;22439:23;:::i;:::-;1089:20:69;22293:224:34;1089:20:69;;:::i;:::-;22293:224:34;;8042:20055;;;;;;22293:224;8042:20055;;2264:106:69;22293:224:34;;8042:20055;;22293:224;;;;1089:20:69;22293:224:34;;;;1089:20:69;8042:20055:34;;22563:54;;;;;8042:20055;22563:54;;;;;;:::i;:::-;;:11;-1:-1:-1;;;;;;22563:11:34;8042:20055;22563:54;;;;;;-1:-1:-1;;;22563:54:34;;;22083:748;22531:86;;22752:28;22531:86;22809:10;22531:86;;22752:28;;:::i;:::-;22809:10;:::i;:::-;22083:748;;;;;;;;;22563:54;22752:28;22563:54;;22809:10;22563:54;;;;;;22293:224;22563:54;22293:224;22563:54;;;;;;;;:::i;:::-;;;;;:::i;:::-;;;;;;;;;;;;;;;10091:68;-1:-1:-1;;;;;10140:19:34;;-1:-1:-1;10140:19:34;8042:20055;10140:19;8042:20055;;-1:-1:-1;10140:19:34;1089:20:69;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1089:20:69;;;8042:20055:34;;1089:20:69;;;8042:20055:34;1089:20:69;;;;8042:20055:34;;1089:20:69;;;8042:20055:34;1089:20:69;;;;;;;8042:20055:34;1089:20:69;;;;;8042:20055:34;1089:20:69;;;;;;;;:::i;6367:871:64:-;;;6799:393;;;;;;;;;;;;;;;;;;;;;;;;;7213:18;15527:941;;;;;;;;;;;;;;;;;;;;;;;;;;;7202:29;6367:871;:::o;8042:20055:34:-;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;:::o;20553:795::-;;;21332:8;20553:795;;;;;;8042:20055;20969:273;20827:36;357:173:31;8042:20055:34;;;;:::i;:::-;357:173:31;20827:11:34;:36;:::i;:::-;21048:38;;;;;;:::i;:::-;21100;;;:::i;:::-;21152:33;8042:20055;;;;;:::i;:::-;21152:33;:::i;:::-;21214:17;21199:33;21214:17;;;8042:20055;;;;:::i;21199:33::-;20969:273;;:::i;:::-;8042:20055;21332:8;;:::i;5287:956:64:-;;;5740:458;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6218:18;15527:941;;;;;;;;;;;;;;;;;;;;;;;;;;;6207:29;5287:956;:::o;8042:20055:34:-;;;;;;;;;;;:::i;:::-;;635:23:42;-1:-1:-1;;;;;8042:20055:34;635:23:42;;;;;;;;8042:20055:34;;;;;;;;;;;;:::i;:::-;;635:23:42;-1:-1:-1;;;;;8042:20055:34;635:23:42;;;;;;;;8042:20055:34;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;635:23:42;-1:-1:-1;;;;;8042:20055:34;635:23:42;;;;;;;;19298:1249:34;;;;;;;;;;19727:13;8042:20055;;;;;19727:13;8042:20055;-1:-1:-1;;;;;8042:20055:34;;5317:16:5;5309:46;5317:16;;;5309:46;:::i;:::-;8042:20055:34;-1:-1:-1;8042:20055:34;5374:8:5;8042:20055:34;;-1:-1:-1;;;;;8042:20055:34;-1:-1:-1;8042:20055:34;;;;;19852:61;20397:81;5509:14:5;8042:20055:34;5509:14:5;;20529:10:34;5509:14:5;5546:17;5509:14;;20429:20:34;5509:14:5;-1:-1:-1;;;;;8042:20055:34;;;3526:10:5;8042:20055:34;;;;;;;5509:14:5;8042:20055:34;;;;;;5546:12:5;;8042:20055:34;;3081:8:5;8042:20055:34;;;;;;;5546:17:5;-1:-1:-1;5579:28:5;;;;8042:20055:34;;;;:::i;:::-;3670:266:69;8042:20055:34;357:173:31;3670:266:69;3442:500;357:173:31;8042:20055:34;3670:266:69;;;;;;;;;;3442:500;;19852:61:34;19923:21;;;;8042:20055;;27101:12;8042:20055;;;;;;;19923:21;8042:20055;1866:90:69;;;20194:16:34;8042:20055;;20194:16;;8042:20055;;;;20194:8;8042:20055;;;;;;;20194:16;:28;8042:20055;;;;;;;;5374:8:5;8042:20055:34;20194:33;20190:90;;19298:1249;20429:20;;;:::i;:::-;8042:20055;;;;:::i;:::-;20397:81;;:::i;:::-;20529:10;;:::i;20190:90::-;20243:16;8042:20055;20243:16;8042:20055;;;;20194:8;8042:20055;;;;;;;20243:16;8042:20055;:::i;:::-;20190:90;;;;8042:20055;;;;;;;;;;;;;;;;;;;;;;;3884:614:64;;;4178:275;;;;;;;;;;;;;;;;;4474:17;15527:941;;;;;;;;;;;;;;4178:275;15527:941;;;;;;;;;;;;4463:28;3884:614;:::o;10015:162:34:-;;;;;;;;;661:64:67;;10096:35:34;;;;:::i;:::-;10095:36;10091:68;;18844:31;;19217:28;18844:31;;19040:20;19274:10;18844:31;;19038:23;18844:31;19006:84;18844:31;;:::i;:::-;19040:20;;;;:::i;19038:23::-;19006:84;;:::i;:::-;19217:28;;:::i;10015:162::-;;;;;;;;661:64:67;;10096:35:34;;;;:::i;:::-;10095:36;10091:68;;17389:31;18441:10;17389:31;;18385:28;17389:31;;;18177:81;17389:31;;:::i;:::-;357:173:31;18209:20:34;8042:20055;17642:311;17500:36;357:173:31;;;17500:11:34;:36;:::i;:::-;2057:106:69;;;17729:45:34;2057:106:69;;;;;17729:45:34;:::i;:::-;17792;2264:106:69;;;2057;2264;17792:45:34;:::i;:::-;17855:33;-1:-1:-1;;;;;8042:20055:34;;;17855:33;:::i;:::-;17921:17;17906:33;-1:-1:-1;;;;;2264:106:69;17921:17:34;;8042:20055;;17906:33;:::i;17642:311::-;8042:20055;18209:20;:::i;18385:28::-;18441:10;:::i;10015:162::-;;;;;;;;;661:64:67;;10096:35:34;;;;:::i;:::-;10095:36;10091:68;;16541:31;;16994:28;16541:31;;16818:20;17050:10;16541:31;;;16786:81;16541:31;;:::i;:::-;16818:20;;;;:::i;14852:160:25:-;8042:20055:34;;14953:51:25;;;8042:20055:34;;;414:1:25;8042:20055:34;1100:1:25;;8042:20055:34;;14953:51:25;;;;;;:::i;4633:271:30:-;-1:-1:-1;;;;;8042:20055:34;;4732:24:30;;4779:13;;4772:20;:::o;4728:170::-;8042:20055:34;-1:-1:-1;;;;;4830:57:30;8042:20055:34;;;;;4830:57:30;;;;;8042:20055:34;4830:57:30;;8042:20055:34;4830:57:30;;;8042:20055:34;;4830:57:30;;;;;;;8042:20055:34;4830:57:30;;;4823:64;;:::o;4830:57::-;;;;8042:20055:34;4830:57:30;8042:20055:34;4830:57:30;;;;;;;:::i;2757:401:36:-;2864:50;2898:4;;2864:11;:50;:::i;:::-;2998:11;3008:1;2998:11;;2994:50;;3142:8;;;;:::i;2994:50::-;-1:-1:-1;;;;;3018:26:36;;3008:1;3018:26;8042:20055:34;3018:26:36;8042:20055:34;;3008:1:36;3018:26;4351:276:30;-1:-1:-1;;;;;8042:20055:34;;4439:24:30;;4486:21;;4479:28;:::o;4435:186::-;8042:20055:34;;;4545:65:30;;4604:4;4545:65;;;8042:20055:34;;4545:65:30;;8042:20055:34;;;;;;-1:-1:-1;;;;;8042:20055:34;4545:65:30;;;;;;;8042:20055:34;4545:65:30;;;4538:72;;:::o;1472:2873::-;;;;-1:-1:-1;;;;;8042:20055:34;;1769:24:30;;1809:163;-1:-1:-1;1809:163:30;;;2085:8;1809:163;;;;2085:8;;8042:20055:34;2085:8:30;2081:127;;1765:2574;1472:2873::o;2081:127::-;2163:29;:::i;1765:2574::-;2238:1774;;-1:-1:-1;;;;;2238:1774:30;;;;;;;;;;;;;;;-1:-1:-1;2238:1774:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4124:8;4120:209;;1765:2574;1472:2873::o;4120:209::-;-1:-1:-1;;;;;8042:20055:34;4268:28:30;:::i;3365:331:36:-;3474:50;3508:4;;3474:11;:50;:::i;:::-;3608:11;3618:1;3608:11;;3604:50;;3664:25;3365:331;:::o;3604:50::-;-1:-1:-1;;;;;3628:26:36;;3618:1;3628:26;8042:20055:34;3628:26:36;8042:20055:34;;3618:1:36;3628:26;1711:436:27;-1:-1:-1;;;;;1711:436:27;;;1853:233;1711:436;1853:233;-1:-1:-1;1853:233:27;;;;2117:21;1853:233;-1:-1:-1;1853:233:27;;8042:20055:34;2117:21:27;;;;;8042:20055:34;2117:21:27;;;;;8042:20055:34;;2117:21:27;;;;;;;-1:-1:-1;2117:21:27;;;2095:45;1711:436;:::o;25975:421:34:-;;;;-1:-1:-1;;;;;8042:20055:34;;26088:4;26071:22;26088:4;;26149:6;26135:11;;-1:-1:-1;;;;;26135:11:34;8042:20055;26149:6;;:::i;26067:323::-;26286:7;-1:-1:-1;;;;;26286:7:34;8042:20055;26286:93;;;;;8042:20055;;;26286:93;;-1:-1:-1;;;;;8042:20055:34;;;26286:93;;;8042:20055;26322:11;8042:20055;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8042:20055:34;;;;;;-1:-1:-1;;26286:93:34;;;;;;;;26067:323;25975:421::o;5620:371:5:-;8042:20055:34;-1:-1:-1;8042:20055:34;5690:8:5;8042:20055:34;;-1:-1:-1;;;;;;8042:20055:34;;;;;5713:42:5;5721:19;;;5713:42;:::i;:::-;8042:20055:34;;;5845:10:5;8042:20055:34;;;;;;;;;;;5892:12:5;;8042:20055:34;;3081:8:5;8042:20055:34;;;;;;;5892:12:5;8042:20055:34;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;5922:15:5;;8042:20055:34;;;;;;;;;;5922:15:5;8042:20055:34;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;;;;;;;;;5953:31:5;;;;5620:371::o;1776:151:24:-;;1879:1;1848:13;1875:5;1871:49;;1776:151::o;1871:49::-;1882:25;1879:1;814:96:16;;1879:1:24;814:96:16;1070:396:28;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;954:846:70:-;;;;;8042:20055:34;2052:83:28;;;1501:27:70;;;;;:::i;:::-;8042:20055:34;;;;;;1501:40:70;1497:144;;2241:89:28;8042:20055:34;2241:89:28;;;;;1654:27:70;;;;;:::i;:::-;8042:20055:34;;;;;;1654:40:70;1650:144;;954:846;;:::o;1650:144::-;1755:27;;8042:20055:34;1755:27:70;;:::i;:::-;1717:66;;;;;8042:20055:34;;;;;1717:66:70;;1497:144;8042:20055:34;1602:27:70;;;;:::i;3441:622:42:-;-1:-1:-1;8042:20055:34;;;3672:10:42;8042:20055:34;;;;;;;;;;;;;-1:-1:-1;;;;;8042:20055:34;;;;3921:8:42;;3800:106;;3441:622;;;;;;;;8042:20055:34;;3819:86:42;;8042:20055:34;3819:86:42;;;;;;8042:20055:34;;;;;;;;;;;;;;;;;;;3819:86:42;;;;;;:::i;3921:8::-;3917:140;;3441:622;:::o;3917:140::-;4012:33;:::i;1580:996:25:-;8042:20055:34;1580:996:25;1892:27;1841:25;-1:-1:-1;;;;;1580:996:25;;1841:25;:::i;:::-;8042:20055:34;;1892:27:25;;;;;8042:20055:34;1892:27:25;;;;;8042:20055:34;;1892:27:25;;;;;;;-1:-1:-1;1892:27:25;;;1580:996;2147:423;-1:-1:-1;;;;;2147:423:25;;;;;;;;;;;;;;;;;;;1580:996;:::o;1892:27::-;;;;;8042:20055:34;1892:27:25;8042:20055:34;1892:27:25;;;;;;;:::i;:::-;;;;;3149:4018:26;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:26;;3149:4018;6424:727;4959:4;6424:727;3149:4018;:::o;6424:727::-;;;;;6331:78;6376:25;1317:6;;;8042:20055:34;;;6331:78:26;;6234:83;6279:30;1317:6;;;8042:20055:34;;;6234:83:26;;6135:85;1317:6;6180:32;1317:6;8042:20055:34;;6135:85:26;;;6035:86;1317:6;6080:33;1317:6;8042:20055:34;;6035:86:26;;;5935;1317:6;5979:34;1317:6;8042:20055:34;;5935:86:26;;;5835;1317:6;5879:34;1317:6;8042:20055:34;;5835:86:26;;;5735;1317:6;5779:34;1317:6;8042:20055:34;;5735:86:26;;;5635;1317:6;5679:34;1317:6;8042:20055:34;;5635:86:26;;;5536:85;1317:6;5579:34;1317:6;8042:20055:34;;5536:85:26;;;5437;1317:6;5480:34;1317:6;8042:20055:34;;5437:85:26;;;5338;1317:6;5381:34;1317:6;8042:20055:34;;5338:85:26;;;5239;1317:6;5282:34;1317:6;8042:20055:34;;5239:85:26;;;5141:84;1317:6;5183:34;1317:6;8042:20055:34;;5141:84:26;;;5043;1317:6;5085:34;1317:6;8042:20055:34;;5043:84:26;;;4945;1317:6;4987:34;1317:6;8042:20055:34;;4945:84:26;;;4847;1317:6;4889:34;1317:6;8042:20055:34;;4847:84:26;;;4750:83;1317:6;4791:34;1317:6;8042:20055:34;;4750:83:26;;;4653;1317:6;4694:34;1317:6;8042:20055:34;;4653:83:26;;;4556;1317:6;4597:34;1317:6;8042:20055:34;;4556:83:26;;;3770:78;3843:4;;:::i;2870:901:66:-;;-1:-1:-1;;;;;8042:20055:34;;-1:-1:-1;;;;;8042:20055:34;;3106:29:66;3102:98;;2870:901;-1:-1:-1;;;;;8042:20055:34;;;;;;;3215:29:66;;8042:20055:34;;3272:61:66;;;;;;:::i;3211:554::-;8042:20055:34;;;;;-1:-1:-1;;;;;8042:20055:34;;-1:-1:-1;3350:415:66;8042:20055:34;;;3419:60:66;;;;3514;3419;;;:::i;:::-;3514;;:::i;:::-;8042:20055:34;;;;;;3601:23:66;:49;8042:20055:34;;;3601:49:66;3350:415;2870:901::o;3350:415::-;3693:61;;;;;;:::i;3102:98::-;3170:30;3137:63;3102:98;;;25181:726:34;;;;25536:204;25181:726;25474:298;1089:20:69;;:::i;:::-;2057:106;;;;;;8042:20055:34;;2057:106:69;2264;;;;2057;2264;25536:204:34;;;8042:20055;25536:204;;;;1089:20:69;25536:204:34;;;;1089:20:69;8042:20055:34;;25474:298;;;;;8042:20055;25474:298;;;;;;:::i;:::-;;:11;25536:204;-1:-1:-1;;;;;25474:11:34;8042:20055;25474:298;;;;;;;25536:204;;;25474:298;;;25181:726;25442:330;;;2478:89:69;;;25783:118:34;;25181:726;;;:::o;25783:118::-;25878:11;;;:::i;25474:298::-;;;;;;;25536:204;25474:298;25536:204;25474:298;;;;;;;:::i;:::-;;;;;;2210:1207:70;;2052:83:28;;;8042:20055:34;;2241:89:28;8042:20055:34;2241:89:28;3100:11:70;3110:1;3100:11;;:54;;;2210:1207;3096:153;;3262:11;;3110:1;3262:11;;:54;;;2210:1207;3258:153;;2210:1207;;:::o;3258:153::-;3389:8;3373:26;3389:8;3339:61;3389:8;;:::i;3373:26::-;3339:61;3110:1;3339:61;8042:20055:34;;;;3177:61:70;8042:20055:34;;;;;;;3262:54:70;3306:8;8042:20055:34;3306:8:70;;;;:::i;:::-;8042:20055:34;;;;;3277:39:70;3262:54;;3096:153;3227:8;8042:20055:34;3227:8:70;3177:61;3227:8;;:::i;:::-;3177:61;3110:1;3177:61;8042:20055:34;;;;3177:61:70;8042:20055:34;;;;;;;;3100:54:70;3144:8;8042:20055:34;3144:8:70;;;:::i;:::-;8042:20055:34;;;;3115:39:70;3100:54;;1460:151:24;;8042:20055:34;;;1558:6:24;;;1554:50;;1460:151::o;1123:153::-;1204:1;8042:20055:34;;;1200:5:24;1196:49;;8042:20055:34;;1123:153:24;:::o;1357:223:16:-;3811:20:26;1431:143:16;;;;;;;;;1850:420:66;;-1:-1:-1;;;;;2168:85:66;1850:420;2168:73;1850:420;8042:20055:34;;;;;;2053:29:66;2049:98;;1850:420;335:27:18;8042:20055:34;2168:73:66;;:::i;:::-;:85;:::i;2049:98::-;;;;895:516;;1313:69;895:516;1313:81;895:516;-1:-1:-1;;;;;8042:20055:34;;-1:-1:-1;;;;;8042:20055:34;;1098:29:66;1094:98;;895:516;-1:-1:-1;;;;;8042:20055:34;1229:63:66;8042:20055:34;;;;;;1229:63:66;:::i;:::-;335:27:18;;8042:20055:34;1313:69:66;;:::i;1094:98::-;1162:30;1094:98;;4069:535:42;4263:132;4069:535;;8042:20055:34;-1:-1:-1;8042:20055:34;4217:10:42;8042:20055:34;;-1:-1:-1;;;;;8042:20055:34;-1:-1:-1;8042:20055:34;;;;;;4295:90:42;;8042:20055:34;4295:90:42;;;;;;8042:20055:34;;;;;;;;;;4295:90:42;;;;;;:::i;:::-;4263:132;;:::i;:::-;4410:8;4406:192;;4069:535;:::o;4406:192::-;4295:90;3741:1424:16;;;;8042:20055:34;3741:1424:16;;3710:21;3741:1424;;;;;;4295:90:42;;3741:1424:16;;;;8042:20055:34;3741:1424:16;;;;;;8042:20055:34;3741:1424:16;;;;4295:90:42;3741:1424:16;;;;-1:-1:-1;3741:1424:16;;;;4529:44:42;3741:1424:16;;;;;;;;;;;;;;;8042:20055:34;;;;:::o;741:4141:19:-;;1317:6:26;;;1347:147:19;;335:27:18;1347:147:19;;;;;;;;;;;;;1619:19;1611:28;1619:19;;;1611:28;:::i;:::-;1720:10;1716:177;;335:27:18;2224:95:19;;;8042:20055:34;;;;2716:31:19;2811:94;;;3776:1;1317:6:26;3757:1:19;1317:6:26;3756:21:19;1317:6:26;;;3776:1:19;8042:20055:34;1317:6:26;;;;3776:1:19;8042:20055:34;1317:6:26;;;;3776:1:19;8042:20055:34;1317:6:26;;;;3776:1:19;8042:20055:34;1317:6:26;;;;3776:1:19;8042:20055:34;1317:6:26;;;;3776:1:19;8042:20055:34;1317:6:26;3254:96:19;;;;8042:20055:34;3254:96:19;;;2391:145;;;;;;1317:6:26;2391:145:19;;2977:82;3363:21;1317:6:26;741:4141:19;:::o;1716:177::-;1750:98;;;;1865:13;:::o;741:4141::-;;1317:6:26;;;1347:147:19;;;;;;;;;;;;;;;;1619:19;;335:27:18;1619:19:19;8042:20055:34;;;1720:10:19;1716:177;;335:27:18;2224:95:19;;2391:145;;;;;;1317:6:26;;2391:145:19;;2977:82;;3363:21;741:4141;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;741:4141::-;;1317:6:26;;;1347:147:19;;;;;;;;;;;;;;;;1619:19;1611:28;1619:19;;;1611:28;:::i;:::-;1720:10;1716:177;;2224:95;;;;8042:20055:34;;;;2716:31:19;2811:94;;;3776:1;1317:6:26;3757:1:19;1317:6:26;3756:21:19;1317:6:26;;;3776:1:19;8042:20055:34;1317:6:26;;;;3776:1:19;8042:20055:34;1317:6:26;;;;3776:1:19;8042:20055:34;1317:6:26;;;;3776:1:19;8042:20055:34;1317:6:26;;;;3776:1:19;8042:20055:34;1317:6:26;;;;3776:1:19;8042:20055:34;1317:6:26;3254:96:19;;;;8042:20055:34;3254:96:19;;;2391:145;;;;;;1317:6:26;2391:145:19;;2977:82;3363:21;1317:6:26;741:4141:19;:::o;1716:177::-;1750:98;;;;;1865:13;:::o;790:155:24:-;;8042:20055:34;;;892:6:24;;;888:50;;790:155::o","linkReferences":{},"immutableReferences":{"4687":[{"start":5685,"length":32},{"start":8107,"length":32}],"6734":[{"start":9429,"length":32}],"6736":[{"start":9391,"length":32}],"6738":[{"start":9508,"length":32}],"7127":[{"start":2806,"length":32},{"start":3765,"length":32},{"start":4468,"length":32},{"start":6336,"length":32},{"start":7228,"length":32},{"start":7377,"length":32},{"start":8353,"length":32},{"start":8600,"length":32},{"start":10584,"length":32},{"start":10796,"length":32},{"start":12059,"length":32},{"start":15686,"length":32},{"start":15929,"length":32},{"start":16092,"length":32},{"start":16371,"length":32},{"start":17179,"length":32},{"start":17780,"length":32},{"start":19177,"length":32},{"start":19558,"length":32},{"start":19940,"length":32},{"start":20169,"length":32},{"start":20313,"length":32},{"start":22383,"length":32}],"7239":[{"start":5250,"length":32},{"start":10698,"length":32},{"start":14914,"length":32},{"start":15006,"length":32},{"start":15298,"length":32},{"start":15435,"length":32}],"7341":[{"start":5184,"length":32},{"start":12795,"length":32}],"7695":[{"start":924,"length":32},{"start":2574,"length":32},{"start":3529,"length":32},{"start":20218,"length":32}]}},"methodIdentifiers":{"DOMAIN_SEPARATOR()":"3644e515","WETH9()":"4aa4a4fc","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","getApproved(uint256)":"081812fc","getPoolAndPositionInfo(uint256)":"7ba03aad","getPositionLiquidity(uint256)":"1efeed33","initializePool((address,address,uint24,int24,address),uint160)":"f7020405","isApprovedForAll(address,address)":"e985e9c5","modifyLiquidities(bytes,uint256)":"dd46508f","modifyLiquiditiesWithoutUnlock(bytes,bytes[])":"4afe393c","msgSender()":"d737d0c7","multicall(bytes[])":"ac9650d8","name()":"06fdde03","nextTokenId()":"75794a3c","nonces(address,uint256)":"502e1a16","ownerOf(uint256)":"6352211e","permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":"2b67b570","permit(address,uint256,uint256,uint256,bytes)":"0f5730f1","permit2()":"12261ee7","permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":"002a3e3a","permitForAll(address,address,bool,uint256,uint256,bytes)":"3aea60f0","poolKeys(bytes25)":"86b6be7d","poolManager()":"dc4c90d3","positionInfo(uint256)":"89097a6a","revokeNonce(uint256)":"05c1ee20","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","subscribe(uint256,address,bytes)":"2b9261de","subscriber(uint256)":"16a24131","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenDescriptor()":"5a9d7a68","tokenURI(uint256)":"c87b56dd","transferFrom(address,address,uint256)":"23b872dd","unlockCallback(bytes)":"91dd7346","unsubscribe(uint256)":"ad0b27fb","unsubscribeGasLimit()":"4767565f"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"_poolManager\",\"type\":\"address\"},{\"internalType\":\"contract IAllowanceTransfer\",\"name\":\"_permit2\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_unsubscribeGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"contract IPositionDescriptor\",\"name\":\"_tokenDescriptor\",\"type\":\"address\"},{\"internalType\":\"contract IWETH9\",\"name\":\"_weth9\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"AlreadySubscribed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"BurnNotificationReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ContractLocked\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"DeadlinePassed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"DeltaNotNegative\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"DeltaNotPositive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasLimitTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputLengthMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidContractSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidEthSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSigner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"maximumAmount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountRequested\",\"type\":\"uint128\"}],\"name\":\"MaximumAmountExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint128\",\"name\":\"minimumAmount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountReceived\",\"type\":\"uint128\"}],\"name\":\"MinimumAmountInsufficient\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"ModifyLiquidityNotificationReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoCodeSubscriber\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoSelfPermit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NonceAlreadyUsed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"NotApproved\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPoolManager\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotSubscribed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolManagerMustBeLocked\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SignatureDeadlineExpired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"reason\",\"type\":\"bytes\"}],\"name\":\"SubscriptionReverted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"Unauthorized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"action\",\"type\":\"uint256\"}],\"name\":\"UnsupportedAction\",\"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\"}],\"name\":\"Approval\",\"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\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"Subscription\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"subscriber\",\"type\":\"address\"}],\"name\":\"Unsubscription\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH9\",\"outputs\":[{\"internalType\":\"contract IWETH9\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getPoolAndPositionInfo\",\"outputs\":[{\"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\":\"poolKey\",\"type\":\"tuple\"},{\"internalType\":\"PositionInfo\",\"name\":\"info\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getPositionLiquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"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\":\"initializePool\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"unlockData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"modifyLiquidities\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"actions\",\"type\":\"bytes\"},{\"internalType\":\"bytes[]\",\"name\":\"params\",\"type\":\"bytes[]\"}],\"name\":\"modifyLiquiditiesWithoutUnlock\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"msgSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"multicall\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextTokenId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"word\",\"type\":\"uint256\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"bitmap\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails\",\"name\":\"details\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitSingle\",\"name\":\"permitSingle\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permit\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"err\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"permit2\",\"outputs\":[{\"internalType\":\"contract IAllowanceTransfer\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint160\",\"name\":\"amount\",\"type\":\"uint160\"},{\"internalType\":\"uint48\",\"name\":\"expiration\",\"type\":\"uint48\"},{\"internalType\":\"uint48\",\"name\":\"nonce\",\"type\":\"uint48\"}],\"internalType\":\"struct IAllowanceTransfer.PermitDetails[]\",\"name\":\"details\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sigDeadline\",\"type\":\"uint256\"}],\"internalType\":\"struct IAllowanceTransfer.PermitBatch\",\"name\":\"_permitBatch\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitBatch\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"err\",\"type\":\"bytes\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"permitForAll\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes25\",\"name\":\"poolId\",\"type\":\"bytes25\"}],\"name\":\"poolKeys\",\"outputs\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolManager\",\"outputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"positionInfo\",\"outputs\":[{\"internalType\":\"PositionInfo\",\"name\":\"info\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"revokeNonce\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"newSubscriber\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"subscribe\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"subscriber\",\"outputs\":[{\"internalType\":\"contract ISubscriber\",\"name\":\"subscriber\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenDescriptor\",\"outputs\":[{\"internalType\":\"contract IPositionDescriptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"unlockCallback\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"unsubscribe\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unsubscribeGasLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"PoolManagerMustBeLocked()\":[{\"details\":\"This is to prevent hooks from being able to trigger notifications at the same time the position is being modified.\"}]},\"kind\":\"dev\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"returns\":{\"_0\":\"bytes32 The domain separator\"}},\"approve(address,uint256)\":{\"details\":\"override Solmate's ERC721 approve so approve() and permit() share the _approve method Passing a spender address of zero can be used to remove any outstanding approvals Throws error unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.\",\"params\":{\"id\":\"The tokenId of the NFT to approve\",\"spender\":\"The new approved NFT controller\"}},\"getPoolAndPositionInfo(uint256)\":{\"params\":{\"tokenId\":\"the ERC721 tokenId\"},\"returns\":{\"info\":\"PositionInfo a uint256 packed value holding information about the position including the range (tickLower, tickUpper)\",\"poolKey\":\"the pool key of the position\"}},\"getPositionLiquidity(uint256)\":{\"details\":\"this value can be processed as an amount0 and amount1 by using the LiquidityAmounts library\",\"params\":{\"tokenId\":\"the ERC721 tokenId\"},\"returns\":{\"liquidity\":\"the position's liquidity, as a liquidityAmount\"}},\"initializePool((address,address,uint24,int24,address),uint160)\":{\"details\":\"If the pool is already initialized, this function will not revert and just return type(int24).max\",\"params\":{\"key\":\"The PoolKey of the pool to initialize\",\"sqrtPriceX96\":\"The initial starting price of the pool, expressed as a sqrtPriceX96\"},\"returns\":{\"_0\":\"The current tick of the pool, or type(int24).max if the pool creation failed, or the pool already existed\"}},\"modifyLiquidities(bytes,uint256)\":{\"details\":\"This is the standard entrypoint for the PositionManager\",\"params\":{\"deadline\":\"is the deadline for the batched actions to be executed\",\"unlockData\":\"is an encoding of actions, and parameters for those actions\"}},\"modifyLiquiditiesWithoutUnlock(bytes,bytes[])\":{\"details\":\"This must be called by a contract that has already unlocked the v4 PoolManager\",\"params\":{\"actions\":\"the actions to perform\",\"params\":\"the parameters to provide for the actions\"}},\"msgSender()\":{\"details\":\"The other context functions, _msgData and _msgValue, are not supported by this contract In many contracts this will be the address that calls the initial entry point that calls `_executeActions` `msg.sender` shouldn't be used, as this will be the v4 pool manager contract that calls `unlockCallback` If using ReentrancyLock.sol, this function can return _getLocker()\"},\"multicall(bytes[])\":{\"details\":\"The `msg.value` is passed onto all subcalls, even if a previous subcall has consumed the ether. Subcalls can instead use `address(this).value` to see the available ETH, and consume it using {value: x}.\",\"params\":{\"data\":\"The encoded function data for each of the calls to make to this contract\"},\"returns\":{\"results\":\"The results from each of the calls passed in via data\"}},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"details\":\"this function is payable to allow multicall with NATIVE based actions\",\"params\":{\"owner\":\"the owner of the tokens\",\"permitSingle\":\"the permit data\",\"signature\":\"the signature of the permit; abi.encodePacked(r, s, v)\"},\"returns\":{\"err\":\"the error returned by a reverting permit call, empty if successful\"}},\"permit(address,uint256,uint256,uint256,bytes)\":{\"details\":\"payable so it can be multicalled with NATIVE related actions\",\"params\":{\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"nonce\":\"a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word\",\"signature\":\"Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)\",\"spender\":\"The account that is being approved\",\"tokenId\":\"The ID of the token that is being approved for spending\"}},\"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"details\":\"this function is payable to allow multicall with NATIVE based actions\",\"params\":{\"_permitBatch\":\"a batch of approvals\",\"owner\":\"the owner of the tokens\",\"signature\":\"the signature of the permit; abi.encodePacked(r, s, v)\"},\"returns\":{\"err\":\"the error returned by a reverting permit call, empty if successful\"}},\"permitForAll(address,address,bool,uint256,uint256,bytes)\":{\"details\":\"payable so it can be multicalled with NATIVE related actions\",\"params\":{\"approved\":\"The permission to set on the operator\",\"deadline\":\"The deadline timestamp by which the call must be mined for the approve to work\",\"nonce\":\"a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word\",\"operator\":\"The address that will be set as an operator for the owner\",\"owner\":\"The address that is setting the operator\",\"signature\":\"Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)\"}},\"revokeNonce(uint256)\":{\"details\":\"Used in cases where a valid nonce has not been broadcasted onchain, and the owner wants to revoke the validity of the noncepayable so it can be multicalled with native-token related actions\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.Override Solmate's ERC721 setApprovalForAll so setApprovalForAll() and permit() share the _approveForAll method\",\"params\":{\"approved\":\"True if the operator is approved, false to revoke approval\",\"operator\":\"Address to add to the set of authorized operators\"}},\"subscribe(uint256,address,bytes)\":{\"details\":\"Calling subscribe when a position is already subscribed will revertpayable so it can be multicalled with NATIVE related actionswill revert if pool manager is locked\",\"params\":{\"data\":\"caller-provided data that's forwarded to the subscriber contract\",\"newSubscriber\":\"the address of the subscriber contract\",\"tokenId\":\"the ERC721 tokenId\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"overrides solmate transferFrom in case a notification to subscribers is neededwill revert if pool manager is locked\"},\"unlockCallback(bytes)\":{\"details\":\"We force the onlyPoolManager modifier by exposing a virtual function after the onlyPoolManager check.\",\"params\":{\"data\":\"The data that was passed to the call to unlock\"},\"returns\":{\"_0\":\"Any data that you want to be returned from the unlock call\"}},\"unsubscribe(uint256)\":{\"details\":\"Callers must specify a high gas limit (remaining gas should be higher than unsubscriberGasLimit) such that the subscriber can be notifiedpayable so it can be multicalled with NATIVE related actionsMust always allow a user to unsubscribe. In the case of a malicious subscriber, a user can always unsubscribe safely, ensuring liquidity is always modifiable.will revert if pool manager is locked\",\"params\":{\"tokenId\":\"the ERC721 tokenId\"}}},\"stateVariables\":{\"nextTokenId\":{\"details\":\"The ID of the next token that will be minted. Skips 0\",\"return\":\"uint256 The next token ID\",\"returns\":{\"_0\":\"uint256 The next token ID\"}},\"positionInfo\":{\"params\":{\"tokenId\":\"the ERC721 tokenId\"},\"return\":\"info a uint256 packed value holding information about the position including the range (tickLower, tickUpper)\",\"returns\":{\"info\":\"a uint256 packed value holding information about the position including the range (tickLower, tickUpper)\"}}},\"version\":1},\"userdoc\":{\"errors\":{\"AlreadySubscribed(uint256,address)\":[{\"notice\":\"Thrown when a tokenId already has a subscriber\"}],\"BurnNotificationReverted(address,bytes)\":[{\"notice\":\"Wraps the revert message of the subscriber contract on a reverting burn notification\"}],\"DeadlinePassed(uint256)\":[{\"notice\":\"Thrown when the block.timestamp exceeds the user-provided deadline\"}],\"DeltaNotNegative(address)\":[{\"notice\":\"Emitted trying to take a negative delta.\"}],\"DeltaNotPositive(address)\":[{\"notice\":\"Emitted trying to settle a positive delta.\"}],\"GasLimitTooLow()\":[{\"notice\":\"Thrown when a user specifies a gas limit too low to avoid valid unsubscribe notifications\"}],\"InputLengthMismatch()\":[{\"notice\":\"emitted when different numbers of parameters and actions are provided\"}],\"InsufficientBalance()\":[{\"notice\":\"Emitted when the contract does not have enough balance to wrap or unwrap.\"}],\"InvalidContractSignature()\":[{\"notice\":\"Thrown when the recovered contract signature is incorrect\"}],\"InvalidEthSender()\":[{\"notice\":\"Thrown when an unexpected address sends ETH to this contract\"}],\"InvalidSignature()\":[{\"notice\":\"Thrown when the recovered signer is equal to the zero address\"}],\"InvalidSignatureLength()\":[{\"notice\":\"Thrown when the passed in signature is not a valid length\"}],\"InvalidSigner()\":[{\"notice\":\"Thrown when the recovered signer does not equal the claimedSigner\"}],\"ModifyLiquidityNotificationReverted(address,bytes)\":[{\"notice\":\"Wraps the revert message of the subscriber contract on a reverting modify liquidity notification\"}],\"NoCodeSubscriber()\":[{\"notice\":\"Thrown when a subscriber does not have code\"}],\"NotApproved(address)\":[{\"notice\":\"Thrown when the caller is not approved to modify a position\"}],\"NotPoolManager()\":[{\"notice\":\"Thrown when the caller is not PoolManager\"}],\"NotSubscribed()\":[{\"notice\":\"Thrown when unsubscribing without a subscriber\"}],\"PoolManagerMustBeLocked()\":[{\"notice\":\"Thrown when calling transfer, subscribe, or unsubscribe when the PoolManager is unlocked.\"}],\"SubscriptionReverted(address,bytes)\":[{\"notice\":\"Wraps the revert message of the subscriber contract on a reverting subscription\"}],\"UnsupportedAction(uint256)\":[{\"notice\":\"emitted when an inheriting contract does not support an action\"}]},\"events\":{\"Subscription(uint256,address)\":{\"notice\":\"Emitted on a successful call to subscribe\"},\"Unsubscription(uint256,address)\":{\"notice\":\"Emitted on a successful call to unsubscribe\"}},\"kind\":\"user\",\"methods\":{\"DOMAIN_SEPARATOR()\":{\"notice\":\"Returns the domain separator for the current chain.\"},\"WETH9()\":{\"notice\":\"The address for WETH9\"},\"approve(address,uint256)\":{\"notice\":\"Change or reaffirm the approved address for an NFT\"},\"getPoolAndPositionInfo(uint256)\":{\"notice\":\"Returns the pool key and position info of a position\"},\"getPositionLiquidity(uint256)\":{\"notice\":\"Returns the liquidity of a position\"},\"initializePool((address,address,uint24,int24,address),uint160)\":{\"notice\":\"Initialize a Uniswap v4 Pool\"},\"modifyLiquidities(bytes,uint256)\":{\"notice\":\"Unlocks Uniswap v4 PoolManager and batches actions for modifying liquidity\"},\"modifyLiquiditiesWithoutUnlock(bytes,bytes[])\":{\"notice\":\"Batches actions for modifying liquidity without unlocking v4 PoolManager\"},\"msgSender()\":{\"notice\":\"function that returns address considered executor of the actions\"},\"multicall(bytes[])\":{\"notice\":\"Call multiple functions in the current contract and return the data from all of them if they all succeed\"},\"nextTokenId()\":{\"notice\":\"Used to get the ID that will be used for the next minted liquidity position\"},\"nonces(address,uint256)\":{\"notice\":\"mapping of nonces consumed by each address, where a nonce is a single bit on the 256-bit bitmap\"},\"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)\":{\"notice\":\"allows forwarding a single permit to permit2\"},\"permit(address,uint256,uint256,uint256,bytes)\":{\"notice\":\"Approve of a specific token ID for spending by spender via signature\"},\"permit2()\":{\"notice\":\"the Permit2 contract to forward approvals\"},\"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)\":{\"notice\":\"allows forwarding batch permits to permit2\"},\"permitForAll(address,address,bool,uint256,uint256,bytes)\":{\"notice\":\"Set an operator with full permission to an owner's tokens via signature\"},\"poolManager()\":{\"notice\":\"The Uniswap v4 PoolManager contract\"},\"positionInfo(uint256)\":{\"notice\":\"Returns the position info of a position\"},\"revokeNonce(uint256)\":{\"notice\":\"Revoke a nonce by spending it, preventing it from being used again\"},\"setApprovalForAll(address,bool)\":{\"notice\":\"Enable or disable approval for a third party (\\\"operator\\\") to manage all of `msg.sender`'s assets\"},\"subscribe(uint256,address,bytes)\":{\"notice\":\"Enables the subscriber to receive notifications for a respective position\"},\"subscriber(uint256)\":{\"notice\":\"Returns the subscriber for a respective position\"},\"unlockCallback(bytes)\":{\"notice\":\"Called by the pool manager on `msg.sender` when the manager is unlocked\"},\"unsubscribe(uint256)\":{\"notice\":\"Removes the subscriber from receiving notifications for a respective position\"},\"unsubscribeGasLimit()\":{\"notice\":\"Returns and determines the maximum allowable gas-used for notifying unsubscribe\"}},\"notice\":\"The PositionManager (PosM) contract is responsible for creating liquidity positions on v4. PosM mints and manages ERC721 tokens associated with each position.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/PositionManager.sol\":\"PositionManager\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":30000},\"remappings\":[\":@ensdomains/=lib/v4-core/node_modules/@ensdomains/\",\":@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/\",\":@uniswap/v4-core/=lib/v4-core/\",\":ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/\",\":forge-std/=lib/v4-core/lib/forge-std/src/\",\":hardhat/=lib/v4-core/node_modules/hardhat/\",\":openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/\",\":permit2/=lib/permit2/\",\":solmate/=lib/v4-core/lib/solmate/\",\":v4-core/=lib/v4-core/src/\"],\"viaIR\":true},\"sources\":{\"lib/permit2/src/interfaces/IAllowanceTransfer.sol\":{\"keccak256\":\"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0\",\"dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN\"]},\"lib/permit2/src/interfaces/IEIP712.sol\":{\"keccak256\":\"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72\",\"dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk\"]},\"lib/permit2/src/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0a546b8535127fb4a49d36d5f306fd5a8bbe6125a1852f935b9bb85a04c1acef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4b99651e2df98e283a97c46d8d1ac4eff0d6a3618e25f7f85294472a670b541c\",\"dweb:/ipfs/QmYRy5G8fXE8BfmyvGEbESEYZPPg3zJEFxHzR5GJZEMMTk\"]},\"lib/permit2/src/libraries/SignatureVerification.sol\":{\"keccak256\":\"0x99f437ffe99aa1ff7885aec8b971f48efac00c6ebc59c02eec78c9ca850a5e30\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9365414bdb67813d4ef6c89fa152dff05fc2a64992a1a4f212fa414dbdee3eab\",\"dweb:/ipfs/QmfJxSszF1rjmMoNXW5oQMo9gARMHAXYTu68fkZvdEu58i\"]},\"lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/v4-core/lib/solmate/src/tokens/ERC721.sol\":{\"keccak256\":\"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403\",\"dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK\"]},\"lib/v4-core/src/interfaces/IExtsload.sol\":{\"keccak256\":\"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1\",\"dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN\"]},\"lib/v4-core/src/interfaces/IExttload.sol\":{\"keccak256\":\"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8\",\"dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY\"]},\"lib/v4-core/src/interfaces/IHooks.sol\":{\"keccak256\":\"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec\",\"dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G\"]},\"lib/v4-core/src/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4\",\"dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi\"]},\"lib/v4-core/src/interfaces/IProtocolFees.sol\":{\"keccak256\":\"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d\",\"dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J\"]},\"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol\":{\"keccak256\":\"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b\",\"dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK\"]},\"lib/v4-core/src/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de\",\"dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d\"]},\"lib/v4-core/src/interfaces/external/IERC6909Claims.sol\":{\"keccak256\":\"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f\",\"dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK\"]},\"lib/v4-core/src/libraries/BitMath.sol\":{\"keccak256\":\"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e\",\"dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi\"]},\"lib/v4-core/src/libraries/CurrencyReserves.sol\":{\"keccak256\":\"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725\",\"dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX\"]},\"lib/v4-core/src/libraries/CustomRevert.sol\":{\"keccak256\":\"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd\",\"dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt\"]},\"lib/v4-core/src/libraries/FixedPoint128.sol\":{\"keccak256\":\"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb\",\"dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy\"]},\"lib/v4-core/src/libraries/FixedPoint96.sol\":{\"keccak256\":\"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4\",\"dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ\"]},\"lib/v4-core/src/libraries/FullMath.sol\":{\"keccak256\":\"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52\",\"dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC\"]},\"lib/v4-core/src/libraries/LiquidityMath.sol\":{\"keccak256\":\"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99\",\"dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD\"]},\"lib/v4-core/src/libraries/Lock.sol\":{\"keccak256\":\"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c\",\"dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF\"]},\"lib/v4-core/src/libraries/NonzeroDeltaCount.sol\":{\"keccak256\":\"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59\",\"dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm\"]},\"lib/v4-core/src/libraries/Position.sol\":{\"keccak256\":\"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2\",\"dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5\"]},\"lib/v4-core/src/libraries/SafeCast.sol\":{\"keccak256\":\"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59\",\"dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj\"]},\"lib/v4-core/src/libraries/StateLibrary.sol\":{\"keccak256\":\"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0\",\"dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY\"]},\"lib/v4-core/src/libraries/TickMath.sol\":{\"keccak256\":\"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70\",\"dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva\"]},\"lib/v4-core/src/libraries/TransientStateLibrary.sol\":{\"keccak256\":\"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5\",\"dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV\"]},\"lib/v4-core/src/types/BalanceDelta.sol\":{\"keccak256\":\"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9\",\"dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H\"]},\"lib/v4-core/src/types/BeforeSwapDelta.sol\":{\"keccak256\":\"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782\",\"dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K\"]},\"lib/v4-core/src/types/Currency.sol\":{\"keccak256\":\"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01\",\"dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5\"]},\"lib/v4-core/src/types/PoolId.sol\":{\"keccak256\":\"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918\",\"dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y\"]},\"lib/v4-core/src/types/PoolKey.sol\":{\"keccak256\":\"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639\",\"dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi\"]},\"lib/v4-core/src/types/PoolOperation.sol\":{\"keccak256\":\"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07\",\"dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c\"]},\"src/PositionManager.sol\":{\"keccak256\":\"0x0c28bf323e06f12b8cfe0f10324a7f7c043af1b3dbf4c9ddd0b582545920b6a2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0659bb3388a5f09c5f5ed8979b67fb451e701c4d85414e66e9a1ceac82d81194\",\"dweb:/ipfs/QmS9JDqc8w657bCFEnz3qMzPSSWwd3DDXJAuaq7mGAXHYr\"]},\"src/base/BaseActionsRouter.sol\":{\"keccak256\":\"0xc9ed11618c4d82c5b723841a7d8eaf61600118c593e01e9929a193ecdb1ad63a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b048aa814ef6bdeec79eba67aa765186d74b58f98f4b2be913cc291a15986169\",\"dweb:/ipfs/QmRoFpoCG7DYJtc3uewYwwj2Eb4bXLrefgV3t8vekY3XWg\"]},\"src/base/DeltaResolver.sol\":{\"keccak256\":\"0x94a2da2be5c924df65a8e1e29f585bbe4c37777fedd43b45989c66d509a4a83c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://42bba590f6e817fd56328b74ae99bfdc4df57386d0a69ee22b9108341953ed36\",\"dweb:/ipfs/QmdusastK7FWYouLz9gvV5J3z8MQbNKLJNNHTrc1vi7DWw\"]},\"src/base/EIP712_v4.sol\":{\"keccak256\":\"0x151e85890822c1b0fe85ec3c021826cb42f615e2b9d6fcdd79019681a6ee5588\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5df84221ba4fe59c8223e94bec954b7f7602d4ad81d2f0c046a67c21c1d24be\",\"dweb:/ipfs/QmbTUqqHxRxEDyrMPApozbC6DEYMZGa27dWu3KodNACiLy\"]},\"src/base/ERC721Permit_v4.sol\":{\"keccak256\":\"0xb1c3d4cc1fa0c7f9562674917d9ffdd119a1ccdb3adca44b2832d5c91c068125\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://752a8a679a9cc9e56a8e95fc1fa1d8c39a951a479b6c0b1109238f73520045df\",\"dweb:/ipfs/QmRzLo9KRcJH38Fx2xvweVmvMbTRKzyDR7R7Fui4Ca9cma\"]},\"src/base/ImmutableState.sol\":{\"keccak256\":\"0x1867c9fa2f9b4fa73bab0fcdc9d19ccef4eeac552273d8b84a170cd1cc90350a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af2d699b439e13b599632fddfe82718aebd41055fba7c075f186675c588d1337\",\"dweb:/ipfs/Qmc111gckSKb9aESn3wRFLeLiS4KGujaUcaYJgRnCRfwQU\"]},\"src/base/Multicall_v4.sol\":{\"keccak256\":\"0x654c6e65bd9bbf12b2cc393f8523db04e85ec45e829200de3895709479d6d569\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7ee5441ed14cdad5328f8e844403c2969fe2ecd9d110d7b80954bfa41f52d69\",\"dweb:/ipfs/QmQ1r1qmGyg1JXUgmjzi3WxjAmkLtMpUVsRWfYJsRRo3sP\"]},\"src/base/NativeWrapper.sol\":{\"keccak256\":\"0xfb756bc69e401d621f615746d881cfef7e98f3f563775905a1eca79a074a35ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://507c9b3ddf79ec34b8ae472dfc4d6840343a9a172d7c6f33eec290e0078e9254\",\"dweb:/ipfs/QmWhGck33w1s343mtojttgisJcsdwDf6Ah6oTpjgsWcQWh\"]},\"src/base/Notifier.sol\":{\"keccak256\":\"0x5f2a29b2a528269643d026bf4698e6520eeb1e5fc773f9d5059b3e279a488bf6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://63d5c541039f37ae89533a15fc311e3fec3d143fa11bac42e73964bdf74b3d06\",\"dweb:/ipfs/QmUrvqNYEYwEu1zRWLFVDUW2zEajbkNYxiNqUpc5aWx5ui\"]},\"src/base/Permit2Forwarder.sol\":{\"keccak256\":\"0xcdf793e6732cdf0c386f89573384032314b0893bf208b3d75ac71d3002674a3b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4f18d0be711c1d586854e2a78113bf84765e7158c9568b2c73f8750511a22ce7\",\"dweb:/ipfs/QmSe3zz9jvDZo2MqPgCpfNs3yA4xAWPB1deZBoRFzeZiN1\"]},\"src/base/PoolInitializer_v4.sol\":{\"keccak256\":\"0x068c85032e50ef6374958ff3e7dcc143527f669de1bbba831e552d033344a1e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://674c29491faef627b52cb81495bf3747cd7f7613e2ddcabb1dd258f93f966006\",\"dweb:/ipfs/Qmc1D31ubNDRdxVS6pxDzn7z8disSw7UScHu8rgfpxCAsz\"]},\"src/base/ReentrancyLock.sol\":{\"keccak256\":\"0x66dd19f8eb40b7a86afea0e5b1dcada6268041027b0dfc493b80ca1f66af217d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac6d34517e2dd2c9cd03e16c5333defd003c134a4bff52ad95b673a5e8804609\",\"dweb:/ipfs/QmPSRdswfajCZCchH9j8rC7U3GLJ4w24gK35gxRVY3Qxz4\"]},\"src/base/SafeCallback.sol\":{\"keccak256\":\"0xd78b583df1b9ee06d58e83b84fc9f08971389b34dd34bc13db072e0c13c710da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0a47f4bcd6060c4462153b9a7c52a60a460ace91acb6ddd5492eab28ec26173\",\"dweb:/ipfs/QmdRCTRS1dhFjWEy6z577j4xz9J5HPfHBwcNzAic8G59oT\"]},\"src/base/UnorderedNonce.sol\":{\"keccak256\":\"0x0ec175bf2213d75606ebb770227e8622ae9666fbde8ff2d1682d85890b81676e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://079952902a4be56b5e963585349988fcbea853bf8271a5cb88e7629cafb06bcf\",\"dweb:/ipfs/Qmere81cd2Wq9Vq4rL5G1nW4Jv54YJeMr1oaej7468xrgi\"]},\"src/interfaces/IEIP712_v4.sol\":{\"keccak256\":\"0xd7f7115476e307a0bfc32a0f0a0f5434e9e5ca62a6c5af1e18b75e48161bb408\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1600b953556da38a7adc5ad2a2925ec5fb138fecf8eec48743646543195b736\",\"dweb:/ipfs/QmarZi2aiLVAfHXgnDWV1cCFiZk2DdPW7KJnWHqzuRChJR\"]},\"src/interfaces/IERC721Permit_v4.sol\":{\"keccak256\":\"0x103adbba724ef536abc536fe8a4d7dc12880724c562109b69f2adce4a91fa017\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://06f51b5a5a218e0bc866a83e7821be53c9db9de0ca921f16abd3d13ea0eab69d\",\"dweb:/ipfs/QmbnhLy992hpQZyphTkj7fpr6jKKVva2AzfmLiDZEuqHAk\"]},\"src/interfaces/IImmutableState.sol\":{\"keccak256\":\"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341\",\"dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq\"]},\"src/interfaces/IMsgSender.sol\":{\"keccak256\":\"0xcc7d4e3f2fde34cf1ad9f05a8e43977e04d19624f71eb8a8c295feaf64b362a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e02044b5e19cc9ca24d23f55667142fde6daefba66408b56c4f620b625fc189\",\"dweb:/ipfs/QmUqWdRBqWi2tZkNAPhzLZbknP26TZbD8iRQMd3fdZGFgi\"]},\"src/interfaces/IMulticall_v4.sol\":{\"keccak256\":\"0x336bec303f7ff86497d2679464c5adad5040f412b3d0769ce5e1d2a42f7e2c08\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7734f047d98d331c8abc51ad9f358ceee0a6dcae8d89ac49084b84de0d2d42e7\",\"dweb:/ipfs/QmWij2h7mU36LsXhb9P6pkYXrSCua4ixeWaVFSrsEcEmPQ\"]},\"src/interfaces/INotifier.sol\":{\"keccak256\":\"0xfdc5187a98240a1691aae98b7dd2444d4c2bfb4746f3c34de9f3d18399c17c5e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://683af56401ec4f8817e8dfe150e7b3febaf0baaf40efe8d0d0475f735275f746\",\"dweb:/ipfs/QmRQ6S3nFnSc2jjDcQTvUJdTf4xKPojmvCkpvgyr6qTuVV\"]},\"src/interfaces/IPermit2Forwarder.sol\":{\"keccak256\":\"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d\",\"dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9\"]},\"src/interfaces/IPoolInitializer_v4.sol\":{\"keccak256\":\"0x2e4feda94650a2642039e0309ffdec480ee050bc40864bf5e1dba42bb4dc9e98\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://964c178b4da8bab9ef898b94bb26d7c17cc44c5cf20485f55dcf5e9c7e1b1d92\",\"dweb:/ipfs/QmVd2c3SYteyr5xZgUS4sDAiZF43dLwVAEKdCfvQbkZpRJ\"]},\"src/interfaces/IPositionDescriptor.sol\":{\"keccak256\":\"0x5a4327e608b35ba2d3451c267b609336efbd780912080dbb1a21563db25c9768\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c783c7a4834d610586ef6caf79806f4e339ad488046766d03fe3d014d11093e4\",\"dweb:/ipfs/QmcQWiNQz1hAcJRwFfw5NnSz6zcgAE5HytdVL8MAQJUrv4\"]},\"src/interfaces/IPositionManager.sol\":{\"keccak256\":\"0x62dfa0cbee8314ee7e6787db8bc1d364245c340f940875ac7ff11e89d074fc7e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26f560c77d8a187bf93a710b827e3167eab3446922192fa8f92f208da2103834\",\"dweb:/ipfs/Qmbzp5gSYdTpMBF9aAb2GraxMEQZb5LRJCyg8VaRUyjTFc\"]},\"src/interfaces/ISubscriber.sol\":{\"keccak256\":\"0x34ceadec4a63019680e543fe73197f198a55c825d86e18f327840354760b57e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://31734feafe1fe162a0702ddf862fcc3bd97505931afb3c685033c0185d898051\",\"dweb:/ipfs/QmQEANYVyaXTNzXKcjUVfPhLU71Bix5vxQH75BpPWMkWgw\"]},\"src/interfaces/IUnorderedNonce.sol\":{\"keccak256\":\"0xd7f32fee74dc7d1a3b078ca1263961baccaa6bf434c79e8fe0e092e30c3e0ec3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e7d1e92d89d5f49c84aa82f3b259678c2c97a4473b22d753ca4411a6b0cec36d\",\"dweb:/ipfs/QmNZoQyminStaAdaLqoDLoWaBU5QWrWjXFjmBm4aFhzL8i\"]},\"src/interfaces/IV4Router.sol\":{\"keccak256\":\"0xc4133fae25e61cc2447d7331729f6035322d7c1fe26b39b225422bf98cc63459\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c24ff8428504e973e947a059f96289a66c520cd7f8ef47a3224f9cb6abdaf25\",\"dweb:/ipfs/QmVqxYnngWXXcCiuTC143vTEJrjZK5NXWB92pjvVbuJBQ5\"]},\"src/interfaces/external/IWETH9.sol\":{\"keccak256\":\"0xe88abf12501ac275619aec0687240a07d26968aecbbcdfea88ba8bbd5d6e5e14\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7097065d4492b4eccb1a73f99af1e5bec45404c6b973b8f5965c4c91403f5f92\",\"dweb:/ipfs/QmZK8oEqmjmTqhBoh3D3fBpyKGkUEFnptY8xwH9xpNjDm2\"]},\"src/libraries/ActionConstants.sol\":{\"keccak256\":\"0x3d6f0e5b4a7b1e60bad93e73dce5db67fb66bebef11c31ed8355014a79aa03b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6dfa42e24b1b5c7f66e75304ab034fbb6768518eb2410ccfff8b3defdd1658f2\",\"dweb:/ipfs/QmQQ7fud9mmv7PEWPAQiNzeZhNkWf28Z6nCHc2e6WJFfa7\"]},\"src/libraries/Actions.sol\":{\"keccak256\":\"0x8efd4b8b289177ee27e557d9d0a5a9f973d66fe1eb1ef8959d316b11987ca830\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://07fe35f194eb99465028f0546359befea574d844da53767d32f22b233c3bcc98\",\"dweb:/ipfs/Qmc19631uFxABTHAbGrDrroexi9GdyxWntaum1v8npPYz5\"]},\"src/libraries/CalldataDecoder.sol\":{\"keccak256\":\"0x26df49e13fb5410fd4db253cca877dfdfb3a1ba03e394d054c0e0514a88a56e5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72a0c98c52171708f332f83d517deeb97fdd50ecf28f2510e1866e54593a6ff8\",\"dweb:/ipfs/QmY4LiDUfSKGj86nML7B6a8euiPciUqwYehasAyAVnMCHq\"]},\"src/libraries/ERC721PermitHash.sol\":{\"keccak256\":\"0xd8024f516738a1f968169875efd4ba803049c933cf6ea5e36189df9915f4e3f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://58b45295f87c31f516a727a2a40ba2f34ac57ebd5520c42ea59946d2ffc0f5df\",\"dweb:/ipfs/QmW8xC2xS18r4yhGbhSJTN1DfCgPT6oKHxwwszutn2sPuz\"]},\"src/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0x8ea74b89831877ffe657f8461164a01a6f3c7e46f415410854fca8d28a8cab53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f4015f62e5e8aa154baa555dc39ce36b498e6d875a53f793d62b8556e6b97ccb\",\"dweb:/ipfs/QmUVHyEe3hZZZQum5ct6yDY8qduj62Ta7f7x5Kw95LpQbg\"]},\"src/libraries/Locker.sol\":{\"keccak256\":\"0x5c0859290a277fbfba8579b506426d3fc4b2ff7d8b691c03dd23aa85797fdae1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://18ad9effea8da74b9988373dddddd6669f11701fc954f77d2cb58beb9a9cc3ad\",\"dweb:/ipfs/QmQdBMoXdVACo6k6rumWj15UPDCqGpWNSPvQbejxKuV9RJ\"]},\"src/libraries/PathKey.sol\":{\"keccak256\":\"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89\",\"dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg\"]},\"src/libraries/PositionInfoLibrary.sol\":{\"keccak256\":\"0xc5ddf96bd088bc87ea50a20f907fc932fb28397a42682a301b268a11b7f34078\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7dfeb4dc747537240f8167243e8066b6f5f08057386fb8bda93f82973fc18ad6\",\"dweb:/ipfs/Qmby9DAAaHj8hjsMUnqY3vjqCHKGAKrT5EULMmeGcjbbGx\"]},\"src/libraries/SlippageCheck.sol\":{\"keccak256\":\"0x9b7872e403b417dfbcf9835b16109f80f7abed702652a9817e28f07189983b4b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://911974b8e37b3be02150090b64d841fcc1153277d20f75315b3b8eb02c111e66\",\"dweb:/ipfs/QmRYe4UAYG5TNqB2ygM3n7e3GFMhJmW1c29WZjGDfGQyxQ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IPoolManager","name":"_poolManager","type":"address"},{"internalType":"contract IAllowanceTransfer","name":"_permit2","type":"address"},{"internalType":"uint256","name":"_unsubscribeGasLimit","type":"uint256"},{"internalType":"contract IPositionDescriptor","name":"_tokenDescriptor","type":"address"},{"internalType":"contract IWETH9","name":"_weth9","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"subscriber","type":"address"}],"type":"error","name":"AlreadySubscribed"},{"inputs":[{"internalType":"address","name":"subscriber","type":"address"},{"internalType":"bytes","name":"reason","type":"bytes"}],"type":"error","name":"BurnNotificationReverted"},{"inputs":[],"type":"error","name":"ContractLocked"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"type":"error","name":"DeadlinePassed"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"type":"error","name":"DeltaNotNegative"},{"inputs":[{"internalType":"Currency","name":"currency","type":"address"}],"type":"error","name":"DeltaNotPositive"},{"inputs":[],"type":"error","name":"GasLimitTooLow"},{"inputs":[],"type":"error","name":"InputLengthMismatch"},{"inputs":[],"type":"error","name":"InsufficientBalance"},{"inputs":[],"type":"error","name":"InvalidContractSignature"},{"inputs":[],"type":"error","name":"InvalidEthSender"},{"inputs":[],"type":"error","name":"InvalidSignature"},{"inputs":[],"type":"error","name":"InvalidSignatureLength"},{"inputs":[],"type":"error","name":"InvalidSigner"},{"inputs":[{"internalType":"uint128","name":"maximumAmount","type":"uint128"},{"internalType":"uint128","name":"amountRequested","type":"uint128"}],"type":"error","name":"MaximumAmountExceeded"},{"inputs":[{"internalType":"uint128","name":"minimumAmount","type":"uint128"},{"internalType":"uint128","name":"amountReceived","type":"uint128"}],"type":"error","name":"MinimumAmountInsufficient"},{"inputs":[{"internalType":"address","name":"subscriber","type":"address"},{"internalType":"bytes","name":"reason","type":"bytes"}],"type":"error","name":"ModifyLiquidityNotificationReverted"},{"inputs":[],"type":"error","name":"NoCodeSubscriber"},{"inputs":[],"type":"error","name":"NoSelfPermit"},{"inputs":[],"type":"error","name":"NonceAlreadyUsed"},{"inputs":[{"internalType":"address","name":"caller","type":"address"}],"type":"error","name":"NotApproved"},{"inputs":[],"type":"error","name":"NotPoolManager"},{"inputs":[],"type":"error","name":"NotSubscribed"},{"inputs":[],"type":"error","name":"PoolManagerMustBeLocked"},{"inputs":[],"type":"error","name":"SignatureDeadlineExpired"},{"inputs":[{"internalType":"address","name":"subscriber","type":"address"},{"internalType":"bytes","name":"reason","type":"bytes"}],"type":"error","name":"SubscriptionReverted"},{"inputs":[],"type":"error","name":"Unauthorized"},{"inputs":[{"internalType":"uint256","name":"action","type":"uint256"}],"type":"error","name":"UnsupportedAction"},{"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}],"type":"event","name":"Approval","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":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"subscriber","type":"address","indexed":true}],"type":"event","name":"Subscription","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"id","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true},{"internalType":"address","name":"subscriber","type":"address","indexed":true}],"type":"event","name":"Unsubscription","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WETH9","outputs":[{"internalType":"contract IWETH9","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPoolAndPositionInfo","outputs":[{"internalType":"struct PoolKey","name":"poolKey","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":"PositionInfo","name":"info","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPositionLiquidity","outputs":[{"internalType":"uint128","name":"liquidity","type":"uint128"}]},{"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":"payable","type":"function","name":"initializePool","outputs":[{"internalType":"int24","name":"","type":"int24"}]},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes","name":"unlockData","type":"bytes"},{"internalType":"uint256","name":"deadline","type":"uint256"}],"stateMutability":"payable","type":"function","name":"modifyLiquidities"},{"inputs":[{"internalType":"bytes","name":"actions","type":"bytes"},{"internalType":"bytes[]","name":"params","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"modifyLiquiditiesWithoutUnlock"},{"inputs":[],"stateMutability":"view","type":"function","name":"msgSender","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"bytes[]","name":"data","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"multicall","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextTokenId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"word","type":"uint256"}],"stateMutability":"view","type":"function","name":"nonces","outputs":[{"internalType":"uint256","name":"bitmap","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permit"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct IAllowanceTransfer.PermitSingle","name":"permitSingle","type":"tuple","components":[{"internalType":"struct IAllowanceTransfer.PermitDetails","name":"details","type":"tuple","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}]},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}]},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permit","outputs":[{"internalType":"bytes","name":"err","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"permit2","outputs":[{"internalType":"contract IAllowanceTransfer","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"struct IAllowanceTransfer.PermitBatch","name":"_permitBatch","type":"tuple","components":[{"internalType":"struct IAllowanceTransfer.PermitDetails[]","name":"details","type":"tuple[]","components":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint160","name":"amount","type":"uint160"},{"internalType":"uint48","name":"expiration","type":"uint48"},{"internalType":"uint48","name":"nonce","type":"uint48"}]},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"sigDeadline","type":"uint256"}]},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permitBatch","outputs":[{"internalType":"bytes","name":"err","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"stateMutability":"payable","type":"function","name":"permitForAll"},{"inputs":[{"internalType":"bytes25","name":"poolId","type":"bytes25"}],"stateMutability":"view","type":"function","name":"poolKeys","outputs":[{"internalType":"Currency","name":"currency0","type":"address"},{"internalType":"Currency","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"poolManager","outputs":[{"internalType":"contract IPoolManager","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"positionInfo","outputs":[{"internalType":"PositionInfo","name":"info","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"nonce","type":"uint256"}],"stateMutability":"payable","type":"function","name":"revokeNonce"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"address","name":"newSubscriber","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"subscribe"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"subscriber","outputs":[{"internalType":"contract ISubscriber","name":"subscriber","type":"address"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"tokenDescriptor","outputs":[{"internalType":"contract IPositionDescriptor","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"id","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"unlockCallback","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"unsubscribe"},{"inputs":[],"stateMutability":"view","type":"function","name":"unsubscribeGasLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"returns":{"_0":"bytes32 The domain separator"}},"approve(address,uint256)":{"details":"override Solmate's ERC721 approve so approve() and permit() share the _approve method Passing a spender address of zero can be used to remove any outstanding approvals Throws error unless `msg.sender` is the current NFT owner, or an authorized operator of the current owner.","params":{"id":"The tokenId of the NFT to approve","spender":"The new approved NFT controller"}},"getPoolAndPositionInfo(uint256)":{"params":{"tokenId":"the ERC721 tokenId"},"returns":{"info":"PositionInfo a uint256 packed value holding information about the position including the range (tickLower, tickUpper)","poolKey":"the pool key of the position"}},"getPositionLiquidity(uint256)":{"details":"this value can be processed as an amount0 and amount1 by using the LiquidityAmounts library","params":{"tokenId":"the ERC721 tokenId"},"returns":{"liquidity":"the position's liquidity, as a liquidityAmount"}},"initializePool((address,address,uint24,int24,address),uint160)":{"details":"If the pool is already initialized, this function will not revert and just return type(int24).max","params":{"key":"The PoolKey of the pool to initialize","sqrtPriceX96":"The initial starting price of the pool, expressed as a sqrtPriceX96"},"returns":{"_0":"The current tick of the pool, or type(int24).max if the pool creation failed, or the pool already existed"}},"modifyLiquidities(bytes,uint256)":{"details":"This is the standard entrypoint for the PositionManager","params":{"deadline":"is the deadline for the batched actions to be executed","unlockData":"is an encoding of actions, and parameters for those actions"}},"modifyLiquiditiesWithoutUnlock(bytes,bytes[])":{"details":"This must be called by a contract that has already unlocked the v4 PoolManager","params":{"actions":"the actions to perform","params":"the parameters to provide for the actions"}},"msgSender()":{"details":"The other context functions, _msgData and _msgValue, are not supported by this contract In many contracts this will be the address that calls the initial entry point that calls `_executeActions` `msg.sender` shouldn't be used, as this will be the v4 pool manager contract that calls `unlockCallback` If using ReentrancyLock.sol, this function can return _getLocker()"},"multicall(bytes[])":{"details":"The `msg.value` is passed onto all subcalls, even if a previous subcall has consumed the ether. Subcalls can instead use `address(this).value` to see the available ETH, and consume it using {value: x}.","params":{"data":"The encoded function data for each of the calls to make to this contract"},"returns":{"results":"The results from each of the calls passed in via data"}},"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":{"details":"this function is payable to allow multicall with NATIVE based actions","params":{"owner":"the owner of the tokens","permitSingle":"the permit data","signature":"the signature of the permit; abi.encodePacked(r, s, v)"},"returns":{"err":"the error returned by a reverting permit call, empty if successful"}},"permit(address,uint256,uint256,uint256,bytes)":{"details":"payable so it can be multicalled with NATIVE related actions","params":{"deadline":"The deadline timestamp by which the call must be mined for the approve to work","nonce":"a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word","signature":"Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)","spender":"The account that is being approved","tokenId":"The ID of the token that is being approved for spending"}},"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":{"details":"this function is payable to allow multicall with NATIVE based actions","params":{"_permitBatch":"a batch of approvals","owner":"the owner of the tokens","signature":"the signature of the permit; abi.encodePacked(r, s, v)"},"returns":{"err":"the error returned by a reverting permit call, empty if successful"}},"permitForAll(address,address,bool,uint256,uint256,bytes)":{"details":"payable so it can be multicalled with NATIVE related actions","params":{"approved":"The permission to set on the operator","deadline":"The deadline timestamp by which the call must be mined for the approve to work","nonce":"a unique value, for an owner, to prevent replay attacks; an unordered nonce where the top 248 bits correspond to a word and the bottom 8 bits calculate the bit position of the word","operator":"The address that will be set as an operator for the owner","owner":"The address that is setting the operator","signature":"Concatenated data from a valid secp256k1 signature from the holder, i.e. abi.encodePacked(r, s, v)"}},"revokeNonce(uint256)":{"details":"Used in cases where a valid nonce has not been broadcasted onchain, and the owner wants to revoke the validity of the noncepayable so it can be multicalled with native-token related actions"},"setApprovalForAll(address,bool)":{"details":"Emits the ApprovalForAll event. The contract MUST allow multiple operators per owner.Override Solmate's ERC721 setApprovalForAll so setApprovalForAll() and permit() share the _approveForAll method","params":{"approved":"True if the operator is approved, false to revoke approval","operator":"Address to add to the set of authorized operators"}},"subscribe(uint256,address,bytes)":{"details":"Calling subscribe when a position is already subscribed will revertpayable so it can be multicalled with NATIVE related actionswill revert if pool manager is locked","params":{"data":"caller-provided data that's forwarded to the subscriber contract","newSubscriber":"the address of the subscriber contract","tokenId":"the ERC721 tokenId"}},"transferFrom(address,address,uint256)":{"details":"overrides solmate transferFrom in case a notification to subscribers is neededwill revert if pool manager is locked"},"unlockCallback(bytes)":{"details":"We force the onlyPoolManager modifier by exposing a virtual function after the onlyPoolManager check.","params":{"data":"The data that was passed to the call to unlock"},"returns":{"_0":"Any data that you want to be returned from the unlock call"}},"unsubscribe(uint256)":{"details":"Callers must specify a high gas limit (remaining gas should be higher than unsubscriberGasLimit) such that the subscriber can be notifiedpayable so it can be multicalled with NATIVE related actionsMust always allow a user to unsubscribe. In the case of a malicious subscriber, a user can always unsubscribe safely, ensuring liquidity is always modifiable.will revert if pool manager is locked","params":{"tokenId":"the ERC721 tokenId"}}},"version":1},"userdoc":{"kind":"user","methods":{"DOMAIN_SEPARATOR()":{"notice":"Returns the domain separator for the current chain."},"WETH9()":{"notice":"The address for WETH9"},"approve(address,uint256)":{"notice":"Change or reaffirm the approved address for an NFT"},"getPoolAndPositionInfo(uint256)":{"notice":"Returns the pool key and position info of a position"},"getPositionLiquidity(uint256)":{"notice":"Returns the liquidity of a position"},"initializePool((address,address,uint24,int24,address),uint160)":{"notice":"Initialize a Uniswap v4 Pool"},"modifyLiquidities(bytes,uint256)":{"notice":"Unlocks Uniswap v4 PoolManager and batches actions for modifying liquidity"},"modifyLiquiditiesWithoutUnlock(bytes,bytes[])":{"notice":"Batches actions for modifying liquidity without unlocking v4 PoolManager"},"msgSender()":{"notice":"function that returns address considered executor of the actions"},"multicall(bytes[])":{"notice":"Call multiple functions in the current contract and return the data from all of them if they all succeed"},"nextTokenId()":{"notice":"Used to get the ID that will be used for the next minted liquidity position"},"nonces(address,uint256)":{"notice":"mapping of nonces consumed by each address, where a nonce is a single bit on the 256-bit bitmap"},"permit(address,((address,uint160,uint48,uint48),address,uint256),bytes)":{"notice":"allows forwarding a single permit to permit2"},"permit(address,uint256,uint256,uint256,bytes)":{"notice":"Approve of a specific token ID for spending by spender via signature"},"permit2()":{"notice":"the Permit2 contract to forward approvals"},"permitBatch(address,((address,uint160,uint48,uint48)[],address,uint256),bytes)":{"notice":"allows forwarding batch permits to permit2"},"permitForAll(address,address,bool,uint256,uint256,bytes)":{"notice":"Set an operator with full permission to an owner's tokens via signature"},"poolManager()":{"notice":"The Uniswap v4 PoolManager contract"},"positionInfo(uint256)":{"notice":"Returns the position info of a position"},"revokeNonce(uint256)":{"notice":"Revoke a nonce by spending it, preventing it from being used again"},"setApprovalForAll(address,bool)":{"notice":"Enable or disable approval for a third party (\"operator\") to manage all of `msg.sender`'s assets"},"subscribe(uint256,address,bytes)":{"notice":"Enables the subscriber to receive notifications for a respective position"},"subscriber(uint256)":{"notice":"Returns the subscriber for a respective position"},"unlockCallback(bytes)":{"notice":"Called by the pool manager on `msg.sender` when the manager is unlocked"},"unsubscribe(uint256)":{"notice":"Removes the subscriber from receiving notifications for a respective position"},"unsubscribeGasLimit()":{"notice":"Returns and determines the maximum allowable gas-used for notifying unsubscribe"}},"version":1}},"settings":{"remappings":["@ensdomains/=lib/v4-core/node_modules/@ensdomains/","@openzeppelin/=lib/v4-core/lib/openzeppelin-contracts/","@uniswap/v4-core/=lib/v4-core/","ds-test/=lib/v4-core/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/v4-core/lib/openzeppelin-contracts/lib/erc4626-tests/","forge-gas-snapshot/=lib/permit2/lib/forge-gas-snapshot/src/","forge-std/=lib/v4-core/lib/forge-std/src/","hardhat/=lib/v4-core/node_modules/hardhat/","openzeppelin-contracts/=lib/v4-core/lib/openzeppelin-contracts/","permit2/=lib/permit2/","solmate/=lib/v4-core/lib/solmate/","v4-core/=lib/v4-core/src/"],"optimizer":{"enabled":true,"runs":30000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/PositionManager.sol":"PositionManager"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"lib/permit2/src/interfaces/IAllowanceTransfer.sol":{"keccak256":"0x37f0ac203b6ef605c9533e1a739477e8e9dcea90710b40e645a367f8a21ace29","urls":["bzz-raw://e0104d72aeaec1cd66cc232e7de7b7ead08608efcc179491b8a66387614670b0","dweb:/ipfs/QmfAZDyuNC9FXXbnJUwqHNwmAK6uRrXxtWEytLsxjskPsN"],"license":"MIT"},"lib/permit2/src/interfaces/IEIP712.sol":{"keccak256":"0xfdccf2b9639070803cd0e4198427fb0df3cc452ca59bd3b8a0d957a9a4254138","urls":["bzz-raw://f7c936ac42ce89e827db905a1544397f8bdf46db34cdb6aa1b90dea42fdb4c72","dweb:/ipfs/QmVgurxo1N31qZqkPBirw9Z7S9tLYmv6jSwQp8R8ur2cBk"],"license":"MIT"},"lib/permit2/src/interfaces/IERC1271.sol":{"keccak256":"0x0a546b8535127fb4a49d36d5f306fd5a8bbe6125a1852f935b9bb85a04c1acef","urls":["bzz-raw://4b99651e2df98e283a97c46d8d1ac4eff0d6a3618e25f7f85294472a670b541c","dweb:/ipfs/QmYRy5G8fXE8BfmyvGEbESEYZPPg3zJEFxHzR5GJZEMMTk"],"license":"MIT"},"lib/permit2/src/libraries/SignatureVerification.sol":{"keccak256":"0x99f437ffe99aa1ff7885aec8b971f48efac00c6ebc59c02eec78c9ca850a5e30","urls":["bzz-raw://9365414bdb67813d4ef6c89fa152dff05fc2a64992a1a4f212fa414dbdee3eab","dweb:/ipfs/QmfJxSszF1rjmMoNXW5oQMo9gARMHAXYTu68fkZvdEu58i"],"license":"MIT"},"lib/v4-core/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/v4-core/lib/solmate/src/tokens/ERC721.sol":{"keccak256":"0x04af19f16f00ba65ae168d6d10da5210dc18da6bcec6974dccf984ba388aa22d","urls":["bzz-raw://098e69f22b67da6927e03203c12ebfda5b0490518f6d9cce7853001ac5ad8403","dweb:/ipfs/QmYyzfurQe88PsVjRNfutV3gS7Vi68f7zgtVZVtLfd4ViK"],"license":"AGPL-3.0-only"},"lib/v4-core/src/interfaces/IExtsload.sol":{"keccak256":"0x80b53ca4907d6f0088c3b931f2b72cad1dc4615a95094d96bd0fb8dff8d5ba43","urls":["bzz-raw://375c69148622aab7a3537d5fd37d373a8e9731022c8d87bdaee46233b0a99fe1","dweb:/ipfs/QmXFjdoYRxsA5B1kyuxEXgNf3FBoL1zPvy26Qy8EtpdFRN"],"license":"MIT"},"lib/v4-core/src/interfaces/IExttload.sol":{"keccak256":"0xc6b68283ebd8d1c789df536756726eed51c589134bb20821b236a0d22a135937","urls":["bzz-raw://294394f72dfc219689209f4130d85601dfd0d63c8d47578050d312db70f9b6c8","dweb:/ipfs/QmTDMQ3oxCGHgEBU48a3Lp4S1rRjc8vVCxkhE5ZNej1bsY"],"license":"MIT"},"lib/v4-core/src/interfaces/IHooks.sol":{"keccak256":"0xc131ffa2d04c10a012fe715fe2c115811526b7ea34285cf0a04ce7ce8320da8d","urls":["bzz-raw://3b212358897db5d99c21244d88f97b2e788527552cb430629b472a8cc6289aec","dweb:/ipfs/QmQtwV4dDe2RYk2ErLpaAX7U82jWh1L6Lw2HRuKDvBi84G"],"license":"MIT"},"lib/v4-core/src/interfaces/IPoolManager.sol":{"keccak256":"0xbdab3544da3d32dfdf7457baa94e17d5a3012952428559e013ffac45d067038e","urls":["bzz-raw://ce95ff864468e37c76adf71df061d4f3d6f3a5ec1f9bc3aea090463bc72798f4","dweb:/ipfs/QmSbWh1pLbz51yQF4HEu5NRhr8XVv9JYGEw1hq1HudAnCi"],"license":"MIT"},"lib/v4-core/src/interfaces/IProtocolFees.sol":{"keccak256":"0x32a666e588a2f66334430357bb1e2424fe7eebeb98a3364b1dd16eb6ccca9848","urls":["bzz-raw://85751d302125881f72e5f8af051c2d5d9b1f606ebaea8ca7d04fccdd27cc252d","dweb:/ipfs/QmeRwomeh9NWm6A6fgNA4KZPQZHPpdKsPQyYsHSFmvud7J"],"license":"MIT"},"lib/v4-core/src/interfaces/callback/IUnlockCallback.sol":{"keccak256":"0x58c82f2bd9d7c097ed09bd0991fedc403b0ec270eb3d0158bfb095c06a03d719","urls":["bzz-raw://91168ca26a10980df2cdc3fbfe8ddf372c002b7ef19e3c59a0c9870d64198f1b","dweb:/ipfs/QmUSpaM825vd1SwvF38esgbdLgYiPwefKaFERTWvUi6uSK"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC20Minimal.sol":{"keccak256":"0xeccadf1bf69ba2eb51f2fe4fa511bc7bb05bbd6b9f9a3cb8e5d83d9582613e0f","urls":["bzz-raw://118757369892687b99ef46ce28d6861f62c098285bd7687a4f17f7e44e5f81de","dweb:/ipfs/QmUxqbYqQtcEwwFbb9e6BBMePEaSgN8C45v6RKubD4ib8d"],"license":"MIT"},"lib/v4-core/src/interfaces/external/IERC6909Claims.sol":{"keccak256":"0xa586f345739e52b0488a0fe40b6e375cce67fdd25758408b0efcb5133ad96a48","urls":["bzz-raw://e8c557b7e52abdbbd82e415a1acc27921446a7fd090b7d4877e52be72619547f","dweb:/ipfs/QmXE2KNPbXmGX8BQF3ei6zhzRTnhoTQg39XmqMnkhbr6QK"],"license":"MIT"},"lib/v4-core/src/libraries/BitMath.sol":{"keccak256":"0x51b9be4f5c4fd3e80cbc9631a65244a2eb2be250b6b7f128a2035080e18aee8d","urls":["bzz-raw://fe98bbd5498e912146b9319827fc63621eb66ff55d5baae0fa02a7a972ab8d1e","dweb:/ipfs/QmY5hCuyrtgsJtk4AavrxcvBkRrChfr4N6ZnhdC8roPpNi"],"license":"MIT"},"lib/v4-core/src/libraries/CurrencyReserves.sol":{"keccak256":"0x1576616129933fcdf3b684cea33cffd9c95e18fafbd2832a8c48ac3d8526d4c3","urls":["bzz-raw://33b050efb9b81803b18f562271e7cca2ec5362c4d505860d6419b4a345636725","dweb:/ipfs/QmQtFtTwKZ5pFVGD2ENDUXvp7ECFvzqeCuJ1miJcUHdmiX"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/CustomRevert.sol":{"keccak256":"0x111ed3031b6990c80a93ae35dde6b6ac0b7e6af471388fdd7461e91edda9b7de","urls":["bzz-raw://c9ea883c98d6ae1829160d0977bb5195761cfd5bc81692d0a941f45717f594cd","dweb:/ipfs/QmZPwxzaeMNv536wzrAMrMswu7vMHuqPVpjcqL3YvCMoxt"],"license":"MIT"},"lib/v4-core/src/libraries/FixedPoint128.sol":{"keccak256":"0xad236e10853f4b4b20a35a9bb52b857c4fc79874846b7e444e06ead7f2630542","urls":["bzz-raw://0de1f9a06520b1a689660943faa14fc0b8344ab41fab9e6012ea34bff4b9b3eb","dweb:/ipfs/QmRNMPTyko7W6d6KxuTsnDBa9oZgDK4xiwRRq3H9ASTbwy"],"license":"MIT"},"lib/v4-core/src/libraries/FixedPoint96.sol":{"keccak256":"0xef5c3fd41aee26bb12aa1c32873cfee88e67eddfe7c2b32283786265ac669741","urls":["bzz-raw://4de298d02f662a1c36c7be0a150f18c2a161408a5d3e48432e707efd01fac9a4","dweb:/ipfs/QmSiM4oeMmLVKmAtJXz2feYkv4R9ZcyBpkTRW5Nhw5KDyJ"],"license":"MIT"},"lib/v4-core/src/libraries/FullMath.sol":{"keccak256":"0x4fc73a00817193fd3cac1cc03d8167d21af97d75f1815a070ee31a90c702b4c2","urls":["bzz-raw://c3b2d66d36b1ad56b1ab6e2eb8a816740877b40b461c93f125e88621c8378e52","dweb:/ipfs/QmPGvMZzKQvNiWKd8aRzzdW7oAizwrMgcMtnaworDkVHFC"],"license":"MIT"},"lib/v4-core/src/libraries/LiquidityMath.sol":{"keccak256":"0x000ef2eadcc1eb7b2c18a77655f94e76e0e860f605783484657ef65fd6eda353","urls":["bzz-raw://a766b620a7a22798b43c6c1f23b5c6cff0ebf588deb89842bad05208d448cd99","dweb:/ipfs/QmVKjaFJdzkqA3ey2Byum8iTCMssWVD8MmVC8rw62Tj5WD"],"license":"MIT"},"lib/v4-core/src/libraries/Lock.sol":{"keccak256":"0x9338be4b5695f1da5f3d3f7a3eeaf7a356c1045458289586ac0cbe9cef77c6d5","urls":["bzz-raw://485ec42ed6155469d612a9a0c18068ebfbad74448792a338a435503de3ef1b2c","dweb:/ipfs/QmVnnv5u74MYatfRmBgrcfFYQcsMAJMG9jQ6ju8UiydKNF"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/NonzeroDeltaCount.sol":{"keccak256":"0x0666ebd5d3528d7d52c48538296367a4cff97a578cf13365c51983fae3219b87","urls":["bzz-raw://d27f1be3bd09d85c53d3e6a539dd6529ddd8b2b764ccb47fd7765fc81f9add59","dweb:/ipfs/QmQdZujNXhKEXQBkKtF5jbdvo1yXMqPDUoBBaF9S5u3Kpm"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/Position.sol":{"keccak256":"0xddab2a831f1befb6abf5567e77c4582169ca8156cf69eb4f22d8e87f7226a3f9","urls":["bzz-raw://c79fe61b50f3b70cff503abfa6f5643fcbefb9b794855bee1019b1e6d9c083b2","dweb:/ipfs/QmbKmYNQesaMz8bo1b7TMHQcAwaDd3eDPrE5pAdPPZTtk5"],"license":"BUSL-1.1"},"lib/v4-core/src/libraries/SafeCast.sol":{"keccak256":"0x42c4a24f996a14d358be397b71f7ec9d7daf666aaec78002c63315a6ee67aa86","urls":["bzz-raw://c3db86e2ba3679105fc32edec656c70282e1fede6cab11217702443f6c26fa59","dweb:/ipfs/QmX4yaaSPdKQzYNRsezjTvZKsubzS8JRTEGFD3fPpTTCcj"],"license":"MIT"},"lib/v4-core/src/libraries/StateLibrary.sol":{"keccak256":"0x96db333ee126a841dd959e38e452cc59d73583cb0437a1d48b2052e33a74f952","urls":["bzz-raw://8672bba1eb69608299b0904f4ff305238eb18479d371c26518f278c9ee184cd0","dweb:/ipfs/QmTLu3s6ECvsEDHStQv8HTVHYtvkviBbdjPrFJd4SpVRFY"],"license":"MIT"},"lib/v4-core/src/libraries/TickMath.sol":{"keccak256":"0x4e1a11e154eb06106cb1c4598f06cca5f5ca16eaa33494ba2f0e74981123eca8","urls":["bzz-raw://a79a57f7b240783b045168d1c4f774ac1812caf8f9a83cb6959a86b0b07b6c70","dweb:/ipfs/QmTb5kvxwDNW8jDuQaqdJ445cCFejNkUqEB17Bjo8UBiva"],"license":"MIT"},"lib/v4-core/src/libraries/TransientStateLibrary.sol":{"keccak256":"0x7d1e0875747bd89b32c25f1a48da2766e5f4aff1f671ad5f3c0c07ebbbcb946a","urls":["bzz-raw://d76cfeb1cb60595b41ecc51c8a12fb4bf63a7fc733d0b1a2e3adb55abeb1f9d5","dweb:/ipfs/Qmb8oX7DtsRpw3tTtdWZwGhauj1evq43d3PLwe4nSDAKkV"],"license":"MIT"},"lib/v4-core/src/types/BalanceDelta.sol":{"keccak256":"0xa719c8fe51e0a9524280178f19f6851bcc3b3b60e73618f3d60905d35ae5569f","urls":["bzz-raw://7436928dc9de35c6c7c5c636cb51adaf295cfd590da83b19a004ae33cbec9ef9","dweb:/ipfs/QmRJ9yZkUpzk4433GX3LgVVL8jwpbSYSUwXcucKisf3v4H"],"license":"MIT"},"lib/v4-core/src/types/BeforeSwapDelta.sol":{"keccak256":"0x2a774312d91285313d569da1a718c909655da5432310417692097a1d4dc83a78","urls":["bzz-raw://a2c7a0379955cff9c17ab9e61f95e42909aa5947c22740f86ce940d09856f782","dweb:/ipfs/QmaAuo8UBYXsGrVuKh8iRoAAdqwtg1jDq515cW1ZRP5m9K"],"license":"MIT"},"lib/v4-core/src/types/Currency.sol":{"keccak256":"0x4a0b84b282577ff6f8acf13ec9f4d32dbb9348748b49611d00e68bee96609c93","urls":["bzz-raw://45f9d62ab3d51b52957279e353853ba1547c3182c9a1e3d1846ada4a90263b01","dweb:/ipfs/QmS8NG84ccQS1yXVD8cv3eKX7J1UKxuJhbUfHTQR2opKF5"],"license":"MIT"},"lib/v4-core/src/types/PoolId.sol":{"keccak256":"0x308311916ea0f5c2fd878b6a2751eb223d170a69e33f601fae56dfe3c5d392af","urls":["bzz-raw://669c2cd7ac17690b5d8831e0bda72822376c3a04b36afed6d31df4d75fe60918","dweb:/ipfs/QmT6EpkxqU8VF3WsgrZ66F3s1cCQRffR95z1HDYZz7ph6y"],"license":"MIT"},"lib/v4-core/src/types/PoolKey.sol":{"keccak256":"0xf89856e0580d7a4856d3187a76858377ccee9d59702d230c338d84388221b786","urls":["bzz-raw://6f3118fa189025695c37fdf0bdd1190f085ad097484d3c88cf4c56d1db65f639","dweb:/ipfs/QmamXpgtB8GV1CaFLvqefPWSoikLDhMk1yU4heBnVzU8gi"],"license":"MIT"},"lib/v4-core/src/types/PoolOperation.sol":{"keccak256":"0x7a1a107fc1f2208abb2c9364c8c54e56e98dca27673e9441bed2b949b6382162","urls":["bzz-raw://4ad2470383bc5595d5af17840c64971f457adac68895a4db41ba5c71a4478e07","dweb:/ipfs/QmdwKhBHDZFuqXrR2BfDBD9r7rB2ULGQBznsajRTkTmL4c"],"license":"MIT"},"src/PositionManager.sol":{"keccak256":"0x0c28bf323e06f12b8cfe0f10324a7f7c043af1b3dbf4c9ddd0b582545920b6a2","urls":["bzz-raw://0659bb3388a5f09c5f5ed8979b67fb451e701c4d85414e66e9a1ceac82d81194","dweb:/ipfs/QmS9JDqc8w657bCFEnz3qMzPSSWwd3DDXJAuaq7mGAXHYr"],"license":"MIT"},"src/base/BaseActionsRouter.sol":{"keccak256":"0xc9ed11618c4d82c5b723841a7d8eaf61600118c593e01e9929a193ecdb1ad63a","urls":["bzz-raw://b048aa814ef6bdeec79eba67aa765186d74b58f98f4b2be913cc291a15986169","dweb:/ipfs/QmRoFpoCG7DYJtc3uewYwwj2Eb4bXLrefgV3t8vekY3XWg"],"license":"MIT"},"src/base/DeltaResolver.sol":{"keccak256":"0x94a2da2be5c924df65a8e1e29f585bbe4c37777fedd43b45989c66d509a4a83c","urls":["bzz-raw://42bba590f6e817fd56328b74ae99bfdc4df57386d0a69ee22b9108341953ed36","dweb:/ipfs/QmdusastK7FWYouLz9gvV5J3z8MQbNKLJNNHTrc1vi7DWw"],"license":"MIT"},"src/base/EIP712_v4.sol":{"keccak256":"0x151e85890822c1b0fe85ec3c021826cb42f615e2b9d6fcdd79019681a6ee5588","urls":["bzz-raw://c5df84221ba4fe59c8223e94bec954b7f7602d4ad81d2f0c046a67c21c1d24be","dweb:/ipfs/QmbTUqqHxRxEDyrMPApozbC6DEYMZGa27dWu3KodNACiLy"],"license":"MIT"},"src/base/ERC721Permit_v4.sol":{"keccak256":"0xb1c3d4cc1fa0c7f9562674917d9ffdd119a1ccdb3adca44b2832d5c91c068125","urls":["bzz-raw://752a8a679a9cc9e56a8e95fc1fa1d8c39a951a479b6c0b1109238f73520045df","dweb:/ipfs/QmRzLo9KRcJH38Fx2xvweVmvMbTRKzyDR7R7Fui4Ca9cma"],"license":"MIT"},"src/base/ImmutableState.sol":{"keccak256":"0x1867c9fa2f9b4fa73bab0fcdc9d19ccef4eeac552273d8b84a170cd1cc90350a","urls":["bzz-raw://af2d699b439e13b599632fddfe82718aebd41055fba7c075f186675c588d1337","dweb:/ipfs/Qmc111gckSKb9aESn3wRFLeLiS4KGujaUcaYJgRnCRfwQU"],"license":"MIT"},"src/base/Multicall_v4.sol":{"keccak256":"0x654c6e65bd9bbf12b2cc393f8523db04e85ec45e829200de3895709479d6d569","urls":["bzz-raw://d7ee5441ed14cdad5328f8e844403c2969fe2ecd9d110d7b80954bfa41f52d69","dweb:/ipfs/QmQ1r1qmGyg1JXUgmjzi3WxjAmkLtMpUVsRWfYJsRRo3sP"],"license":"MIT"},"src/base/NativeWrapper.sol":{"keccak256":"0xfb756bc69e401d621f615746d881cfef7e98f3f563775905a1eca79a074a35ca","urls":["bzz-raw://507c9b3ddf79ec34b8ae472dfc4d6840343a9a172d7c6f33eec290e0078e9254","dweb:/ipfs/QmWhGck33w1s343mtojttgisJcsdwDf6Ah6oTpjgsWcQWh"],"license":"MIT"},"src/base/Notifier.sol":{"keccak256":"0x5f2a29b2a528269643d026bf4698e6520eeb1e5fc773f9d5059b3e279a488bf6","urls":["bzz-raw://63d5c541039f37ae89533a15fc311e3fec3d143fa11bac42e73964bdf74b3d06","dweb:/ipfs/QmUrvqNYEYwEu1zRWLFVDUW2zEajbkNYxiNqUpc5aWx5ui"],"license":"MIT"},"src/base/Permit2Forwarder.sol":{"keccak256":"0xcdf793e6732cdf0c386f89573384032314b0893bf208b3d75ac71d3002674a3b","urls":["bzz-raw://4f18d0be711c1d586854e2a78113bf84765e7158c9568b2c73f8750511a22ce7","dweb:/ipfs/QmSe3zz9jvDZo2MqPgCpfNs3yA4xAWPB1deZBoRFzeZiN1"],"license":"MIT"},"src/base/PoolInitializer_v4.sol":{"keccak256":"0x068c85032e50ef6374958ff3e7dcc143527f669de1bbba831e552d033344a1e3","urls":["bzz-raw://674c29491faef627b52cb81495bf3747cd7f7613e2ddcabb1dd258f93f966006","dweb:/ipfs/Qmc1D31ubNDRdxVS6pxDzn7z8disSw7UScHu8rgfpxCAsz"],"license":"MIT"},"src/base/ReentrancyLock.sol":{"keccak256":"0x66dd19f8eb40b7a86afea0e5b1dcada6268041027b0dfc493b80ca1f66af217d","urls":["bzz-raw://ac6d34517e2dd2c9cd03e16c5333defd003c134a4bff52ad95b673a5e8804609","dweb:/ipfs/QmPSRdswfajCZCchH9j8rC7U3GLJ4w24gK35gxRVY3Qxz4"],"license":"MIT"},"src/base/SafeCallback.sol":{"keccak256":"0xd78b583df1b9ee06d58e83b84fc9f08971389b34dd34bc13db072e0c13c710da","urls":["bzz-raw://c0a47f4bcd6060c4462153b9a7c52a60a460ace91acb6ddd5492eab28ec26173","dweb:/ipfs/QmdRCTRS1dhFjWEy6z577j4xz9J5HPfHBwcNzAic8G59oT"],"license":"MIT"},"src/base/UnorderedNonce.sol":{"keccak256":"0x0ec175bf2213d75606ebb770227e8622ae9666fbde8ff2d1682d85890b81676e","urls":["bzz-raw://079952902a4be56b5e963585349988fcbea853bf8271a5cb88e7629cafb06bcf","dweb:/ipfs/Qmere81cd2Wq9Vq4rL5G1nW4Jv54YJeMr1oaej7468xrgi"],"license":"MIT"},"src/interfaces/IEIP712_v4.sol":{"keccak256":"0xd7f7115476e307a0bfc32a0f0a0f5434e9e5ca62a6c5af1e18b75e48161bb408","urls":["bzz-raw://b1600b953556da38a7adc5ad2a2925ec5fb138fecf8eec48743646543195b736","dweb:/ipfs/QmarZi2aiLVAfHXgnDWV1cCFiZk2DdPW7KJnWHqzuRChJR"],"license":"MIT"},"src/interfaces/IERC721Permit_v4.sol":{"keccak256":"0x103adbba724ef536abc536fe8a4d7dc12880724c562109b69f2adce4a91fa017","urls":["bzz-raw://06f51b5a5a218e0bc866a83e7821be53c9db9de0ca921f16abd3d13ea0eab69d","dweb:/ipfs/QmbnhLy992hpQZyphTkj7fpr6jKKVva2AzfmLiDZEuqHAk"],"license":"MIT"},"src/interfaces/IImmutableState.sol":{"keccak256":"0x36ab3100e87457ecf04887f4f540e34fd7f21d8e3b83880cb679239e60b7b06b","urls":["bzz-raw://7f290c7ce8e4832608d637a51b13dff95abecf6549485448e647a11c8ed01341","dweb:/ipfs/QmfD1R6mTp8j4EjQXmQZW3vCh11EYFjnvoaw8rXRP27mMq"],"license":"MIT"},"src/interfaces/IMsgSender.sol":{"keccak256":"0xcc7d4e3f2fde34cf1ad9f05a8e43977e04d19624f71eb8a8c295feaf64b362a3","urls":["bzz-raw://1e02044b5e19cc9ca24d23f55667142fde6daefba66408b56c4f620b625fc189","dweb:/ipfs/QmUqWdRBqWi2tZkNAPhzLZbknP26TZbD8iRQMd3fdZGFgi"],"license":"MIT"},"src/interfaces/IMulticall_v4.sol":{"keccak256":"0x336bec303f7ff86497d2679464c5adad5040f412b3d0769ce5e1d2a42f7e2c08","urls":["bzz-raw://7734f047d98d331c8abc51ad9f358ceee0a6dcae8d89ac49084b84de0d2d42e7","dweb:/ipfs/QmWij2h7mU36LsXhb9P6pkYXrSCua4ixeWaVFSrsEcEmPQ"],"license":"MIT"},"src/interfaces/INotifier.sol":{"keccak256":"0xfdc5187a98240a1691aae98b7dd2444d4c2bfb4746f3c34de9f3d18399c17c5e","urls":["bzz-raw://683af56401ec4f8817e8dfe150e7b3febaf0baaf40efe8d0d0475f735275f746","dweb:/ipfs/QmRQ6S3nFnSc2jjDcQTvUJdTf4xKPojmvCkpvgyr6qTuVV"],"license":"MIT"},"src/interfaces/IPermit2Forwarder.sol":{"keccak256":"0xfad472937280e861125ff12aa6f9c2cf7440fbb20a2cc29485c24662ad4279c5","urls":["bzz-raw://31bfbc331f5972fc373d9469fd1ca1d14818db3275f21b7b590f20820cb4439d","dweb:/ipfs/QmX3Bv9wfYpAFZKBcxKsQSXUrSC8mqNBdzh6XVMS72aNx9"],"license":"MIT"},"src/interfaces/IPoolInitializer_v4.sol":{"keccak256":"0x2e4feda94650a2642039e0309ffdec480ee050bc40864bf5e1dba42bb4dc9e98","urls":["bzz-raw://964c178b4da8bab9ef898b94bb26d7c17cc44c5cf20485f55dcf5e9c7e1b1d92","dweb:/ipfs/QmVd2c3SYteyr5xZgUS4sDAiZF43dLwVAEKdCfvQbkZpRJ"],"license":"MIT"},"src/interfaces/IPositionDescriptor.sol":{"keccak256":"0x5a4327e608b35ba2d3451c267b609336efbd780912080dbb1a21563db25c9768","urls":["bzz-raw://c783c7a4834d610586ef6caf79806f4e339ad488046766d03fe3d014d11093e4","dweb:/ipfs/QmcQWiNQz1hAcJRwFfw5NnSz6zcgAE5HytdVL8MAQJUrv4"],"license":"MIT"},"src/interfaces/IPositionManager.sol":{"keccak256":"0x62dfa0cbee8314ee7e6787db8bc1d364245c340f940875ac7ff11e89d074fc7e","urls":["bzz-raw://26f560c77d8a187bf93a710b827e3167eab3446922192fa8f92f208da2103834","dweb:/ipfs/Qmbzp5gSYdTpMBF9aAb2GraxMEQZb5LRJCyg8VaRUyjTFc"],"license":"MIT"},"src/interfaces/ISubscriber.sol":{"keccak256":"0x34ceadec4a63019680e543fe73197f198a55c825d86e18f327840354760b57e7","urls":["bzz-raw://31734feafe1fe162a0702ddf862fcc3bd97505931afb3c685033c0185d898051","dweb:/ipfs/QmQEANYVyaXTNzXKcjUVfPhLU71Bix5vxQH75BpPWMkWgw"],"license":"MIT"},"src/interfaces/IUnorderedNonce.sol":{"keccak256":"0xd7f32fee74dc7d1a3b078ca1263961baccaa6bf434c79e8fe0e092e30c3e0ec3","urls":["bzz-raw://e7d1e92d89d5f49c84aa82f3b259678c2c97a4473b22d753ca4411a6b0cec36d","dweb:/ipfs/QmNZoQyminStaAdaLqoDLoWaBU5QWrWjXFjmBm4aFhzL8i"],"license":"MIT"},"src/interfaces/IV4Router.sol":{"keccak256":"0xc4133fae25e61cc2447d7331729f6035322d7c1fe26b39b225422bf98cc63459","urls":["bzz-raw://3c24ff8428504e973e947a059f96289a66c520cd7f8ef47a3224f9cb6abdaf25","dweb:/ipfs/QmVqxYnngWXXcCiuTC143vTEJrjZK5NXWB92pjvVbuJBQ5"],"license":"MIT"},"src/interfaces/external/IWETH9.sol":{"keccak256":"0xe88abf12501ac275619aec0687240a07d26968aecbbcdfea88ba8bbd5d6e5e14","urls":["bzz-raw://7097065d4492b4eccb1a73f99af1e5bec45404c6b973b8f5965c4c91403f5f92","dweb:/ipfs/QmZK8oEqmjmTqhBoh3D3fBpyKGkUEFnptY8xwH9xpNjDm2"],"license":"MIT"},"src/libraries/ActionConstants.sol":{"keccak256":"0x3d6f0e5b4a7b1e60bad93e73dce5db67fb66bebef11c31ed8355014a79aa03b3","urls":["bzz-raw://6dfa42e24b1b5c7f66e75304ab034fbb6768518eb2410ccfff8b3defdd1658f2","dweb:/ipfs/QmQQ7fud9mmv7PEWPAQiNzeZhNkWf28Z6nCHc2e6WJFfa7"],"license":"MIT"},"src/libraries/Actions.sol":{"keccak256":"0x8efd4b8b289177ee27e557d9d0a5a9f973d66fe1eb1ef8959d316b11987ca830","urls":["bzz-raw://07fe35f194eb99465028f0546359befea574d844da53767d32f22b233c3bcc98","dweb:/ipfs/Qmc19631uFxABTHAbGrDrroexi9GdyxWntaum1v8npPYz5"],"license":"MIT"},"src/libraries/CalldataDecoder.sol":{"keccak256":"0x26df49e13fb5410fd4db253cca877dfdfb3a1ba03e394d054c0e0514a88a56e5","urls":["bzz-raw://72a0c98c52171708f332f83d517deeb97fdd50ecf28f2510e1866e54593a6ff8","dweb:/ipfs/QmY4LiDUfSKGj86nML7B6a8euiPciUqwYehasAyAVnMCHq"],"license":"MIT"},"src/libraries/ERC721PermitHash.sol":{"keccak256":"0xd8024f516738a1f968169875efd4ba803049c933cf6ea5e36189df9915f4e3f2","urls":["bzz-raw://58b45295f87c31f516a727a2a40ba2f34ac57ebd5520c42ea59946d2ffc0f5df","dweb:/ipfs/QmW8xC2xS18r4yhGbhSJTN1DfCgPT6oKHxwwszutn2sPuz"],"license":"MIT"},"src/libraries/LiquidityAmounts.sol":{"keccak256":"0x8ea74b89831877ffe657f8461164a01a6f3c7e46f415410854fca8d28a8cab53","urls":["bzz-raw://f4015f62e5e8aa154baa555dc39ce36b498e6d875a53f793d62b8556e6b97ccb","dweb:/ipfs/QmUVHyEe3hZZZQum5ct6yDY8qduj62Ta7f7x5Kw95LpQbg"],"license":"MIT"},"src/libraries/Locker.sol":{"keccak256":"0x5c0859290a277fbfba8579b506426d3fc4b2ff7d8b691c03dd23aa85797fdae1","urls":["bzz-raw://18ad9effea8da74b9988373dddddd6669f11701fc954f77d2cb58beb9a9cc3ad","dweb:/ipfs/QmQdBMoXdVACo6k6rumWj15UPDCqGpWNSPvQbejxKuV9RJ"],"license":"MIT"},"src/libraries/PathKey.sol":{"keccak256":"0xbbd79ffefe045f025263e389539021266fb4d371463aefba405e1ff1d3fcf9bc","urls":["bzz-raw://2d1c47b81a01218be46ee79f0a8837095479b94dc5cfd18abbf2006709f0ea89","dweb:/ipfs/QmRb6CQ13Zp7f3WF5jbZtsF2szhxpPgcuWs9mjwQXxzqtg"],"license":"MIT"},"src/libraries/PositionInfoLibrary.sol":{"keccak256":"0xc5ddf96bd088bc87ea50a20f907fc932fb28397a42682a301b268a11b7f34078","urls":["bzz-raw://7dfeb4dc747537240f8167243e8066b6f5f08057386fb8bda93f82973fc18ad6","dweb:/ipfs/Qmby9DAAaHj8hjsMUnqY3vjqCHKGAKrT5EULMmeGcjbbGx"],"license":"MIT"},"src/libraries/SlippageCheck.sol":{"keccak256":"0x9b7872e403b417dfbcf9835b16109f80f7abed702652a9817e28f07189983b4b","urls":["bzz-raw://911974b8e37b3be02150090b64d841fcc1153277d20f75315b3b8eb02c111e66","dweb:/ipfs/QmRYe4UAYG5TNqB2ygM3n7e3GFMhJmW1c29WZjGDfGQyxQ"],"license":"MIT"}},"version":1},"id":34}