Skip to content

Instantly share code, notes, and snippets.

@saucepoint
Created September 22, 2023 16:05
Show Gist options
  • Save saucepoint/a02ac97a0dba5e5905aa515a6cfb46be to your computer and use it in GitHub Desktop.
Save saucepoint/a02ac97a0dba5e5905aa515a6cfb46be to your computer and use it in GitHub Desktop.
V4 Testnet ABIs
{
"abi": [
{
"inputs": [
{
"internalType": "contract IPoolManager",
"name": "_manager",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "ERC20TransferFailed",
"type": "error"
},
{
"inputs": [],
"name": "NativeTransferFailed",
"type": "error"
},
{
"inputs": [
{
"components": [
{
"internalType": "Currency",
"name": "currency0",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency1",
"type": "address"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
},
{
"internalType": "contract IHooks",
"name": "hooks",
"type": "address"
}
],
"internalType": "struct PoolKey",
"name": "key",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "amount0",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1",
"type": "uint256"
}
],
"name": "donate",
"outputs": [
{
"internalType": "BalanceDelta",
"name": "delta",
"type": "int256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "rawData",
"type": "bytes"
}
],
"name": "lockAcquired",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "manager",
"outputs": [
{
"internalType": "contract IPoolManager",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": {
"object": "0x60a060405234801561001057600080fd5b50604051610dc7380380610dc783398101604081905261002f91610040565b6001600160a01b0316608052610070565b60006020828403121561005257600080fd5b81516001600160a01b038116811461006957600080fd5b9392505050565b608051610cff6100c860003960008181604b0152818160dc015281816101f2015281816102300152818161033f01528181610420015281816104f9015281816105b20152818161065901526107310152610cff6000f3fe6080604052600436106100345760003560e01c8063481c6a7514610039578063a67dd8f31461008a578063ab6291fe146100ab575b600080fd5b34801561004557600080fd5b5061006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61009d61009836600461094d565b6100d8565b604051908152602001610081565b3480156100b757600080fd5b506100cb6100c6366004610981565b6101e5565b6040516100819190610a43565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663815483196040518060800160405280336001600160a01b03168152602001878152602001868152602001858152506040516020016101439190610a5d565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016e9190610a43565b6000604051808303816000875af115801561018d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101b59190810190610ade565b8060200190518101906101c89190610b8b565b90504780156101dd576101dd600033836107c7565b509392505050565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461021c57600080fd5b600061022a83850185610ba4565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663234266d7836020015184604001518560600151600067ffffffffffffffff81111561028657610286610867565b6040519080825280601f01601f1916602001820160405280156102b0576020820181803683370190505b506040518563ffffffff1660e01b81526004016102d09493929190610c17565b6020604051808303816000875af11580156102ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103139190610b8b565b905060006103218260801c90565b600f0b131561056a576020820151516001600160a01b0316610402577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636a256b296103768360801c90565b6020850151516040516001600160e01b031960e085901b1681526001600160a01b0390911660048201526fffffffffffffffffffffffffffffffff919091169060240160206040518083038185885af11580156103d7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906103fc9190610b8b565b5061056a565b8160200151600001516001600160a01b03166323b872dd83600001517f00000000000000000000000000000000000000000000000000000000000000006104498560801c90565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526fffffffffffffffffffffffffffffffff1660448201526064016020604051808303816000875af11580156104af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d39190610c86565b50602082015151604051636a256b2960e01b81526001600160a01b0391821660048201527f000000000000000000000000000000000000000000000000000000000000000090911690636a256b29906024016020604051808303816000875af1158015610544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105689190610b8b565b505b600081600f0b13156107a25760208083015101516001600160a01b031661063b576020808301510151604051636a256b2960e01b81526001600160a01b0391821660048201527f000000000000000000000000000000000000000000000000000000000000000090911690636a256b29906fffffffffffffffffffffffffffffffff84169060240160206040518083038185885af1158015610610573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906106359190610b8b565b506107a2565b8160200151602001516001600160a01b03166323b872dd83600001517f000000000000000000000000000000000000000000000000000000000000000061067f8590565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526fffffffffffffffffffffffffffffffff1660448201526064016020604051808303816000875af11580156106e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107099190610c86565b506020828101510151604051636a256b2960e01b81526001600160a01b0391821660048201527f000000000000000000000000000000000000000000000000000000000000000090911690636a256b29906024016020604051808303816000875af115801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a09190610b8b565b505b6040805160208101839052016040516020818303038152906040529250505092915050565b60006001600160a01b0384166108065760008060008085875af190508061080157604051633d2cec6f60e21b815260040160405180910390fd5b610861565b60405163a9059cbb60e01b6000528360045282602452602060006044600080895af13d15601f3d116001600051141617169150600060605280604052508061086157604051633c9fd93960e21b815260040160405180910390fd5b50505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461089257600080fd5b50565b80356108a08161087d565b919050565b600060a082840312156108b757600080fd5b60405160a0810181811067ffffffffffffffff821117156108da576108da610867565b60405290508082356108eb8161087d565b815260208301356108fb8161087d565b6020820152604083013562ffffff8116811461091657600080fd5b60408201526060830135600281900b811461093057600080fd5b606082015261094160808401610895565b60808201525092915050565b600080600060e0848603121561096257600080fd5b61096c85856108a5565b9560a0850135955060c0909401359392505050565b6000806020838503121561099457600080fd5b823567ffffffffffffffff808211156109ac57600080fd5b818501915085601f8301126109c057600080fd5b8135818111156109cf57600080fd5b8660208285010111156109e157600080fd5b60209290920196919550909350505050565b60005b83811015610a0e5781810151838201526020016109f6565b50506000910152565b60008151808452610a2f8160208601602086016109f3565b601f01601f19169290920160200192915050565b602081526000610a566020830184610a17565b9392505050565b81516001600160a01b03168152602080830151610100830191610ac4908401826001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b50604083015160c083015260609092015160e09091015290565b600060208284031215610af057600080fd5b815167ffffffffffffffff80821115610b0857600080fd5b818401915084601f830112610b1c57600080fd5b815181811115610b2e57610b2e610867565b604051601f8201601f19908116603f01168101908382118183101715610b5657610b56610867565b81604052828152876020848701011115610b6f57600080fd5b610b808360208301602088016109f3565b979650505050505050565b600060208284031215610b9d57600080fd5b5051919050565b60006101008284031215610bb757600080fd5b6040516080810181811067ffffffffffffffff82111715610bda57610bda610867565b6040528235610be88161087d565b8152610bf784602085016108a5565b602082015260c0830135604082015260e090920135606083015250919050565b6000610100610c6883886001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b8560a08401528460c08401528060e0840152610b8081840185610a17565b600060208284031215610c9857600080fd5b81518015158114610a5657600080fdfea2646970667358221220031ac5e6581970bb23dc7ece97deadbd6c03b16a55ddaca19d4f207b8e0f20cb64736f6c637823302e382e32322d63692e323032332e382e31332b636f6d6d69742e64376165346439340054",
"sourceMap": "487:2001:33:-:0;;;619:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;664:18:33;;;487:2001;;14:311:107;105:6;158:2;146:9;137:7;133:23;129:32;126:52;;;174:1;171;164:12;126:52;200:16;;-1:-1:-1;;;;;245:31:107;;235:42;;225:70;;291:1;288;281:12;225:70;314:5;14:311;-1:-1:-1;;;14:311:107:o;:::-;487:2001:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x6080604052600436106100345760003560e01c8063481c6a7514610039578063a67dd8f31461008a578063ab6291fe146100ab575b600080fd5b34801561004557600080fd5b5061006d7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61009d61009836600461094d565b6100d8565b604051908152602001610081565b3480156100b757600080fd5b506100cb6100c6366004610981565b6101e5565b6040516100819190610a43565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663815483196040518060800160405280336001600160a01b03168152602001878152602001868152602001858152506040516020016101439190610a5d565b6040516020818303038152906040526040518263ffffffff1660e01b815260040161016e9190610a43565b6000604051808303816000875af115801561018d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101b59190810190610ade565b8060200190518101906101c89190610b8b565b90504780156101dd576101dd600033836107c7565b509392505050565b6060336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461021c57600080fd5b600061022a83850185610ba4565b905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663234266d7836020015184604001518560600151600067ffffffffffffffff81111561028657610286610867565b6040519080825280601f01601f1916602001820160405280156102b0576020820181803683370190505b506040518563ffffffff1660e01b81526004016102d09493929190610c17565b6020604051808303816000875af11580156102ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103139190610b8b565b905060006103218260801c90565b600f0b131561056a576020820151516001600160a01b0316610402577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316636a256b296103768360801c90565b6020850151516040516001600160e01b031960e085901b1681526001600160a01b0390911660048201526fffffffffffffffffffffffffffffffff919091169060240160206040518083038185885af11580156103d7573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906103fc9190610b8b565b5061056a565b8160200151600001516001600160a01b03166323b872dd83600001517f00000000000000000000000000000000000000000000000000000000000000006104498560801c90565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526fffffffffffffffffffffffffffffffff1660448201526064016020604051808303816000875af11580156104af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104d39190610c86565b50602082015151604051636a256b2960e01b81526001600160a01b0391821660048201527f000000000000000000000000000000000000000000000000000000000000000090911690636a256b29906024016020604051808303816000875af1158015610544573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105689190610b8b565b505b600081600f0b13156107a25760208083015101516001600160a01b031661063b576020808301510151604051636a256b2960e01b81526001600160a01b0391821660048201527f000000000000000000000000000000000000000000000000000000000000000090911690636a256b29906fffffffffffffffffffffffffffffffff84169060240160206040518083038185885af1158015610610573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906106359190610b8b565b506107a2565b8160200151602001516001600160a01b03166323b872dd83600001517f000000000000000000000000000000000000000000000000000000000000000061067f8590565b6040516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301526fffffffffffffffffffffffffffffffff1660448201526064016020604051808303816000875af11580156106e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107099190610c86565b506020828101510151604051636a256b2960e01b81526001600160a01b0391821660048201527f000000000000000000000000000000000000000000000000000000000000000090911690636a256b29906024016020604051808303816000875af115801561077c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a09190610b8b565b505b6040805160208101839052016040516020818303038152906040529250505092915050565b60006001600160a01b0384166108065760008060008085875af190508061080157604051633d2cec6f60e21b815260040160405180910390fd5b610861565b60405163a9059cbb60e01b6000528360045282602452602060006044600080895af13d15601f3d116001600051141617169150600060605280604052508061086157604051633c9fd93960e21b815260040160405180910390fd5b50505050565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461089257600080fd5b50565b80356108a08161087d565b919050565b600060a082840312156108b757600080fd5b60405160a0810181811067ffffffffffffffff821117156108da576108da610867565b60405290508082356108eb8161087d565b815260208301356108fb8161087d565b6020820152604083013562ffffff8116811461091657600080fd5b60408201526060830135600281900b811461093057600080fd5b606082015261094160808401610895565b60808201525092915050565b600080600060e0848603121561096257600080fd5b61096c85856108a5565b9560a0850135955060c0909401359392505050565b6000806020838503121561099457600080fd5b823567ffffffffffffffff808211156109ac57600080fd5b818501915085601f8301126109c057600080fd5b8135818111156109cf57600080fd5b8660208285010111156109e157600080fd5b60209290920196919550909350505050565b60005b83811015610a0e5781810151838201526020016109f6565b50506000910152565b60008151808452610a2f8160208601602086016109f3565b601f01601f19169290920160200192915050565b602081526000610a566020830184610a17565b9392505050565b81516001600160a01b03168152602080830151610100830191610ac4908401826001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b50604083015160c083015260609092015160e09091015290565b600060208284031215610af057600080fd5b815167ffffffffffffffff80821115610b0857600080fd5b818401915084601f830112610b1c57600080fd5b815181811115610b2e57610b2e610867565b604051601f8201601f19908116603f01168101908382118183101715610b5657610b56610867565b81604052828152876020848701011115610b6f57600080fd5b610b808360208301602088016109f3565b979650505050505050565b600060208284031215610b9d57600080fd5b5051919050565b60006101008284031215610bb757600080fd5b6040516080810181811067ffffffffffffffff82111715610bda57610bda610867565b6040528235610be88161087d565b8152610bf784602085016108a5565b602082015260c0830135604082015260e090920135606083015250919050565b6000610100610c6883886001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b8560a08401528460c08401528060e0840152610b8081840185610a17565b600060208284031215610c9857600080fd5b81518015158114610a5657600080fdfea2646970667358221220031ac5e6581970bb23dc7ece97deadbd6c03b16a55ddaca19d4f207b8e0f20cb64736f6c637823302e382e32322d63692e323032332e382e31332b636f6d6d69742e64376165346439340054",
"sourceMap": "487:2001:33:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;575:37;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;199:55:107;;;181:74;;169:2;154:18;575:37:33;;;;;;;;823:432;;;;;;:::i;:::-;;:::i;:::-;;;2386:25:107;;;2374:2;2359:18;823:432:33;2207:210:107;1261:1225:33;;;;;;;;;;-1:-1:-1;1261:1225:33;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;823:432::-;943:18;996:7;-1:-1:-1;;;;;996:12:33;;1020:47;;;;;;;;1033:10;-1:-1:-1;;;;;1020:47:33;;;;;1045:3;1020:47;;;;1050:7;1020:47;;;;1059:7;1020:47;;;1009:59;;;;;;;;:::i;:::-;;;;;;;;;;;;;996:73;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;996:73:33;;;;;;;;;;;;:::i;:::-;985:101;;;;;;;;;;;;:::i;:::-;977:109;-1:-1:-1;1118:21:33;1153:14;;1149:100;;1183:55;1088:1:50;1215:10:33;1227;1183:31;:55::i;:::-;967:288;823:432;;;;;:::o;1261:1225::-;1325:12;1357:10;-1:-1:-1;;;;;1379:7:33;1357:30;;1349:39;;;;;;1399:24;1426:35;;;;1437:7;1426:35;:::i;:::-;1399:62;;1472:18;1493:7;-1:-1:-1;;;;;1493:14:33;;1508:4;:8;;;1518:4;:12;;;1532:4;:12;;;1556:1;1546:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1546:12:33;;1493:66;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1472:87;;1592:1;1574:15;:5;1039:3:49;1035:22;;863:210;1574:15:33;:19;;;1570:433;;;1613:8;;;;:18;-1:-1:-1;;;;;1613:27:33;1609:384;;1662:7;-1:-1:-1;;;;;1662:14:33;;1692:15;:5;1039:3:49;1035:22;;863:210;1692:15:33;1710:8;;;;:18;1662:67;;-1:-1:-1;;;;;;1662:67:33;;;;;;;-1:-1:-1;;;;;199:55:107;;;1662:67:33;;;181:74:107;1662:67:33;;;;;;154:18:107;;1662:67:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1609:384;;;1798:4;:8;;;:18;;;-1:-1:-1;;;;;1768:63:33;;1853:4;:11;;;1874:7;1892:15;:5;1039:3:49;1035:22;;863:210;1892:15:33;1768:158;;-1:-1:-1;;;;;;1768:158:33;;;;;;;-1:-1:-1;;;;;7907:15:107;;;1768:158:33;;;7889:34:107;7959:15;;;;7939:18;;;7932:43;8023:34;8011:47;7991:18;;;7984:75;7801:18;;1768:158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;1959:8:33;;;;:18;1944:34;;-1:-1:-1;;;1944:34:33;;-1:-1:-1;;;;;199:55:107;;;1944:34:33;;;181:74:107;1944:7:33;:14;;;;;;154:18:107;;1944:34:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1609:384;2034:1;2016:5;:19;;;2012:433;;;2055:8;;;;;:18;;-1:-1:-1;;;;;2055:27:33;2051:384;;2152:8;;;;;:18;;2104:67;;-1:-1:-1;;;2104:67:33;;-1:-1:-1;;;;;199:55:107;;;2104:67:33;;;181:74:107;2104:7:33;:14;;;;;;:67;;;;154:18:107;;2104:67:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2051:384;;;2240:4;:8;;;:18;;;-1:-1:-1;;;;;2210:63:33;;2295:4;:11;;;2316:7;2334:15;:5;1251:12:49;1079:200;2334:15:33;2210:158;;-1:-1:-1;;;;;;2210:158:33;;;;;;;-1:-1:-1;;;;;7907:15:107;;;2210:158:33;;;7889:34:107;7959:15;;;;7939:18;;;7932:43;8023:34;8011:47;7991:18;;;7984:75;7801:18;;2210:158:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2401:8:33;;;;;:18;;2386:34;;-1:-1:-1;;;2386:34:33;;-1:-1:-1;;;;;199:55:107;;;2386:34:33;;;181:74:107;2386:7:33;:14;;;;;;154:18:107;;2386:34:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2051:384;2462:17;;;;;;2386:25:107;;;2359:18;2462:17:33;;;;;;;;;;;;2455:24;;;;1261:1225;;;;:::o;1098:1975:50:-;1344:12;-1:-1:-1;;;;;1370:17:50;;1366:1701;;1546:1;1543;1540;1537;1529:6;1525:2;1518:5;1513:35;1502:46;;1581:7;1576:43;;1597:22;;-1:-1:-1;;;1597:22:50;;;;;;;;;;;1576:43;1366:1701;;;1787:4;1781:11;-1:-1:-1;;;1918:1:50;1911:77;2015:2;2012:1;2005:13;2075:6;2071:2;2064:18;2826:2;2823:1;2819:2;2816:1;2813;2803:8;2796:5;2791:38;2446:16;2439:24;2433:2;2415:16;2412:24;2408:1;2404;2398:8;2395:15;2391:46;2388:76;2164:687;2133:718;;2882:1;2876:4;2869:15;2948:10;2942:4;2935:24;;3019:7;3014:42;;3035:21;;-1:-1:-1;;;3035:21:50;;;;;;;;;;;3014:42;1172:1901;1098:1975;;;:::o;266:127:107:-;327:10;322:3;318:20;315:1;308:31;358:4;355:1;348:15;382:4;379:1;372:15;398:176;-1:-1:-1;;;;;499:5:107;495:54;488:5;485:65;475:93;;564:1;561;554:12;475:93;398:176;:::o;579:164::-;655:20;;684:53;655:20;684:53;:::i;:::-;579:164;;;:::o;748:1082::-;802:5;850:4;838:9;833:3;829:19;825:30;822:50;;;868:1;865;858:12;822:50;901:2;895:9;943:4;935:6;931:17;1014:6;1002:10;999:22;978:18;966:10;963:34;960:62;957:88;;;1025:18;;:::i;:::-;1061:2;1054:22;1094:6;-1:-1:-1;1094:6:107;1124:23;;1156:55;1124:23;1156:55;:::i;:::-;1220:23;;1295:2;1280:18;;1267:32;1308:55;1267:32;1308:55;:::i;:::-;1391:2;1379:15;;1372:32;1456:2;1441:18;;1428:32;1504:8;1491:22;;1479:35;;1469:63;;1528:1;1525;1518:12;1469:63;1560:2;1548:15;;1541:32;1625:2;1610:18;;1597:32;1671:1;1660:22;;;1648:35;;1638:63;;1697:1;1694;1687:12;1638:63;1729:2;1717:15;;1710:32;1776:47;1818:3;1803:19;;1776:47;:::i;:::-;1770:3;1762:6;1758:16;1751:73;;748:1082;;;;:::o;1835:367::-;1938:6;1946;1954;2007:3;1995:9;1986:7;1982:23;1978:33;1975:53;;;2024:1;2021;2014:12;1975:53;2047:45;2084:7;2073:9;2047:45;:::i;:::-;2037:55;2139:3;2124:19;;2111:33;;-1:-1:-1;2191:3:107;2176:19;;;2163:33;;1835:367;-1:-1:-1;;;1835:367:107:o;2422:591::-;2492:6;2500;2553:2;2541:9;2532:7;2528:23;2524:32;2521:52;;;2569:1;2566;2559:12;2521:52;2609:9;2596:23;2638:18;2679:2;2671:6;2668:14;2665:34;;;2695:1;2692;2685:12;2665:34;2733:6;2722:9;2718:22;2708:32;;2778:7;2771:4;2767:2;2763:13;2759:27;2749:55;;2800:1;2797;2790:12;2749:55;2840:2;2827:16;2866:2;2858:6;2855:14;2852:34;;;2882:1;2879;2872:12;2852:34;2927:7;2922:2;2913:6;2909:2;2905:15;2901:24;2898:37;2895:57;;;2948:1;2945;2938:12;2895:57;2979:2;2971:11;;;;;3001:6;;-1:-1:-1;2422:591:107;;-1:-1:-1;;;;2422:591:107:o;3018:250::-;3103:1;3113:113;3127:6;3124:1;3121:13;3113:113;;;3203:11;;;3197:18;3184:11;;;3177:39;3149:2;3142:10;3113:113;;;-1:-1:-1;;3260:1:107;3242:16;;3235:27;3018:250::o;3273:270::-;3314:3;3352:5;3346:12;3379:6;3374:3;3367:19;3395:76;3464:6;3457:4;3452:3;3448:14;3441:4;3434:5;3430:16;3395:76;:::i;:::-;3525:2;3504:15;-1:-1:-1;;3500:29:107;3491:39;;;;3532:4;3487:50;;3273:270;-1:-1:-1;;3273:270:107:o;3548:217::-;3695:2;3684:9;3677:21;3658:4;3715:44;3755:2;3744:9;3740:18;3732:6;3715:44;:::i;:::-;3707:52;3548:217;-1:-1:-1;;;3548:217:107:o;4209:543::-;4438:13;;-1:-1:-1;;;;;4434:62:107;4416:81;;4544:4;4532:17;;;4526:24;4403:3;4388:19;;;4559:61;;4599:20;;4526:24;-1:-1:-1;;;;;3922:2:107;3914:5;3908:12;3904:21;3899:3;3892:34;3987:2;3979:4;3972:5;3968:16;3962:23;3958:32;3951:4;3946:3;3942:14;3935:56;4052:8;4044:4;4037:5;4033:16;4027:23;4023:38;4016:4;4011:3;4007:14;4000:62;4125:4;4118:5;4114:16;4108:23;4105:1;4094:38;4087:4;4082:3;4078:14;4071:62;4194:2;4186:4;4179:5;4175:16;4169:23;4165:32;4158:4;4153:3;4149:14;4142:56;;3770:434;;;4559:61;-1:-1:-1;4676:4:107;4664:17;;4658:24;4651:4;4636:20;;4629:54;4739:4;4727:17;;;4721:24;4714:4;4699:20;;;4692:54;4209:543;:::o;4757:896::-;4836:6;4889:2;4877:9;4868:7;4864:23;4860:32;4857:52;;;4905:1;4902;4895:12;4857:52;4938:9;4932:16;4967:18;5008:2;5000:6;4997:14;4994:34;;;5024:1;5021;5014:12;4994:34;5062:6;5051:9;5047:22;5037:32;;5107:7;5100:4;5096:2;5092:13;5088:27;5078:55;;5129:1;5126;5119:12;5078:55;5158:2;5152:9;5180:2;5176;5173:10;5170:36;;;5186:18;;:::i;:::-;5261:2;5255:9;5229:2;5315:13;;-1:-1:-1;;5311:22:107;;;5335:2;5307:31;5303:40;5291:53;;;5359:18;;;5379:22;;;5356:46;5353:72;;;5405:18;;:::i;:::-;5445:10;5441:2;5434:22;5480:2;5472:6;5465:18;5520:7;5515:2;5510;5506;5502:11;5498:20;5495:33;5492:53;;;5541:1;5538;5531:12;5492:53;5554:68;5619:2;5614;5606:6;5602:15;5597:2;5593;5589:11;5554:68;:::i;:::-;5641:6;4757:896;-1:-1:-1;;;;;;;4757:896:107:o;5658:218::-;5762:6;5815:2;5803:9;5794:7;5790:23;5786:32;5783:52;;;5831:1;5828;5821:12;5783:52;-1:-1:-1;5854:16:107;;5658:218;-1:-1:-1;5658:218:107:o;5881:759::-;5970:6;6023:3;6011:9;6002:7;5998:23;5994:33;5991:53;;;6040:1;6037;6030:12;5991:53;6073:2;6067:9;6115:4;6107:6;6103:17;6186:6;6174:10;6171:22;6150:18;6138:10;6135:34;6132:62;6129:88;;;6197:18;;:::i;:::-;6233:2;6226:22;6270:23;;6302:53;6270:23;6302:53;:::i;:::-;6364:21;;6418:54;6464:7;6459:2;6444:18;;6418:54;:::i;:::-;6413:2;6401:15;;6394:79;6534:3;6519:19;;6506:33;6501:2;6489:15;;6482:58;6603:3;6588:19;;;6575:33;6568:4;6556:17;;6549:60;-1:-1:-1;6405:6:107;5881:759;-1:-1:-1;5881:759:107:o;6645:526::-;6891:4;6920:3;6932:44;6966:9;6958:6;-1:-1:-1;;;;;3922:2:107;3914:5;3908:12;3904:21;3899:3;3892:34;3987:2;3979:4;3972:5;3968:16;3962:23;3958:32;3951:4;3946:3;3942:14;3935:56;4052:8;4044:4;4037:5;4033:16;4027:23;4023:38;4016:4;4011:3;4007:14;4000:62;4125:4;4118:5;4114:16;4108:23;4105:1;4094:38;4087:4;4082:3;4078:14;4071:62;4194:2;4186:4;4179:5;4175:16;4169:23;4165:32;4158:4;4153:3;4149:14;4142:56;;3770:434;;;6932:44;7013:6;7007:3;6996:9;6992:19;6985:35;7057:6;7051:3;7040:9;7036:19;7029:35;7101:2;7095:3;7084:9;7080:19;7073:31;7121:44;7161:2;7150:9;7146:18;7138:6;7121:44;:::i;8070:277::-;8137:6;8190:2;8178:9;8169:7;8165:23;8161:32;8158:52;;;8206:1;8203;8196:12;8158:52;8238:9;8232:16;8291:5;8284:13;8277:21;8270:5;8267:32;8257:60;;8313:1;8310;8303:12",
"linkReferences": {},
"immutableReferences": {
"8942": [
{
"start": 75,
"length": 32
},
{
"start": 220,
"length": 32
},
{
"start": 498,
"length": 32
},
{
"start": 560,
"length": 32
},
{
"start": 831,
"length": 32
},
{
"start": 1056,
"length": 32
},
{
"start": 1273,
"length": 32
},
{
"start": 1458,
"length": 32
},
{
"start": 1625,
"length": 32
},
{
"start": 1841,
"length": 32
}
]
}
},
"methodIdentifiers": {
"donate((address,address,uint24,int24,address),uint256,uint256)": "a67dd8f3",
"lockAcquired(bytes)": "ab6291fe",
"manager()": "481c6a75"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22-ci.2023.8.13+commit.d7ae4d94\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"_manager\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ERC20TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeTransferFailed\",\"type\":\"error\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"donate\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"rawData\",\"type\":\"bytes\"}],\"name\":\"lockAcquired\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"manager\",\"outputs\":[{\"internalType\":\"contract IPoolManager\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"errors\":{\"ERC20TransferFailed()\":[{\"notice\":\"Thrown when an ERC20 transfer fails\"}],\"NativeTransferFailed()\":[{\"notice\":\"Thrown when a native transfer fails\"}]},\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/PoolDonateTest.sol\":\"PoolDonateTest\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-gas-snapshot/=lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"contracts/interfaces/IFees.sol\":{\"keccak256\":\"0x2fb66160acff9b1a6031e3ada15e4271b25399d6b921dc17679cde1e50f566e2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7bb4c14e2f3bc0c92729b3fc24f57aaaaf9bd1930411aa937afd49e2c3811bfb\",\"dweb:/ipfs/QmP8kj9hvpDhWBrjuZUmxX7UAsbbkU6bceRKHdwg66MpPK\"]},\"contracts/interfaces/IHooks.sol\":{\"keccak256\":\"0x7263c9c8fef8b2346bebfd67956b287666a8c9e1f74131789650af4945ba4523\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef70e4a9ec5d8721fa844216d752d4135d88ad4562a00d125ae158ce40748569\",\"dweb:/ipfs/QmSSRNcCmcvTSmm87hgAMsK3zqfcPkgemqm4JzaQf92PgM\"]},\"contracts/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xb110f845d51b3b22400a71f8877c411267409d0e0acb4399cf1a4baa1c4d8492\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e79a6541dff47947d24aab246254ec774fff2e0cbf8dd860b7869f9f4958711\",\"dweb:/ipfs/Qmd9b4tiFzeTyeUWeKdxiiUnsnNv6Cb8s1ruzVLgK7Z2WJ\"]},\"contracts/interfaces/callback/ILockCallback.sol\":{\"keccak256\":\"0xbbe48da53b400e2ebe65e8b2d7fff212f4da3657bafec984c9144387c98f1816\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://364c1990569b9e2f1c2d24ddec70c0a88bd18c9b7262e835f10d6c82cca48a23\",\"dweb:/ipfs/QmNkooBi1MwGtwdZWTtVj3Yje1q1NSbAKvuhirtovid9fu\"]},\"contracts/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0x8dc5ee72426906aeb12f4ae6a2426df059491739bd5cbdb8ea4a3e26970436c6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7e30dbbc972cb78d169c8845d6210d27490c8534e68a20d4f296b11ec727b92\",\"dweb:/ipfs/QmXBvaWaAnPW25YGVm2sMbf5mwrzLapUcqPnrNiiGGXxmA\"]},\"contracts/libraries/BitMath.sol\":{\"keccak256\":\"0x652cd36970d953b3067c766b3b0c0063d4c403eba7352df09ec10dcc868910d9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e357b092171edb755c8514b4b4ae758a8b43458c7a23409ebf5afd325fefa2be\",\"dweb:/ipfs/QmWKRWT2z15cVbVVDkjqdVnpf8Ck1jytcXbA7zCUevp7b6\"]},\"contracts/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x1f015a7a107f4c471985a958f1bfbc1710948f9bcd3786a02310bc0ad5080c69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a1cacac08675284f319d151f6bc5d1c66cf1d54c5dad1c620a2e1e1336cbb93a\",\"dweb:/ipfs/QmPf8vQ3mBqniKHwvS1DDEFrV5dJfZSL6mMi9JVy6omQaz\"]},\"contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x7731aeeba692b0ca5dac8f27803ec9e5ce98795a554c09ae05c220861bd0314e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://963a8155e442d31c4541c387d333db0c02941ae3517e9173ad30ebcb4f6a14e9\",\"dweb:/ipfs/QmevAr8oG4WSoi5gBqQ53VzBuFbDKoZHfJwjuTmVhzm8Tc\"]},\"contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x6d8760794ed38264579c5da7b2afe8ff5543de999180850bc08687b77dce36ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e72da6f868ba5f5c829f78f649286c6b5922a8cda0317dfbb156b8a4d27fb24\",\"dweb:/ipfs/QmUQDZciNFhy4AFGXfYvoy22ihPc7ehvypeRVQwvVcD3vJ\"]},\"contracts/libraries/LockDataLibrary.sol\":{\"keccak256\":\"0x56d00c580d8e3c48dbad28c59aa1245ef98d953dc380a7a4eadc1f7d883a29bc\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://73d04edef13331c408d526da2a1b41fc905bbc10c0ef4625df233be289608f4c\",\"dweb:/ipfs/QmcX7H3mQ5hMcKfRKBY2UwNkiBuMqKfgbusNzWw2DyrXje\"]},\"contracts/libraries/Pool.sol\":{\"keccak256\":\"0xe68c53367349bf7d5ec53f10abbe32effabe41c288eea6b42de67941104e4bc7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e69c6333c17577871f4995af3d3cdb278ad72b721a5c42d66a0b412e8b3559ed\",\"dweb:/ipfs/QmUtxoY88otDhFprbvST7LbcxacWrQrn4mZ8QfemBQDAxY\"]},\"contracts/libraries/Position.sol\":{\"keccak256\":\"0x1319e4c172e31427c3b3521dd3c9c9c3949da22e25c9919ae57c47a8c9328e43\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e0885e8e035681836fe02213e165d1ab48cf2488cf6ba8f01964b4b026d2b46\",\"dweb:/ipfs/QmR4W3DZYYvctASLFnm7Sf4wk2L77gwNRrTS2mBqtiUaud\"]},\"contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xb459cbf9f2cda4c38c11916e888cc2afbe4297c5ae6f50a0976eb83ed0dc9b25\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5608698d33b18d3f49e3fa1fbdf6e7c6383378f7d53c914dcf14a0411cf7a79b\",\"dweb:/ipfs/QmbF4VWDcTPzH17aczU6eCUcqTp9Be7xiuBGB5TMWmtJAi\"]},\"contracts/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x62cb03c7ce6ce037c82fa74e5aabb2431d6b4ddbca1458efdabf5d6af9ca6f90\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://206e025889f55aa8e5d9db2f846460394b54d6dc6d80a5e4ca1d4b70edd98188\",\"dweb:/ipfs/QmNSzKqtUDXHzgXXDjdNv3ZnHZE3LU4KhwNmkrcWtTRGqk\"]},\"contracts/libraries/SwapMath.sol\":{\"keccak256\":\"0xac5b75b36ff928e88cbec828bdc9db03e681cc3b337d5d7f6be9fd617b3fef7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6aaea2ecabdb3fec93c7c6be19ea3a034cf396a59ab96f61c57b5214c04b5a6e\",\"dweb:/ipfs/QmYyd4ExT6xbvEHZTQBv9nZuvU6xjB6EN4uY8TmK8Tceqv\"]},\"contracts/libraries/TickBitmap.sol\":{\"keccak256\":\"0x7cccb8dff4c76da872a827f1549dc44cdff384d123e77a5361a02a31902bf15c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://88f850cd5bd2bbada4d9514f2516804392c7b23dc2cb541b74e9c88d0a351dcd\",\"dweb:/ipfs/QmZh9LvKUG23oFUZXAAa5gn77MguAbZ41VGjkES5U8N9Em\"]},\"contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xadffea78a3eed37613b57766d87c0bdb9454d2df39de90d7a450e4a8b3207e56\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c5043430807061e5ccc82986c59b2e074457ff608111a8bd51b413ceaf661c78\",\"dweb:/ipfs/QmXjqKzCrngzidTRmuLUFvwNPqMKtd8xVFLVCycRfEQcWo\"]},\"contracts/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x2a8cb75af05f8557b698b089a0ab19e24279fffb7e87cddf5794404c7eaf1c69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://85f68e6d614205f3f0f55f6ac41805e3a7d523d95bda1c443f2e75444443ffe3\",\"dweb:/ipfs/QmdCheMqxWNx4CbxG5MH9BUQeSMeeXF6DHkf7Aax4duRUe\"]},\"contracts/test/PoolDonateTest.sol\":{\"keccak256\":\"0xfa59e4ab2c0e6886c969f371f9de4f2f66e8c751a2ec9a51c40300d92af54437\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://8cb786f2855afa7b99ff949520a34c33616b891b280a7b95e4e09cab54a2542a\",\"dweb:/ipfs/QmT6EnRLgtAV14Kyqrh7Y2mo944DqMtkFEBUDA8jPGdcyP\"]},\"contracts/types/BalanceDelta.sol\":{\"keccak256\":\"0xb88fc16f2ae715bd796e5cdb77c2297117f18ce2183288ae4680d7f20cce5f85\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://829baa2d4becbf8f0298fcaafb2305cf57bab5bcccdf8ac10d171bbb68c37e6f\",\"dweb:/ipfs/QmPs18e2YgwJECriyft46Rp7p9iECPEpkNXV1gom5NosfF\"]},\"contracts/types/Currency.sol\":{\"keccak256\":\"0x008a7aeff6cdb7709a8e5893c9e9895a8a7ad594a0605586174e576b9888ff80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c773b120bacb261695d4e00973ff25359dbf3aee071d19268833cc76e71f1aa2\",\"dweb:/ipfs/QmawinVYJJSWcQH4Lo5Hh7ond58RHAjeCL13FE47a5Egcw\"]},\"contracts/types/LockSentinel.sol\":{\"keccak256\":\"0xb10a648d7d56f778be5e2aa497cb55b375de851fb5c6ea6a68c9a898b831d60c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://39c1f6e17e0d727bef600c6552b3db259219b4fa2c3854e6f27c884232304db6\",\"dweb:/ipfs/QmXyE5zYUs4JZy4RAJRKq6sAd3GwxB8YZ39g8FgANDTdFt\"]},\"contracts/types/PoolId.sol\":{\"keccak256\":\"0xd28e4ac2a0874b5372ab3873a263701ce625a840fc563c63d5ad8f7b3272f325\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0575161cdbe0c3ef8fa023a5f606563ec793bad863446822bdf310bce8dbcccd\",\"dweb:/ipfs/QmUM26Umcr3LEfM2sZ6eGtgBa2KmQde6Ea6898n8tt38mv\"]},\"contracts/types/PoolKey.sol\":{\"keccak256\":\"0x4928c59e15db5af3bff68f4d9243ebe11a1dc4a4cbfa57c564db376086a902ce\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://235245bf768c3b708be7837f6aa3bb6bcab7b25036df99e2cc257363350f6ea7\",\"dweb:/ipfs/QmWPurWV2vYoaVNxZyj4DkCqS8Aode5U9JE8WHmbyVR8jH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f920a631bf986c610fe573d3c70a2bb6f224f86f4a8550016470c7ee476c9ab5\",\"dweb:/ipfs/QmYzsyVMfnaREKHcHv5RPS8Xg5r1Q38E2SDsGBTnXeFWzb\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22-ci.2023.8.13+commit.d7ae4d94"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "contract IPoolManager",
"name": "_manager",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"type": "error",
"name": "ERC20TransferFailed"
},
{
"inputs": [],
"type": "error",
"name": "NativeTransferFailed"
},
{
"inputs": [
{
"internalType": "struct PoolKey",
"name": "key",
"type": "tuple",
"components": [
{
"internalType": "Currency",
"name": "currency0",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency1",
"type": "address"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
},
{
"internalType": "contract IHooks",
"name": "hooks",
"type": "address"
}
]
},
{
"internalType": "uint256",
"name": "amount0",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function",
"name": "donate",
"outputs": [
{
"internalType": "BalanceDelta",
"name": "delta",
"type": "int256"
}
]
},
{
"inputs": [
{
"internalType": "bytes",
"name": "rawData",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "lockAcquired",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "manager",
"outputs": [
{
"internalType": "contract IPoolManager",
"name": "",
"type": "address"
}
]
}
],
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
},
"settings": {
"remappings": [
"@ensdomains/=node_modules/@ensdomains/",
"@openzeppelin/=lib/openzeppelin-contracts/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-gas-snapshot/=lib/forge-gas-snapshot/src/",
"forge-std/=lib/forge-std/src/",
"hardhat/=node_modules/hardhat/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
"solmate/=lib/solmate/src/"
],
"optimizer": {
"enabled": true,
"runs": 800
},
"metadata": {
"bytecodeHash": "ipfs"
},
"compilationTarget": {
"contracts/test/PoolDonateTest.sol": "PoolDonateTest"
},
"libraries": {}
},
"sources": {
"contracts/interfaces/IFees.sol": {
"keccak256": "0x2fb66160acff9b1a6031e3ada15e4271b25399d6b921dc17679cde1e50f566e2",
"urls": [
"bzz-raw://7bb4c14e2f3bc0c92729b3fc24f57aaaaf9bd1930411aa937afd49e2c3811bfb",
"dweb:/ipfs/QmP8kj9hvpDhWBrjuZUmxX7UAsbbkU6bceRKHdwg66MpPK"
],
"license": "GPL-2.0-or-later"
},
"contracts/interfaces/IHooks.sol": {
"keccak256": "0x7263c9c8fef8b2346bebfd67956b287666a8c9e1f74131789650af4945ba4523",
"urls": [
"bzz-raw://ef70e4a9ec5d8721fa844216d752d4135d88ad4562a00d125ae158ce40748569",
"dweb:/ipfs/QmSSRNcCmcvTSmm87hgAMsK3zqfcPkgemqm4JzaQf92PgM"
],
"license": "GPL-2.0-or-later"
},
"contracts/interfaces/IPoolManager.sol": {
"keccak256": "0xb110f845d51b3b22400a71f8877c411267409d0e0acb4399cf1a4baa1c4d8492",
"urls": [
"bzz-raw://8e79a6541dff47947d24aab246254ec774fff2e0cbf8dd860b7869f9f4958711",
"dweb:/ipfs/Qmd9b4tiFzeTyeUWeKdxiiUnsnNv6Cb8s1ruzVLgK7Z2WJ"
],
"license": "GPL-2.0-or-later"
},
"contracts/interfaces/callback/ILockCallback.sol": {
"keccak256": "0xbbe48da53b400e2ebe65e8b2d7fff212f4da3657bafec984c9144387c98f1816",
"urls": [
"bzz-raw://364c1990569b9e2f1c2d24ddec70c0a88bd18c9b7262e835f10d6c82cca48a23",
"dweb:/ipfs/QmNkooBi1MwGtwdZWTtVj3Yje1q1NSbAKvuhirtovid9fu"
],
"license": "GPL-2.0-or-later"
},
"contracts/interfaces/external/IERC20Minimal.sol": {
"keccak256": "0x8dc5ee72426906aeb12f4ae6a2426df059491739bd5cbdb8ea4a3e26970436c6",
"urls": [
"bzz-raw://f7e30dbbc972cb78d169c8845d6210d27490c8534e68a20d4f296b11ec727b92",
"dweb:/ipfs/QmXBvaWaAnPW25YGVm2sMbf5mwrzLapUcqPnrNiiGGXxmA"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/BitMath.sol": {
"keccak256": "0x652cd36970d953b3067c766b3b0c0063d4c403eba7352df09ec10dcc868910d9",
"urls": [
"bzz-raw://e357b092171edb755c8514b4b4ae758a8b43458c7a23409ebf5afd325fefa2be",
"dweb:/ipfs/QmWKRWT2z15cVbVVDkjqdVnpf8Ck1jytcXbA7zCUevp7b6"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/FixedPoint128.sol": {
"keccak256": "0x1f015a7a107f4c471985a958f1bfbc1710948f9bcd3786a02310bc0ad5080c69",
"urls": [
"bzz-raw://a1cacac08675284f319d151f6bc5d1c66cf1d54c5dad1c620a2e1e1336cbb93a",
"dweb:/ipfs/QmPf8vQ3mBqniKHwvS1DDEFrV5dJfZSL6mMi9JVy6omQaz"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/FixedPoint96.sol": {
"keccak256": "0x7731aeeba692b0ca5dac8f27803ec9e5ce98795a554c09ae05c220861bd0314e",
"urls": [
"bzz-raw://963a8155e442d31c4541c387d333db0c02941ae3517e9173ad30ebcb4f6a14e9",
"dweb:/ipfs/QmevAr8oG4WSoi5gBqQ53VzBuFbDKoZHfJwjuTmVhzm8Tc"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/FullMath.sol": {
"keccak256": "0x6d8760794ed38264579c5da7b2afe8ff5543de999180850bc08687b77dce36ea",
"urls": [
"bzz-raw://0e72da6f868ba5f5c829f78f649286c6b5922a8cda0317dfbb156b8a4d27fb24",
"dweb:/ipfs/QmUQDZciNFhy4AFGXfYvoy22ihPc7ehvypeRVQwvVcD3vJ"
],
"license": "MIT"
},
"contracts/libraries/LockDataLibrary.sol": {
"keccak256": "0x56d00c580d8e3c48dbad28c59aa1245ef98d953dc380a7a4eadc1f7d883a29bc",
"urls": [
"bzz-raw://73d04edef13331c408d526da2a1b41fc905bbc10c0ef4625df233be289608f4c",
"dweb:/ipfs/QmcX7H3mQ5hMcKfRKBY2UwNkiBuMqKfgbusNzWw2DyrXje"
],
"license": "BUSL-1.1"
},
"contracts/libraries/Pool.sol": {
"keccak256": "0xe68c53367349bf7d5ec53f10abbe32effabe41c288eea6b42de67941104e4bc7",
"urls": [
"bzz-raw://e69c6333c17577871f4995af3d3cdb278ad72b721a5c42d66a0b412e8b3559ed",
"dweb:/ipfs/QmUtxoY88otDhFprbvST7LbcxacWrQrn4mZ8QfemBQDAxY"
],
"license": "BUSL-1.1"
},
"contracts/libraries/Position.sol": {
"keccak256": "0x1319e4c172e31427c3b3521dd3c9c9c3949da22e25c9919ae57c47a8c9328e43",
"urls": [
"bzz-raw://1e0885e8e035681836fe02213e165d1ab48cf2488cf6ba8f01964b4b026d2b46",
"dweb:/ipfs/QmR4W3DZYYvctASLFnm7Sf4wk2L77gwNRrTS2mBqtiUaud"
],
"license": "BUSL-1.1"
},
"contracts/libraries/SafeCast.sol": {
"keccak256": "0xb459cbf9f2cda4c38c11916e888cc2afbe4297c5ae6f50a0976eb83ed0dc9b25",
"urls": [
"bzz-raw://5608698d33b18d3f49e3fa1fbdf6e7c6383378f7d53c914dcf14a0411cf7a79b",
"dweb:/ipfs/QmbF4VWDcTPzH17aczU6eCUcqTp9Be7xiuBGB5TMWmtJAi"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/SqrtPriceMath.sol": {
"keccak256": "0x62cb03c7ce6ce037c82fa74e5aabb2431d6b4ddbca1458efdabf5d6af9ca6f90",
"urls": [
"bzz-raw://206e025889f55aa8e5d9db2f846460394b54d6dc6d80a5e4ca1d4b70edd98188",
"dweb:/ipfs/QmNSzKqtUDXHzgXXDjdNv3ZnHZE3LU4KhwNmkrcWtTRGqk"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/SwapMath.sol": {
"keccak256": "0xac5b75b36ff928e88cbec828bdc9db03e681cc3b337d5d7f6be9fd617b3fef7f",
"urls": [
"bzz-raw://6aaea2ecabdb3fec93c7c6be19ea3a034cf396a59ab96f61c57b5214c04b5a6e",
"dweb:/ipfs/QmYyd4ExT6xbvEHZTQBv9nZuvU6xjB6EN4uY8TmK8Tceqv"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/TickBitmap.sol": {
"keccak256": "0x7cccb8dff4c76da872a827f1549dc44cdff384d123e77a5361a02a31902bf15c",
"urls": [
"bzz-raw://88f850cd5bd2bbada4d9514f2516804392c7b23dc2cb541b74e9c88d0a351dcd",
"dweb:/ipfs/QmZh9LvKUG23oFUZXAAa5gn77MguAbZ41VGjkES5U8N9Em"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/TickMath.sol": {
"keccak256": "0xadffea78a3eed37613b57766d87c0bdb9454d2df39de90d7a450e4a8b3207e56",
"urls": [
"bzz-raw://c5043430807061e5ccc82986c59b2e074457ff608111a8bd51b413ceaf661c78",
"dweb:/ipfs/QmXjqKzCrngzidTRmuLUFvwNPqMKtd8xVFLVCycRfEQcWo"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/UnsafeMath.sol": {
"keccak256": "0x2a8cb75af05f8557b698b089a0ab19e24279fffb7e87cddf5794404c7eaf1c69",
"urls": [
"bzz-raw://85f68e6d614205f3f0f55f6ac41805e3a7d523d95bda1c443f2e75444443ffe3",
"dweb:/ipfs/QmdCheMqxWNx4CbxG5MH9BUQeSMeeXF6DHkf7Aax4duRUe"
],
"license": "GPL-2.0-or-later"
},
"contracts/test/PoolDonateTest.sol": {
"keccak256": "0xfa59e4ab2c0e6886c969f371f9de4f2f66e8c751a2ec9a51c40300d92af54437",
"urls": [
"bzz-raw://8cb786f2855afa7b99ff949520a34c33616b891b280a7b95e4e09cab54a2542a",
"dweb:/ipfs/QmT6EnRLgtAV14Kyqrh7Y2mo944DqMtkFEBUDA8jPGdcyP"
],
"license": "UNLICENSED"
},
"contracts/types/BalanceDelta.sol": {
"keccak256": "0xb88fc16f2ae715bd796e5cdb77c2297117f18ce2183288ae4680d7f20cce5f85",
"urls": [
"bzz-raw://829baa2d4becbf8f0298fcaafb2305cf57bab5bcccdf8ac10d171bbb68c37e6f",
"dweb:/ipfs/QmPs18e2YgwJECriyft46Rp7p9iECPEpkNXV1gom5NosfF"
],
"license": "GPL-2.0-or-later"
},
"contracts/types/Currency.sol": {
"keccak256": "0x008a7aeff6cdb7709a8e5893c9e9895a8a7ad594a0605586174e576b9888ff80",
"urls": [
"bzz-raw://c773b120bacb261695d4e00973ff25359dbf3aee071d19268833cc76e71f1aa2",
"dweb:/ipfs/QmawinVYJJSWcQH4Lo5Hh7ond58RHAjeCL13FE47a5Egcw"
],
"license": "GPL-2.0-or-later"
},
"contracts/types/LockSentinel.sol": {
"keccak256": "0xb10a648d7d56f778be5e2aa497cb55b375de851fb5c6ea6a68c9a898b831d60c",
"urls": [
"bzz-raw://39c1f6e17e0d727bef600c6552b3db259219b4fa2c3854e6f27c884232304db6",
"dweb:/ipfs/QmXyE5zYUs4JZy4RAJRKq6sAd3GwxB8YZ39g8FgANDTdFt"
],
"license": "GPL-2.0-or-later"
},
"contracts/types/PoolId.sol": {
"keccak256": "0xd28e4ac2a0874b5372ab3873a263701ce625a840fc563c63d5ad8f7b3272f325",
"urls": [
"bzz-raw://0575161cdbe0c3ef8fa023a5f606563ec793bad863446822bdf310bce8dbcccd",
"dweb:/ipfs/QmUM26Umcr3LEfM2sZ6eGtgBa2KmQde6Ea6898n8tt38mv"
],
"license": "GPL-2.0-or-later"
},
"contracts/types/PoolKey.sol": {
"keccak256": "0x4928c59e15db5af3bff68f4d9243ebe11a1dc4a4cbfa57c564db376086a902ce",
"urls": [
"bzz-raw://235245bf768c3b708be7837f6aa3bb6bcab7b25036df99e2cc257363350f6ea7",
"dweb:/ipfs/QmWPurWV2vYoaVNxZyj4DkCqS8Aode5U9JE8WHmbyVR8jH"
],
"license": "GPL-2.0-or-later"
},
"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol": {
"keccak256": "0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9",
"urls": [
"bzz-raw://f920a631bf986c610fe573d3c70a2bb6f224f86f4a8550016470c7ee476c9ab5",
"dweb:/ipfs/QmYzsyVMfnaREKHcHv5RPS8Xg5r1Q38E2SDsGBTnXeFWzb"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": {
"keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1",
"urls": [
"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f",
"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"
],
"license": "MIT"
}
},
"version": 1
},
"ast": {
"absolutePath": "contracts/test/PoolDonateTest.sol",
"id": 9195,
"exportedSymbols": {
"BalanceDelta": [
12833
],
"Currency": [
12941
],
"CurrencyLibrary": [
13189
],
"IERC20Minimal": [
2683
],
"ILockCallback": [
2611
],
"IPoolManager": [
2586
],
"PoolDonateTest": [
9194
],
"PoolKey": [
13253
]
},
"nodeType": "SourceUnit",
"src": "39:2450:33",
"nodes": [
{
"id": 8918,
"nodeType": "PragmaDirective",
"src": "39:24:33",
"nodes": [],
"literals": [
"solidity",
"^",
"0.8",
".20"
]
},
{
"id": 8921,
"nodeType": "ImportDirective",
"src": "65:64:33",
"nodes": [],
"absolutePath": "contracts/types/Currency.sol",
"file": "../types/Currency.sol",
"nameLocation": "-1:-1:-1",
"scope": 9195,
"sourceUnit": 13190,
"symbolAliases": [
{
"foreign": {
"id": 8919,
"name": "Currency",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12941,
"src": "73:8:33",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 8920,
"name": "CurrencyLibrary",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13189,
"src": "83:15:33",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 8923,
"nodeType": "ImportDirective",
"src": "130:71:33",
"nodes": [],
"absolutePath": "contracts/interfaces/external/IERC20Minimal.sol",
"file": "../interfaces/external/IERC20Minimal.sol",
"nameLocation": "-1:-1:-1",
"scope": 9195,
"sourceUnit": 2684,
"symbolAliases": [
{
"foreign": {
"id": 8922,
"name": "IERC20Minimal",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2683,
"src": "138:13:33",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 8925,
"nodeType": "ImportDirective",
"src": "203:47:33",
"nodes": [],
"absolutePath": "contracts/types/Currency.sol",
"file": "../types/Currency.sol",
"nameLocation": "-1:-1:-1",
"scope": 9195,
"sourceUnit": 13190,
"symbolAliases": [
{
"foreign": {
"id": 8924,
"name": "Currency",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12941,
"src": "211:8:33",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 8927,
"nodeType": "ImportDirective",
"src": "251:71:33",
"nodes": [],
"absolutePath": "contracts/interfaces/callback/ILockCallback.sol",
"file": "../interfaces/callback/ILockCallback.sol",
"nameLocation": "-1:-1:-1",
"scope": 9195,
"sourceUnit": 2612,
"symbolAliases": [
{
"foreign": {
"id": 8926,
"name": "ILockCallback",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2611,
"src": "259:13:33",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 8929,
"nodeType": "ImportDirective",
"src": "323:60:33",
"nodes": [],
"absolutePath": "contracts/interfaces/IPoolManager.sol",
"file": "../interfaces/IPoolManager.sol",
"nameLocation": "-1:-1:-1",
"scope": 9195,
"sourceUnit": 2587,
"symbolAliases": [
{
"foreign": {
"id": 8928,
"name": "IPoolManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2586,
"src": "331:12:33",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 8931,
"nodeType": "ImportDirective",
"src": "384:45:33",
"nodes": [],
"absolutePath": "contracts/types/PoolKey.sol",
"file": "../types/PoolKey.sol",
"nameLocation": "-1:-1:-1",
"scope": 9195,
"sourceUnit": 13254,
"symbolAliases": [
{
"foreign": {
"id": 8930,
"name": "PoolKey",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13253,
"src": "392:7:33",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 8933,
"nodeType": "ImportDirective",
"src": "430:55:33",
"nodes": [],
"absolutePath": "contracts/types/BalanceDelta.sol",
"file": "../types/BalanceDelta.sol",
"nameLocation": "-1:-1:-1",
"scope": 9195,
"sourceUnit": 12936,
"symbolAliases": [
{
"foreign": {
"id": 8932,
"name": "BalanceDelta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12833,
"src": "438:12:33",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 9194,
"nodeType": "ContractDefinition",
"src": "487:2001:33",
"nodes": [
{
"id": 8939,
"nodeType": "UsingForDirective",
"src": "534:35:33",
"nodes": [],
"global": false,
"libraryName": {
"id": 8936,
"name": "CurrencyLibrary",
"nameLocations": [
"540:15:33"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13189,
"src": "540:15:33"
},
"typeName": {
"id": 8938,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 8937,
"name": "Currency",
"nameLocations": [
"560:8:33"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 12941,
"src": "560:8:33"
},
"referencedDeclaration": 12941,
"src": "560:8:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
}
},
{
"id": 8942,
"nodeType": "VariableDeclaration",
"src": "575:37:33",
"nodes": [],
"constant": false,
"functionSelector": "481c6a75",
"mutability": "immutable",
"name": "manager",
"nameLocation": "605:7:33",
"scope": 9194,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
},
"typeName": {
"id": 8941,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 8940,
"name": "IPoolManager",
"nameLocations": [
"575:12:33"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 2586,
"src": "575:12:33"
},
"referencedDeclaration": 2586,
"src": "575:12:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
},
"visibility": "public"
},
{
"id": 8953,
"nodeType": "FunctionDefinition",
"src": "619:70:33",
"nodes": [],
"body": {
"id": 8952,
"nodeType": "Block",
"src": "654:35:33",
"nodes": [],
"statements": [
{
"expression": {
"id": 8950,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 8948,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8942,
"src": "664:7:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 8949,
"name": "_manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8945,
"src": "674:8:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
},
"src": "664:18:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
},
"id": 8951,
"nodeType": "ExpressionStatement",
"src": "664:18:33"
}
]
},
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nameLocation": "-1:-1:-1",
"parameters": {
"id": 8946,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 8945,
"mutability": "mutable",
"name": "_manager",
"nameLocation": "644:8:33",
"nodeType": "VariableDeclaration",
"scope": 8953,
"src": "631:21:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
},
"typeName": {
"id": 8944,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 8943,
"name": "IPoolManager",
"nameLocations": [
"631:12:33"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 2586,
"src": "631:12:33"
},
"referencedDeclaration": 2586,
"src": "631:12:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
},
"visibility": "internal"
}
],
"src": "630:23:33"
},
"returnParameters": {
"id": 8947,
"nodeType": "ParameterList",
"parameters": [],
"src": "654:0:33"
},
"scope": 9194,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 8963,
"nodeType": "StructDefinition",
"src": "695:122:33",
"nodes": [],
"canonicalName": "PoolDonateTest.CallbackData",
"members": [
{
"constant": false,
"id": 8955,
"mutability": "mutable",
"name": "sender",
"nameLocation": "733:6:33",
"nodeType": "VariableDeclaration",
"scope": 8963,
"src": "725:14:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 8954,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "725:7:33",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 8958,
"mutability": "mutable",
"name": "key",
"nameLocation": "757:3:33",
"nodeType": "VariableDeclaration",
"scope": 8963,
"src": "749:11:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_storage_ptr",
"typeString": "struct PoolKey"
},
"typeName": {
"id": 8957,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 8956,
"name": "PoolKey",
"nameLocations": [
"749:7:33"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13253,
"src": "749:7:33"
},
"referencedDeclaration": 13253,
"src": "749:7:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_storage_ptr",
"typeString": "struct PoolKey"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 8960,
"mutability": "mutable",
"name": "amount0",
"nameLocation": "778:7:33",
"nodeType": "VariableDeclaration",
"scope": 8963,
"src": "770:15:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 8959,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "770:7:33",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 8962,
"mutability": "mutable",
"name": "amount1",
"nameLocation": "803:7:33",
"nodeType": "VariableDeclaration",
"scope": 8963,
"src": "795:15:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 8961,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "795:7:33",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"name": "CallbackData",
"nameLocation": "702:12:33",
"scope": 9194,
"visibility": "public"
},
{
"id": 9021,
"nodeType": "FunctionDefinition",
"src": "823:432:33",
"nodes": [],
"body": {
"id": 9020,
"nodeType": "Block",
"src": "967:288:33",
"nodes": [],
"statements": [
{
"expression": {
"id": 8995,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 8976,
"name": "delta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8974,
"src": "977:5:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"arguments": [
{
"arguments": [
{
"arguments": [
{
"expression": {
"id": 8984,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "1033:3:33",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 8985,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1037:6:33",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "1033:10:33",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 8986,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8966,
"src": "1045:3:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
{
"id": 8987,
"name": "amount0",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8968,
"src": "1050:7:33",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"id": 8988,
"name": "amount1",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8970,
"src": "1059:7:33",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 8983,
"name": "CallbackData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8963,
"src": "1020:12:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_struct$_CallbackData_$8963_storage_ptr_$",
"typeString": "type(struct PoolDonateTest.CallbackData storage pointer)"
}
},
"id": 8989,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "structConstructorCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1020:47:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
],
"expression": {
"id": 8981,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1009:3:33",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 8982,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "1013:6:33",
"memberName": "encode",
"nodeType": "MemberAccess",
"src": "1009:10:33",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 8990,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1009:59:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 8979,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8942,
"src": "996:7:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
},
"id": 8980,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1004:4:33",
"memberName": "lock",
"nodeType": "MemberAccess",
"referencedDeclaration": 2462,
"src": "996:12:33",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (bytes memory) external returns (bytes memory)"
}
},
"id": 8991,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "996:73:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"components": [
{
"id": 8992,
"name": "BalanceDelta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12833,
"src": "1072:12:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_userDefinedValueType$_BalanceDelta_$12833_$",
"typeString": "type(BalanceDelta)"
}
}
],
"id": 8993,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "1071:14:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_userDefinedValueType$_BalanceDelta_$12833_$",
"typeString": "type(BalanceDelta)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_type$_t_userDefinedValueType$_BalanceDelta_$12833_$",
"typeString": "type(BalanceDelta)"
}
],
"expression": {
"id": 8977,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "985:3:33",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 8978,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "989:6:33",
"memberName": "decode",
"nodeType": "MemberAccess",
"src": "985:10:33",
"typeDescriptions": {
"typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 8994,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "985:101:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"src": "977:109:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"id": 8996,
"nodeType": "ExpressionStatement",
"src": "977:109:33"
},
{
"assignments": [
8998
],
"declarations": [
{
"constant": false,
"id": 8998,
"mutability": "mutable",
"name": "ethBalance",
"nameLocation": "1105:10:33",
"nodeType": "VariableDeclaration",
"scope": 9020,
"src": "1097:18:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 8997,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1097:7:33",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"id": 9004,
"initialValue": {
"expression": {
"arguments": [
{
"id": 9001,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "1126:4:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_PoolDonateTest_$9194",
"typeString": "contract PoolDonateTest"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_PoolDonateTest_$9194",
"typeString": "contract PoolDonateTest"
}
],
"id": 9000,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1118:7:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 8999,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1118:7:33",
"typeDescriptions": {}
}
},
"id": 9002,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1118:13:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 9003,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1132:7:33",
"memberName": "balance",
"nodeType": "MemberAccess",
"src": "1118:21:33",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1097:42:33"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 9007,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 9005,
"name": "ethBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8998,
"src": "1153:10:33",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 9006,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1166:1:33",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1153:14:33",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 9019,
"nodeType": "IfStatement",
"src": "1149:100:33",
"trueBody": {
"id": 9018,
"nodeType": "Block",
"src": "1169:80:33",
"statements": [
{
"expression": {
"arguments": [
{
"expression": {
"id": 9013,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "1215:3:33",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 9014,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1219:6:33",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "1215:10:33",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 9015,
"name": "ethBalance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8998,
"src": "1227:10:33",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"expression": {
"id": 9008,
"name": "CurrencyLibrary",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13189,
"src": "1183:15:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_CurrencyLibrary_$13189_$",
"typeString": "type(library CurrencyLibrary)"
}
},
"id": 9011,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "1199:6:33",
"memberName": "NATIVE",
"nodeType": "MemberAccess",
"referencedDeclaration": 13034,
"src": "1183:22:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
"id": 9012,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1206:8:33",
"memberName": "transfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 13068,
"src": "1183:31:33",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$12941_$_t_address_$_t_uint256_$returns$__$attached_to$_t_userDefinedValueType$_Currency_$12941_$",
"typeString": "function (Currency,address,uint256)"
}
},
"id": 9016,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1183:55:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 9017,
"nodeType": "ExpressionStatement",
"src": "1183:55:33"
}
]
}
}
]
},
"functionSelector": "a67dd8f3",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "donate",
"nameLocation": "832:6:33",
"parameters": {
"id": 8971,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 8966,
"mutability": "mutable",
"name": "key",
"nameLocation": "854:3:33",
"nodeType": "VariableDeclaration",
"scope": 9021,
"src": "839:18:33",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey"
},
"typeName": {
"id": 8965,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 8964,
"name": "PoolKey",
"nameLocations": [
"839:7:33"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13253,
"src": "839:7:33"
},
"referencedDeclaration": 13253,
"src": "839:7:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_storage_ptr",
"typeString": "struct PoolKey"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 8968,
"mutability": "mutable",
"name": "amount0",
"nameLocation": "867:7:33",
"nodeType": "VariableDeclaration",
"scope": 9021,
"src": "859:15:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 8967,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "859:7:33",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 8970,
"mutability": "mutable",
"name": "amount1",
"nameLocation": "884:7:33",
"nodeType": "VariableDeclaration",
"scope": 9021,
"src": "876:15:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 8969,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "876:7:33",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "838:54:33"
},
"returnParameters": {
"id": 8975,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 8974,
"mutability": "mutable",
"name": "delta",
"nameLocation": "956:5:33",
"nodeType": "VariableDeclaration",
"scope": 9021,
"src": "943:18:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
},
"typeName": {
"id": 8973,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 8972,
"name": "BalanceDelta",
"nameLocations": [
"943:12:33"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 12833,
"src": "943:12:33"
},
"referencedDeclaration": 12833,
"src": "943:12:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"visibility": "internal"
}
],
"src": "942:20:33"
},
"scope": 9194,
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
},
{
"id": 9193,
"nodeType": "FunctionDefinition",
"src": "1261:1225:33",
"nodes": [],
"body": {
"id": 9192,
"nodeType": "Block",
"src": "1339:1147:33",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 9035,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 9029,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "1357:3:33",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 9030,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1361:6:33",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "1357:10:33",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"arguments": [
{
"id": 9033,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8942,
"src": "1379:7:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
],
"id": 9032,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1371:7:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 9031,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1371:7:33",
"typeDescriptions": {}
}
},
"id": 9034,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1371:16:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1357:30:33",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 9028,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "1349:7:33",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 9036,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1349:39:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 9037,
"nodeType": "ExpressionStatement",
"src": "1349:39:33"
},
{
"assignments": [
9040
],
"declarations": [
{
"constant": false,
"id": 9040,
"mutability": "mutable",
"name": "data",
"nameLocation": "1419:4:33",
"nodeType": "VariableDeclaration",
"scope": 9192,
"src": "1399:24:33",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData"
},
"typeName": {
"id": 9039,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 9038,
"name": "CallbackData",
"nameLocations": [
"1399:12:33"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 8963,
"src": "1399:12:33"
},
"referencedDeclaration": 8963,
"src": "1399:12:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_storage_ptr",
"typeString": "struct PoolDonateTest.CallbackData"
}
},
"visibility": "internal"
}
],
"id": 9047,
"initialValue": {
"arguments": [
{
"id": 9043,
"name": "rawData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9023,
"src": "1437:7:33",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
{
"components": [
{
"id": 9044,
"name": "CallbackData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8963,
"src": "1447:12:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_struct$_CallbackData_$8963_storage_ptr_$",
"typeString": "type(struct PoolDonateTest.CallbackData storage pointer)"
}
}
],
"id": 9045,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "1446:14:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_struct$_CallbackData_$8963_storage_ptr_$",
"typeString": "type(struct PoolDonateTest.CallbackData storage pointer)"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
},
{
"typeIdentifier": "t_type$_t_struct$_CallbackData_$8963_storage_ptr_$",
"typeString": "type(struct PoolDonateTest.CallbackData storage pointer)"
}
],
"expression": {
"id": 9041,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1426:3:33",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 9042,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "1430:6:33",
"memberName": "decode",
"nodeType": "MemberAccess",
"src": "1426:10:33",
"typeDescriptions": {
"typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 9046,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1426:35:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1399:62:33"
},
{
"assignments": [
9050
],
"declarations": [
{
"constant": false,
"id": 9050,
"mutability": "mutable",
"name": "delta",
"nameLocation": "1485:5:33",
"nodeType": "VariableDeclaration",
"scope": 9192,
"src": "1472:18:33",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
},
"typeName": {
"id": 9049,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 9048,
"name": "BalanceDelta",
"nameLocations": [
"1472:12:33"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 12833,
"src": "1472:12:33"
},
"referencedDeclaration": 12833,
"src": "1472:12:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"visibility": "internal"
}
],
"id": 9064,
"initialValue": {
"arguments": [
{
"expression": {
"id": 9053,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "1508:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9054,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1513:3:33",
"memberName": "key",
"nodeType": "MemberAccess",
"referencedDeclaration": 8958,
"src": "1508:8:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
{
"expression": {
"id": 9055,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "1518:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9056,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1523:7:33",
"memberName": "amount0",
"nodeType": "MemberAccess",
"referencedDeclaration": 8960,
"src": "1518:12:33",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"expression": {
"id": 9057,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "1532:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9058,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1537:7:33",
"memberName": "amount1",
"nodeType": "MemberAccess",
"referencedDeclaration": 8962,
"src": "1532:12:33",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"arguments": [
{
"hexValue": "30",
"id": 9061,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1556:1:33",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 9060,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "1546:9:33",
"typeDescriptions": {
"typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (uint256) pure returns (bytes memory)"
},
"typeName": {
"id": 9059,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1550:5:33",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
"id": 9062,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1546:12:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"id": 9051,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8942,
"src": "1493:7:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
},
"id": 9052,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1501:6:33",
"memberName": "donate",
"nodeType": "MemberAccess",
"referencedDeclaration": 2522,
"src": "1493:14:33",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_struct$_PoolKey_$13253_memory_ptr_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_userDefinedValueType$_BalanceDelta_$12833_$",
"typeString": "function (struct PoolKey memory,uint256,uint256,bytes memory) external returns (BalanceDelta)"
}
},
"id": 9063,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1493:66:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1472:87:33"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_int128",
"typeString": "int128"
},
"id": 9069,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 9065,
"name": "delta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9050,
"src": "1574:5:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"id": 9066,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1580:7:33",
"memberName": "amount0",
"nodeType": "MemberAccess",
"referencedDeclaration": 12924,
"src": "1574:13:33",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_BalanceDelta_$12833_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BalanceDelta_$12833_$",
"typeString": "function (BalanceDelta) pure returns (int128)"
}
},
"id": 9067,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1574:15:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_int128",
"typeString": "int128"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 9068,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1592:1:33",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1574:19:33",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 9125,
"nodeType": "IfStatement",
"src": "1570:433:33",
"trueBody": {
"id": 9124,
"nodeType": "Block",
"src": "1595:408:33",
"statements": [
{
"condition": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"expression": {
"expression": {
"id": 9070,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "1613:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9071,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1618:3:33",
"memberName": "key",
"nodeType": "MemberAccess",
"referencedDeclaration": 8958,
"src": "1613:8:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 9072,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1622:9:33",
"memberName": "currency0",
"nodeType": "MemberAccess",
"referencedDeclaration": 13238,
"src": "1613:18:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
"id": 9073,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1632:8:33",
"memberName": "isNative",
"nodeType": "MemberAccess",
"referencedDeclaration": 13151,
"src": "1613:27:33",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_Currency_$12941_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_Currency_$12941_$",
"typeString": "function (Currency) pure returns (bool)"
}
},
"id": 9074,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1613:29:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 9122,
"nodeType": "Block",
"src": "1750:243:33",
"statements": [
{
"expression": {
"arguments": [
{
"expression": {
"id": 9100,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "1853:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9101,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1858:6:33",
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": 8955,
"src": "1853:11:33",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 9104,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8942,
"src": "1874:7:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
],
"id": 9103,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1866:7:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 9102,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1866:7:33",
"typeDescriptions": {}
}
},
"id": 9105,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1866:16:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 9108,
"name": "delta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9050,
"src": "1892:5:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"id": 9109,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1898:7:33",
"memberName": "amount0",
"nodeType": "MemberAccess",
"referencedDeclaration": 12924,
"src": "1892:13:33",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_BalanceDelta_$12833_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BalanceDelta_$12833_$",
"typeString": "function (BalanceDelta) pure returns (int128)"
}
},
"id": 9110,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1892:15:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_int128",
"typeString": "int128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_int128",
"typeString": "int128"
}
],
"id": 9107,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1884:7:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint128_$",
"typeString": "type(uint128)"
},
"typeName": {
"id": 9106,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "1884:7:33",
"typeDescriptions": {}
}
},
"id": 9111,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1884:24:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
],
"expression": {
"arguments": [
{
"arguments": [
{
"expression": {
"expression": {
"id": 9094,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "1798:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9095,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1803:3:33",
"memberName": "key",
"nodeType": "MemberAccess",
"referencedDeclaration": 8958,
"src": "1798:8:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 9096,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1807:9:33",
"memberName": "currency0",
"nodeType": "MemberAccess",
"referencedDeclaration": 13238,
"src": "1798:18:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
],
"expression": {
"id": 9092,
"name": "Currency",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12941,
"src": "1782:8:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_userDefinedValueType$_Currency_$12941_$",
"typeString": "type(Currency)"
}
},
"id": 9093,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "1791:6:33",
"memberName": "unwrap",
"nodeType": "MemberAccess",
"src": "1782:15:33",
"typeDescriptions": {
"typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$12941_$returns$_t_address_$",
"typeString": "function (Currency) pure returns (address)"
}
},
"id": 9097,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1782:35:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 9091,
"name": "IERC20Minimal",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2683,
"src": "1768:13:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Minimal_$2683_$",
"typeString": "type(contract IERC20Minimal)"
}
},
"id": 9098,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1768:50:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Minimal_$2683",
"typeString": "contract IERC20Minimal"
}
},
"id": 9099,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1819:12:33",
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 2664,
"src": "1768:63:33",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) external returns (bool)"
}
},
"id": 9112,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1768:158:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 9113,
"nodeType": "ExpressionStatement",
"src": "1768:158:33"
},
{
"expression": {
"arguments": [
{
"expression": {
"expression": {
"id": 9117,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "1959:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9118,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1964:3:33",
"memberName": "key",
"nodeType": "MemberAccess",
"referencedDeclaration": 8958,
"src": "1959:8:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 9119,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1968:9:33",
"memberName": "currency0",
"nodeType": "MemberAccess",
"referencedDeclaration": 13238,
"src": "1959:18:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
],
"expression": {
"id": 9114,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8942,
"src": "1944:7:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
},
"id": 9116,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1952:6:33",
"memberName": "settle",
"nodeType": "MemberAccess",
"referencedDeclaration": 2553,
"src": "1944:14:33",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$_t_userDefinedValueType$_Currency_$12941_$returns$_t_uint256_$",
"typeString": "function (Currency) payable external returns (uint256)"
}
},
"id": 9120,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1944:34:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 9121,
"nodeType": "ExpressionStatement",
"src": "1944:34:33"
}
]
},
"id": 9123,
"nodeType": "IfStatement",
"src": "1609:384:33",
"trueBody": {
"id": 9090,
"nodeType": "Block",
"src": "1644:100:33",
"statements": [
{
"expression": {
"arguments": [
{
"expression": {
"expression": {
"id": 9085,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "1710:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9086,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1715:3:33",
"memberName": "key",
"nodeType": "MemberAccess",
"referencedDeclaration": 8958,
"src": "1710:8:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 9087,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1719:9:33",
"memberName": "currency0",
"nodeType": "MemberAccess",
"referencedDeclaration": 13238,
"src": "1710:18:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
],
"expression": {
"id": 9075,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8942,
"src": "1662:7:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
},
"id": 9077,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1670:6:33",
"memberName": "settle",
"nodeType": "MemberAccess",
"referencedDeclaration": 2553,
"src": "1662:14:33",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$_t_userDefinedValueType$_Currency_$12941_$returns$_t_uint256_$",
"typeString": "function (Currency) payable external returns (uint256)"
}
},
"id": 9084,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"names": [
"value"
],
"nodeType": "FunctionCallOptions",
"options": [
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 9080,
"name": "delta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9050,
"src": "1692:5:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"id": 9081,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "1698:7:33",
"memberName": "amount0",
"nodeType": "MemberAccess",
"referencedDeclaration": 12924,
"src": "1692:13:33",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_BalanceDelta_$12833_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BalanceDelta_$12833_$",
"typeString": "function (BalanceDelta) pure returns (int128)"
}
},
"id": 9082,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1692:15:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_int128",
"typeString": "int128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_int128",
"typeString": "int128"
}
],
"id": 9079,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1684:7:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint128_$",
"typeString": "type(uint128)"
},
"typeName": {
"id": 9078,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "1684:7:33",
"typeDescriptions": {}
}
},
"id": 9083,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1684:24:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"src": "1662:47:33",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$_t_userDefinedValueType$_Currency_$12941_$returns$_t_uint256_$value",
"typeString": "function (Currency) payable external returns (uint256)"
}
},
"id": 9088,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1662:67:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 9089,
"nodeType": "ExpressionStatement",
"src": "1662:67:33"
}
]
}
}
]
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_int128",
"typeString": "int128"
},
"id": 9130,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 9126,
"name": "delta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9050,
"src": "2016:5:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"id": 9127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2022:7:33",
"memberName": "amount1",
"nodeType": "MemberAccess",
"referencedDeclaration": 12934,
"src": "2016:13:33",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_BalanceDelta_$12833_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BalanceDelta_$12833_$",
"typeString": "function (BalanceDelta) pure returns (int128)"
}
},
"id": 9128,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2016:15:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_int128",
"typeString": "int128"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"hexValue": "30",
"id": 9129,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2034:1:33",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2016:19:33",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 9186,
"nodeType": "IfStatement",
"src": "2012:433:33",
"trueBody": {
"id": 9185,
"nodeType": "Block",
"src": "2037:408:33",
"statements": [
{
"condition": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"expression": {
"expression": {
"id": 9131,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "2055:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9132,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2060:3:33",
"memberName": "key",
"nodeType": "MemberAccess",
"referencedDeclaration": 8958,
"src": "2055:8:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 9133,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2064:9:33",
"memberName": "currency1",
"nodeType": "MemberAccess",
"referencedDeclaration": 13242,
"src": "2055:18:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
"id": 9134,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2074:8:33",
"memberName": "isNative",
"nodeType": "MemberAccess",
"referencedDeclaration": 13151,
"src": "2055:27:33",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_Currency_$12941_$returns$_t_bool_$attached_to$_t_userDefinedValueType$_Currency_$12941_$",
"typeString": "function (Currency) pure returns (bool)"
}
},
"id": 9135,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2055:29:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 9183,
"nodeType": "Block",
"src": "2192:243:33",
"statements": [
{
"expression": {
"arguments": [
{
"expression": {
"id": 9161,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "2295:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9162,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2300:6:33",
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": 8955,
"src": "2295:11:33",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"id": 9165,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8942,
"src": "2316:7:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
],
"id": 9164,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2308:7:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 9163,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2308:7:33",
"typeDescriptions": {}
}
},
"id": 9166,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2308:16:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 9169,
"name": "delta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9050,
"src": "2334:5:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"id": 9170,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2340:7:33",
"memberName": "amount1",
"nodeType": "MemberAccess",
"referencedDeclaration": 12934,
"src": "2334:13:33",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_BalanceDelta_$12833_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BalanceDelta_$12833_$",
"typeString": "function (BalanceDelta) pure returns (int128)"
}
},
"id": 9171,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2334:15:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_int128",
"typeString": "int128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_int128",
"typeString": "int128"
}
],
"id": 9168,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2326:7:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint128_$",
"typeString": "type(uint128)"
},
"typeName": {
"id": 9167,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "2326:7:33",
"typeDescriptions": {}
}
},
"id": 9172,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2326:24:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
],
"expression": {
"arguments": [
{
"arguments": [
{
"expression": {
"expression": {
"id": 9155,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "2240:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9156,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2245:3:33",
"memberName": "key",
"nodeType": "MemberAccess",
"referencedDeclaration": 8958,
"src": "2240:8:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 9157,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2249:9:33",
"memberName": "currency1",
"nodeType": "MemberAccess",
"referencedDeclaration": 13242,
"src": "2240:18:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
],
"expression": {
"id": 9153,
"name": "Currency",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12941,
"src": "2224:8:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_userDefinedValueType$_Currency_$12941_$",
"typeString": "type(Currency)"
}
},
"id": 9154,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "2233:6:33",
"memberName": "unwrap",
"nodeType": "MemberAccess",
"src": "2224:15:33",
"typeDescriptions": {
"typeIdentifier": "t_function_unwrap_pure$_t_userDefinedValueType$_Currency_$12941_$returns$_t_address_$",
"typeString": "function (Currency) pure returns (address)"
}
},
"id": 9158,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2224:35:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 9152,
"name": "IERC20Minimal",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2683,
"src": "2210:13:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20Minimal_$2683_$",
"typeString": "type(contract IERC20Minimal)"
}
},
"id": 9159,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2210:50:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20Minimal_$2683",
"typeString": "contract IERC20Minimal"
}
},
"id": 9160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2261:12:33",
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 2664,
"src": "2210:63:33",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) external returns (bool)"
}
},
"id": 9173,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2210:158:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 9174,
"nodeType": "ExpressionStatement",
"src": "2210:158:33"
},
{
"expression": {
"arguments": [
{
"expression": {
"expression": {
"id": 9178,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "2401:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9179,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2406:3:33",
"memberName": "key",
"nodeType": "MemberAccess",
"referencedDeclaration": 8958,
"src": "2401:8:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 9180,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2410:9:33",
"memberName": "currency1",
"nodeType": "MemberAccess",
"referencedDeclaration": 13242,
"src": "2401:18:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
],
"expression": {
"id": 9175,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8942,
"src": "2386:7:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
},
"id": 9177,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2394:6:33",
"memberName": "settle",
"nodeType": "MemberAccess",
"referencedDeclaration": 2553,
"src": "2386:14:33",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$_t_userDefinedValueType$_Currency_$12941_$returns$_t_uint256_$",
"typeString": "function (Currency) payable external returns (uint256)"
}
},
"id": 9181,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2386:34:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 9182,
"nodeType": "ExpressionStatement",
"src": "2386:34:33"
}
]
},
"id": 9184,
"nodeType": "IfStatement",
"src": "2051:384:33",
"trueBody": {
"id": 9151,
"nodeType": "Block",
"src": "2086:100:33",
"statements": [
{
"expression": {
"arguments": [
{
"expression": {
"expression": {
"id": 9146,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9040,
"src": "2152:4:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_CallbackData_$8963_memory_ptr",
"typeString": "struct PoolDonateTest.CallbackData memory"
}
},
"id": 9147,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2157:3:33",
"memberName": "key",
"nodeType": "MemberAccess",
"referencedDeclaration": 8958,
"src": "2152:8:33",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 9148,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2161:9:33",
"memberName": "currency1",
"nodeType": "MemberAccess",
"referencedDeclaration": 13242,
"src": "2152:18:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
],
"expression": {
"id": 9136,
"name": "manager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8942,
"src": "2104:7:33",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IPoolManager_$2586",
"typeString": "contract IPoolManager"
}
},
"id": 9138,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2112:6:33",
"memberName": "settle",
"nodeType": "MemberAccess",
"referencedDeclaration": 2553,
"src": "2104:14:33",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$_t_userDefinedValueType$_Currency_$12941_$returns$_t_uint256_$",
"typeString": "function (Currency) payable external returns (uint256)"
}
},
"id": 9145,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"names": [
"value"
],
"nodeType": "FunctionCallOptions",
"options": [
{
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 9141,
"name": "delta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9050,
"src": "2134:5:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"id": 9142,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2140:7:33",
"memberName": "amount1",
"nodeType": "MemberAccess",
"referencedDeclaration": 12934,
"src": "2134:13:33",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_BalanceDelta_$12833_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BalanceDelta_$12833_$",
"typeString": "function (BalanceDelta) pure returns (int128)"
}
},
"id": 9143,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2134:15:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_int128",
"typeString": "int128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_int128",
"typeString": "int128"
}
],
"id": 9140,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "2126:7:33",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint128_$",
"typeString": "type(uint128)"
},
"typeName": {
"id": 9139,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "2126:7:33",
"typeDescriptions": {}
}
},
"id": 9144,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2126:24:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"src": "2104:47:33",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$_t_userDefinedValueType$_Currency_$12941_$returns$_t_uint256_$value",
"typeString": "function (Currency) payable external returns (uint256)"
}
},
"id": 9149,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2104:67:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 9150,
"nodeType": "ExpressionStatement",
"src": "2104:67:33"
}
]
}
}
]
}
},
{
"expression": {
"arguments": [
{
"id": 9189,
"name": "delta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 9050,
"src": "2473:5:33",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
],
"expression": {
"id": 9187,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "2462:3:33",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 9188,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "2466:6:33",
"memberName": "encode",
"nodeType": "MemberAccess",
"src": "2462:10:33",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 9190,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2462:17:33",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 9027,
"id": 9191,
"nodeType": "Return",
"src": "2455:24:33"
}
]
},
"baseFunctions": [
2610
],
"functionSelector": "ab6291fe",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "lockAcquired",
"nameLocation": "1270:12:33",
"parameters": {
"id": 9024,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 9023,
"mutability": "mutable",
"name": "rawData",
"nameLocation": "1298:7:33",
"nodeType": "VariableDeclaration",
"scope": 9193,
"src": "1283:22:33",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 9022,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1283:5:33",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "1282:24:33"
},
"returnParameters": {
"id": 9027,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 9026,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 9193,
"src": "1325:12:33",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 9025,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "1325:5:33",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "1324:14:33"
},
"scope": 9194,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"abstract": false,
"baseContracts": [
{
"baseName": {
"id": 8934,
"name": "ILockCallback",
"nameLocations": [
"514:13:33"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 2611,
"src": "514:13:33"
},
"id": 8935,
"nodeType": "InheritanceSpecifier",
"src": "514:13:33"
}
],
"canonicalName": "PoolDonateTest",
"contractDependencies": [],
"contractKind": "contract",
"fullyImplemented": true,
"linearizedBaseContracts": [
9194,
2611
],
"name": "PoolDonateTest",
"nameLocation": "496:14:33",
"scope": 9195,
"usedErrors": [
13021,
13024
],
"usedEvents": []
}
],
"license": "UNLICENSED"
},
"id": 33
}
This file has been truncated, but you can view the full file.
{
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "controllerGasLimit",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "CannotUpdateEmptyPosition",
"type": "error"
},
{
"inputs": [],
"name": "CurrenciesInitializedOutOfOrder",
"type": "error"
},
{
"inputs": [],
"name": "CurrencyNotSettled",
"type": "error"
},
{
"inputs": [],
"name": "DelegateCallNotAllowed",
"type": "error"
},
{
"inputs": [],
"name": "ERC20TransferFailed",
"type": "error"
},
{
"inputs": [],
"name": "FeeTooLarge",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "hooks",
"type": "address"
}
],
"name": "HookAddressNotValid",
"type": "error"
},
{
"inputs": [],
"name": "InvalidCaller",
"type": "error"
},
{
"inputs": [],
"name": "InvalidHookResponse",
"type": "error"
},
{
"inputs": [],
"name": "InvalidSqrtRatio",
"type": "error"
},
{
"inputs": [],
"name": "InvalidTick",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "locker",
"type": "address"
}
],
"name": "LockedBy",
"type": "error"
},
{
"inputs": [],
"name": "MaxCurrenciesTouched",
"type": "error"
},
{
"inputs": [],
"name": "NativeTransferFailed",
"type": "error"
},
{
"inputs": [],
"name": "NoLiquidityToReceiveFees",
"type": "error"
},
{
"inputs": [],
"name": "NotPoolManagerToken",
"type": "error"
},
{
"inputs": [],
"name": "PoolAlreadyInitialized",
"type": "error"
},
{
"inputs": [],
"name": "PoolNotInitialized",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint160",
"name": "sqrtPriceCurrentX96",
"type": "uint160"
},
{
"internalType": "uint160",
"name": "sqrtPriceLimitX96",
"type": "uint160"
}
],
"name": "PriceLimitAlreadyExceeded",
"type": "error"
},
{
"inputs": [
{
"internalType": "uint160",
"name": "sqrtPriceLimitX96",
"type": "uint160"
}
],
"name": "PriceLimitOutOfBounds",
"type": "error"
},
{
"inputs": [],
"name": "ProtocolFeeCannotBeFetched",
"type": "error"
},
{
"inputs": [],
"name": "SwapAmountCannotBeZero",
"type": "error"
},
{
"inputs": [
{
"internalType": "int24",
"name": "tick",
"type": "int24"
}
],
"name": "TickLiquidityOverflow",
"type": "error"
},
{
"inputs": [
{
"internalType": "int24",
"name": "tickLower",
"type": "int24"
}
],
"name": "TickLowerOutOfBounds",
"type": "error"
},
{
"inputs": [
{
"internalType": "int24",
"name": "tick",
"type": "int24"
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
}
],
"name": "TickMisaligned",
"type": "error"
},
{
"inputs": [],
"name": "TickSpacingTooLarge",
"type": "error"
},
{
"inputs": [],
"name": "TickSpacingTooSmall",
"type": "error"
},
{
"inputs": [
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
}
],
"name": "TickUpperOutOfBounds",
"type": "error"
},
{
"inputs": [
{
"internalType": "int24",
"name": "tickLower",
"type": "int24"
},
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
}
],
"name": "TicksMisordered",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "account",
"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": "PoolId",
"name": "id",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint24",
"name": "hookFees",
"type": "uint24"
}
],
"name": "HookFeeUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "Currency",
"name": "currency0",
"type": "address"
},
{
"indexed": true,
"internalType": "Currency",
"name": "currency1",
"type": "address"
},
{
"indexed": false,
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"indexed": false,
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
},
{
"indexed": false,
"internalType": "contract IHooks",
"name": "hooks",
"type": "address"
}
],
"name": "Initialize",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "int24",
"name": "tickLower",
"type": "int24"
},
{
"indexed": false,
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
},
{
"indexed": false,
"internalType": "int256",
"name": "liquidityDelta",
"type": "int256"
}
],
"name": "ModifyPosition",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "oldOwner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "newOwner",
"type": "address"
}
],
"name": "OwnerChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "address",
"name": "protocolFeeController",
"type": "address"
}
],
"name": "ProtocolFeeControllerUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
},
{
"indexed": false,
"internalType": "uint24",
"name": "protocolFees",
"type": "uint24"
}
],
"name": "ProtocolFeeUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
},
{
"indexed": false,
"internalType": "int128",
"name": "amount0",
"type": "int128"
},
{
"indexed": false,
"internalType": "int128",
"name": "amount1",
"type": "int128"
},
{
"indexed": false,
"internalType": "uint160",
"name": "sqrtPriceX96",
"type": "uint160"
},
{
"indexed": false,
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
},
{
"indexed": false,
"internalType": "int24",
"name": "tick",
"type": "int24"
},
{
"indexed": false,
"internalType": "uint24",
"name": "fee",
"type": "uint24"
}
],
"name": "Swap",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"indexed": false,
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
}
],
"name": "TransferBatch",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "operator",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "TransferSingle",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "string",
"name": "value",
"type": "string"
},
{
"indexed": true,
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "URI",
"type": "event"
},
{
"inputs": [],
"name": "MAX_TICK_SPACING",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_PROTOCOL_FEE_DENOMINATOR",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "MIN_TICK_SPACING",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "accounts",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
}
],
"name": "balanceOfBatch",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "collectHookFees",
"outputs": [
{
"internalType": "uint256",
"name": "amountCollected",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "collectProtocolFees",
"outputs": [
{
"internalType": "uint256",
"name": "amountCollected",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "locker",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency",
"type": "address"
}
],
"name": "currencyDelta",
"outputs": [
{
"internalType": "int256",
"name": "currencyDelta",
"type": "int256"
}
],
"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": "uint256",
"name": "amount0",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "hookData",
"type": "bytes"
}
],
"name": "donate",
"outputs": [
{
"internalType": "BalanceDelta",
"name": "delta",
"type": "int256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"name": "extsload",
"outputs": [
{
"internalType": "bytes32",
"name": "value",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "startSlot",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "nSlots",
"type": "uint256"
}
],
"name": "extsload",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "int24",
"name": "tickLower",
"type": "int24"
},
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
}
],
"name": "getLiquidity",
"outputs": [
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
}
],
"name": "getLiquidity",
"outputs": [
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "i",
"type": "uint256"
}
],
"name": "getLock",
"outputs": [
{
"internalType": "address",
"name": "locker",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getLockSentinel",
"outputs": [
{
"internalType": "LockSentinel",
"name": "sentinel",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "int24",
"name": "tickLower",
"type": "int24"
},
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
}
],
"name": "getPosition",
"outputs": [
{
"components": [
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
},
{
"internalType": "uint256",
"name": "feeGrowthInside0LastX128",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "feeGrowthInside1LastX128",
"type": "uint256"
}
],
"internalType": "struct Position.Info",
"name": "position",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
}
],
"name": "getSlot0",
"outputs": [
{
"internalType": "uint160",
"name": "sqrtPriceX96",
"type": "uint160"
},
{
"internalType": "int24",
"name": "tick",
"type": "int24"
},
{
"internalType": "uint24",
"name": "protocolFees",
"type": "uint24"
},
{
"internalType": "uint24",
"name": "hookFees",
"type": "uint24"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "hookAddress",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency",
"type": "address"
}
],
"name": "hookFeesAccrued",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "Currency",
"name": "currency0",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency1",
"type": "address"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
},
{
"internalType": "contract IHooks",
"name": "hooks",
"type": "address"
}
],
"internalType": "struct PoolKey",
"name": "key",
"type": "tuple"
},
{
"internalType": "uint160",
"name": "sqrtPriceX96",
"type": "uint160"
},
{
"internalType": "bytes",
"name": "hookData",
"type": "bytes"
}
],
"name": "initialize",
"outputs": [
{
"internalType": "int24",
"name": "tick",
"type": "int24"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "lock",
"outputs": [
{
"internalType": "bytes",
"name": "result",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "Currency",
"name": "currency",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "Currency",
"name": "currency0",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency1",
"type": "address"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
},
{
"internalType": "contract IHooks",
"name": "hooks",
"type": "address"
}
],
"internalType": "struct PoolKey",
"name": "key",
"type": "tuple"
},
{
"components": [
{
"internalType": "int24",
"name": "tickLower",
"type": "int24"
},
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
},
{
"internalType": "int256",
"name": "liquidityDelta",
"type": "int256"
}
],
"internalType": "struct IPoolManager.ModifyPositionParams",
"name": "params",
"type": "tuple"
},
{
"internalType": "bytes",
"name": "hookData",
"type": "bytes"
}
],
"name": "modifyPosition",
"outputs": [
{
"internalType": "BalanceDelta",
"name": "delta",
"type": "int256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
}
],
"name": "pools",
"outputs": [
{
"components": [
{
"internalType": "uint160",
"name": "sqrtPriceX96",
"type": "uint160"
},
{
"internalType": "int24",
"name": "tick",
"type": "int24"
},
{
"internalType": "uint24",
"name": "protocolFees",
"type": "uint24"
},
{
"internalType": "uint24",
"name": "hookFees",
"type": "uint24"
}
],
"internalType": "struct Pool.Slot0",
"name": "slot0",
"type": "tuple"
},
{
"internalType": "uint256",
"name": "feeGrowthGlobal0X128",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "feeGrowthGlobal1X128",
"type": "uint256"
},
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "protocolFeeController",
"outputs": [
{
"internalType": "contract IProtocolFeeController",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "Currency",
"name": "currency",
"type": "address"
}
],
"name": "protocolFeesAccrued",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "Currency",
"name": "currency",
"type": "address"
}
],
"name": "reservesOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "safeBatchTransferFrom",
"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": "uint256",
"name": "amount",
"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": [
{
"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"
}
],
"name": "setHookFees",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"name": "setOwner",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IProtocolFeeController",
"name": "controller",
"type": "address"
}
],
"name": "setProtocolFeeController",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "Currency",
"name": "currency0",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency1",
"type": "address"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
},
{
"internalType": "contract IHooks",
"name": "hooks",
"type": "address"
}
],
"internalType": "struct PoolKey",
"name": "key",
"type": "tuple"
}
],
"name": "setProtocolFees",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "Currency",
"name": "currency",
"type": "address"
}
],
"name": "settle",
"outputs": [
{
"internalType": "uint256",
"name": "paid",
"type": "uint256"
}
],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "Currency",
"name": "currency0",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency1",
"type": "address"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
},
{
"internalType": "contract IHooks",
"name": "hooks",
"type": "address"
}
],
"internalType": "struct PoolKey",
"name": "key",
"type": "tuple"
},
{
"components": [
{
"internalType": "bool",
"name": "zeroForOne",
"type": "bool"
},
{
"internalType": "int256",
"name": "amountSpecified",
"type": "int256"
},
{
"internalType": "uint160",
"name": "sqrtPriceLimitX96",
"type": "uint160"
}
],
"internalType": "struct IPoolManager.SwapParams",
"name": "params",
"type": "tuple"
},
{
"internalType": "bytes",
"name": "hookData",
"type": "bytes"
}
],
"name": "swap",
"outputs": [
{
"internalType": "BalanceDelta",
"name": "delta",
"type": "int256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "Currency",
"name": "currency",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"name": "take",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "uri",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": {
"object": "0x60c06040523480156200001157600080fd5b5060405162007546380380620075468339810160408190526200003491620000af565b60408051602081018252600080825280546001600160a01b0319163390811782559251919284929091907fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c908290a36080523060a05262000095816200009d565b50506200023a565b6006620000ab82826200016e565b5050565b600060208284031215620000c257600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620000f457607f821691505b6020821081036200011557634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200016957600081815260208120601f850160051c81016020861015620001445750805b601f850160051c820191505b81811015620001655782815560010162000150565b5050505b505050565b81516001600160401b038111156200018a576200018a620000c9565b620001a2816200019b8454620000df565b846200011b565b602080601f831160018114620001da5760008415620001c15750858301515b600019600386901b1c1916600185901b17855562000165565b600085815260208120601f198616915b828110156200020b57888601518255948401946001909101908401620001ea565b50858210156200022a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a0516172df62000267600039600061260801526000818161294601526129a901526172df6000f3fe6080604052600436106102d45760003560e01c80638161b87411610179578063bc197c81116100d6578063effd18c01161008a578063f242432a11610064578063f242432a14610ab9578063f3cd914c14610ad9578063fa6793d514610af957600080fd5b8063effd18c014610a59578063f02de3b214610a79578063f23a6e6114610a9957600080fd5b8063c815641c116100bb578063c815641c14610938578063d68f4dd1146109f0578063e985e9c514610a1057600080fd5b8063bc197c81146108df578063c6c3bbe61461091857600080fd5b8063a22cb4651161012d578063af440f8211610112578063af440f8214610790578063b4c41939146107b0578063b5217bb4146107e857600080fd5b8063a22cb46514610738578063a54b28311461075857600080fd5b80638da5cb5b1161015e5780638da5cb5b146106a657806393c85a21146106de57806397e8cd4e1461070b57600080fd5b80638161b8741461065f57806384e41c5e1461067f57600080fd5b8063282076cc116102325780634e1273f4116101e6578063695c5bf5116101c0578063695c5bf51461060c5780636a256b291461062c578063815483191461063f57600080fd5b80634e1273f4146105a957806360460f06146105d657806361ae449a146105ec57600080fd5b80632eb2c2d6116102175780632eb2c2d6146104c657806333aa955b146104e657806335fd631a1461058957600080fd5b8063282076cc146104865780632d771389146104a657600080fd5b80630e89341c11610289578063174a94981161026e578063174a9498146104255780631e2eaeaf14610447578063234266d71461046657600080fd5b80630e89341c146103d857806313af40351461040557600080fd5b8063048d9c70116102ba578063048d9c701461034357806307eff0dd1461038e5780630b0d9c09146103b657600080fd5b8062fdd58e146102e057806301ffc9a71461031357600080fd5b366102db57005b600080fd5b3480156102ec57600080fd5b506103006102fb366004615e96565b610b32565b6040519081526020015b60405180910390f35b34801561031f57600080fd5b5061033361032e366004615ed8565b610be0565b604051901515815260200161030a565b34801561034f57600080fd5b5061036361035e366004615f07565b610c30565b6040805182516001600160801b0316815260208084015190820152918101519082015260600161030a565b34801561039a57600080fd5b506103a3600181565b60405160029190910b815260200161030a565b3480156103c257600080fd5b506103d66103d1366004615f56565b610cf1565b005b3480156103e457600080fd5b506103f86103f3366004615f97565b610da3565b60405161030a9190616000565b34801561041157600080fd5b506103d6610420366004616013565b610e37565b34801561043157600080fd5b50600080516020617269833981519152b3610300565b34801561045357600080fd5b50610300610462366004615f97565b5490565b34801561047257600080fd5b5061030061048136600461618d565b610eca565b34801561049257600080fd5b506103d66104a13660046161f7565b6110cd565b3480156104b257600080fd5b506103d66104c1366004616013565b611140565b3480156104d257600080fd5b506103d66104e136600461632c565b6111cc565b3480156104f257600080fd5b50610571610501366004615f07565b6000938452600960209081526040808620815160609690961b6bffffffffffffffffffffffff19168684015260e894851b60348701529290931b60378501528251601a818603018152603a909401835283519381019390932084526006019091529020546001600160801b031690565b6040516001600160801b03909116815260200161030a565b34801561059557600080fd5b506103f86105a43660046163da565b61126e565b3480156105b557600080fd5b506105c96105c43660046163fc565b6112ee565b60405161030a9190616504565b3480156105e257600080fd5b506103a3617fff81565b3480156105f857600080fd5b50610300610607366004616517565b611424565b34801561061857600080fd5b506103a36106273660046165b8565b61180f565b61030061063a366004616013565b611b82565b34801561064b57600080fd5b506103f861065a366004616604565b611c44565b34801561066b57600080fd5b5061030061067a366004615f56565b611d34565b34801561068b57600080fd5b50610694600481565b60405160ff909116815260200161030a565b3480156106b257600080fd5b506000546106c6906001600160a01b031681565b6040516001600160a01b03909116815260200161030a565b3480156106ea57600080fd5b506103006106f9366004616013565b60086020526000908152604090205481565b34801561071757600080fd5b50610300610726366004616013565b60016020526000908152604090205481565b34801561074457600080fd5b506103d6610753366004616656565b611ded565b34801561076457600080fd5b5061030061077336600461668b565b600760209081526000928352604080842090915290825290205481565b34801561079c57600080fd5b506103d66107ab3660046161f7565b611dfc565b3480156107bc57600080fd5b506103006107cb36600461668b565b600260209081526000928352604080842090915290825290205481565b3480156107f457600080fd5b5061087c610803366004615f97565b600960209081526000918252604091829020825160808101845281546001600160a01b0381168252600160a01b8104600290810b9483019490945262ffffff600160b81b8204811695830195909552600160d01b900490931660608401526001810154918101546003909101546001600160801b031684565b6040805185516001600160a01b0316815260208087015160020b908201528582015162ffffff9081169282019290925260609586015190911694810194909452608084019290925260a08301526001600160801b031660c082015260e00161030a565b3480156108eb57600080fd5b506108ff6108fa366004616709565b611e66565b6040516001600160e01b0319909116815260200161030a565b34801561092457600080fd5b506103d6610933366004615f56565b611ef1565b34801561094457600080fd5b506109b8610953366004615f97565b600090815260096020908152604091829020825160808101845290546001600160a01b038116808352600160a01b820460020b93830184905262ffffff600160b81b83048116958401869052600160d01b909204909116606090920182905293919291565b604080516001600160a01b03909516855260029390930b602085015262ffffff9182169284019290925216606082015260800161030a565b3480156109fc57600080fd5b506106c6610a0b366004615f97565b611f7a565b348015610a1c57600080fd5b50610333610a2b36600461668b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610a6557600080fd5b50610300610a74366004615f56565b611fa5565b348015610a8557600080fd5b506003546106c6906001600160a01b031681565b348015610aa557600080fd5b506108ff610ab43660046167c8565b61204a565b348015610ac557600080fd5b506103d6610ad4366004616844565b612089565b348015610ae557600080fd5b50610300610af43660046168ad565b612124565b348015610b0557600080fd5b50610571610b14366004615f97565b6000908152600960205260409020600301546001600160801b031690565b60006001600160a01b038316610bb55760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526004602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b1480610c1157506001600160e01b031982166303a24d0760e21b145b80610bda57506301ffc9a760e01b6001600160e01b0319831614610bda565b610c5d604051806060016040528060006001600160801b0316815260200160008152602001600081525090565b600085815260096020908152604080832081516bffffffffffffffffffffffff1960608a901b168185015260e888811b603483015287901b60378201528251808203601a018152603a9091018352805190840120845260060190915290206040805160608101825282546001600160801b03168152600183015460208201526002909201549082015290505b949350505050565b610cf96125fd565b6000610d13600080516020617269833981519152b3612648565b9050336001600160a01b03821614610d49576040516313d2c13360e21b81526001600160a01b0382166004820152602401610bac565b610d5b84610d568461268c565b6126af565b6001600160a01b03841660009081526008602052604081208054849290610d8390849061694e565b90915550610d9d90506001600160a01b038516848461278d565b50505050565b606060068054610db290616961565b80601f0160208091040260200160405190810160405280929190818152602001828054610dde90616961565b8015610e2b5780601f10610e0057610100808354040283529160200191610e2b565b820191906000526020600020905b815481529060010190602001808311610e0e57829003601f168201915b50505050509050919050565b6000546001600160a01b03163314610e62576040516348f5c3ed60e01b815260040160405180910390fd5b600080546040516001600160a01b03808516939216917fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000610ed46125fd565b6000610eee600080516020617269833981519152b3612648565b9050336001600160a01b03821614610f24576040516313d2c13360e21b81526001600160a01b0382166004820152602401610bac565b60808701517302000000000000000000000000000000000000001615610feb576080870151604051635b54587d60e11b808252916001600160a01b03169063b6a8b0fa90610f809033908c908c908c908c908c906004016169c4565b6020604051808303816000875af1158015610f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc39190616a44565b6001600160e01b03191614610feb57604051631e048e1d60e01b815260040160405180910390fd5b6110008686610ff98a612827565b919061284b565b915061100c878361290d565b6080870151600160981b16156110c357608087015160405163e1b4af6960e01b808252916001600160a01b03169063e1b4af69906110589033908c908c908c908c908c906004016169c4565b6020604051808303816000875af1158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b9190616a44565b6001600160e01b031916146110c357604051631e048e1d60e01b815260040160405180910390fd5b5095945050505050565b60006110d88261292c565b905060006110e583612a3a565b60008181526009602052604090209091506111009083612a6a565b60405162ffffff8316815281907fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9906020015b60405180910390a2505050565b6000546001600160a01b0316331461116b576040516348f5c3ed60e01b815260040160405180910390fd5b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc9060200160405180910390a150565b6001600160a01b0385163314806111e857506111e88533610a2b565b61125a5760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152608401610bac565b6112678585858585612acd565b5050505050565b6060600061127d836020616a61565b67ffffffffffffffff81111561129557611295616030565b6040519080825280601f01601f1916602001820160405280156112bf576020820181803683370190505b50905060005b838110156112e65780850154602060018301028301526001810190506112c5565b509392505050565b606081518351146113675760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610bac565b6000835167ffffffffffffffff81111561138357611383616030565b6040519080825280602002602001820160405280156113ac578160200160208202803683370190505b50905060005b84518110156112e6576113f78582815181106113d0576113d0616a78565b60200260200101518583815181106113ea576113ea616a78565b6020026020010151610b32565b82828151811061140957611409616a78565b602090810291909101015261141d81616a8e565b90506113b2565b600061142e6125fd565b6000611448600080516020617269833981519152b3612648565b9050336001600160a01b0382161461147e576040516313d2c13360e21b81526001600160a01b0382166004820152602401610bac565b6080860151732000000000000000000000000000000000000000161561154357608086015160405163fe9a6f4560e01b808252916001600160a01b03169063fe9a6f45906114d89033908b908b908b908b90600401616aa7565b6020604051808303816000875af11580156114f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151b9190616a44565b6001600160e01b0319161461154357604051631e048e1d60e01b815260040160405180910390fd5b600061154e87612a3a565b905061157b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6115e66040518060a00160405280336001600160a01b03168152602001896000015160020b8152602001896020015160020b81526020016115bf8a60400151612d43565b600f0b815260608b015160020b602091820152600085815260099091526040902090612d59565b90945090506115f5888561290d565b80511561161f57805188516001600160a01b03166000908152600160205260409020805490910190555b60208101511561165357602080820151898201516001600160a01b0316600090815260019092526040909120805490910190555b6040810151156116995760408082015160808a01516001600160a01b039081166000908152600260209081528482208d5190931682529190915291909120805490910190555b6060810151156116de57606081015160808901516001600160a01b039081166000908152600260209081526040808320828e0151909416835292905220805490910190555b608088015173100000000000000000000000000000000000000016156117a55760808801516040516330b7cdef60e01b808252916001600160a01b0316906330b7cdef9061173a9033908d908d908b908e908e90600401616b4b565b6020604051808303816000875af1158015611759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177d9190616a44565b6001600160e01b031916146117a557604051631e048e1d60e01b815260040160405180910390fd5b865160208801516040808a01519051339386937fc54f65a0367b92850ef8e90f7e302da8b0a137ab343132a9b8d0e63e684bf53c936117fc93600293840b81529190920b6020820152604081019190915260600190565b60405180910390a3505050949350505050565b6040840151600090620f4240620fffff9091161061184057604051637e2df70960e11b815260040160405180910390fd5b6060850151617fff60029190910b131561186d57604051635815aee160e11b815260040160405180910390fd5b600160020b856060015160020b121561189957604051630b7f3b4b60e11b815260040160405180910390fd5b845160208601516001600160a01b03908116911611156118cc576040516305a25e7160e11b815260040160405180910390fd5b6118f0856040015186608001516001600160a01b03166132ac90919063ffffffff16565b61191e576080850151604051630732d7b560e51b81526001600160a01b039091166004820152602401610bac565b608085015173800000000000000000000000000000000000000016156119e35760808501516040516301a206c160e51b808252916001600160a01b031690633440d820906119789033908a908a908a908a90600401616bea565b6020604051808303816000875af1158015611997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bb9190616a44565b6001600160e01b031916146119e357604051631e048e1d60e01b815260040160405180910390fd5b60006119ee86612a3a565b905060006119fb8761292c565b90506000611a088861332d565b6000848152600960205260409020909150611a2590888484613400565b60808901519094507340000000000000000000000000000000000000001615611aef57608088015160405163a910f80f60e01b808252916001600160a01b03169063a910f80f90611a849033908d908d908b908e908e90600401616c66565b6020604051808303816000875af1158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac79190616a44565b6001600160e01b03191614611aef57604051631e048e1d60e01b815260040160405180910390fd5b87602001516001600160a01b031688600001516001600160a01b0316847f3fd553db44f207b1f41348cfc4d251860814af9eadc470e8e7895e4d120511f48b604001518c606001518d60800151604051611b6f9392919062ffffff93909316835260029190910b60208301526001600160a01b0316604082015260600190565b60405180910390a4505050949350505050565b6000611b8c6125fd565b6000611ba6600080516020617269833981519152b3612648565b9050336001600160a01b03821614611bdc576040516313d2c13360e21b81526001600160a01b0382166004820152602401610bac565b6001600160a01b03831660008181526008602052604090205490611bff906134e9565b6001600160a01b0385166000908152600860205260409020819055611c2590829061694e565b9250611c3d84611c348561268c565b610d5690616ced565b5050919050565b6060600080516020617269833981519152b3611c608133613568565b6040516355b148ff60e11b8152339063ab6291fe90611c859087908790600401616d1c565b6000604051808303816000875af1158015611ca4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ccc9190810190616d30565b915050600080516020617269833981519152b3608081901c600103611d2457806001600160801b031615611d1357604051635212cba160e01b815260040160405180910390fd5b611d1f816000806135af565b611d2d565b611d2d816135d9565b5092915050565b600080546001600160a01b03163314801590611d5b57506003546001600160a01b03163314155b15611d79576040516348f5c3ed60e01b815260040160405180910390fd5b8115611d855781611d9f565b6001600160a01b0383166000908152600160205260409020545b6001600160a01b038416600090815260016020526040812080549293508392909190611dcc90849061694e565b90915550611de690506001600160a01b038416858361278d565b9392505050565b611df83383836135f6565b5050565b6000611e078261332d565b90506000611e1483612a3a565b6000818152600960205260409020909150611e2f90836136ea565b60405162ffffff8316815281907fc939c5b4f4e3398eb275de825cd913cca3ade8d1f42daa0ffe1d88accd40715890602001611133565b6000333014611e88576040516314fe96b960e21b815260040160405180910390fd5b60005b86811015611edb57611ed3611eb5898984818110611eab57611eab616a78565b9050602002013590565b878784818110611ec757611ec7616a78565b90506020020135613734565b600101611e8b565b5063bc197c8160e01b9998505050505050505050565b611ef96125fd565b6000611f13600080516020617269833981519152b3612648565b9050336001600160a01b03821614611f49576040516313d2c13360e21b81526001600160a01b0382166004820152602401610bac565b611f5684610d568461268c565b610d9d836001600160a01b0386168460405180602001604052806000815250613755565b60007f760a9a962ae3d184e99c0483cf5684fb3170f47116ca4f445c50209da4f4f9068201b3610bda565b6000338215611fb45782611fdb565b6001600160a01b038082166000908152600260209081526040808320938816835292905220545b91506001600160a01b03851615611ff25784611ff4565b805b6001600160a01b03808316600090815260026020908152604080832093891683529290529081208054929750849290919061203090849061694e565b909155506112e690506001600160a01b038516868461278d565b600033301461206c576040516314fe96b960e21b815260040160405180910390fd5b6120768585613734565b5063f23a6e6160e01b9695505050505050565b6001600160a01b0385163314806120a557506120a58533610a2b565b6121175760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f76656400000000000000000000000000000000000000000000006064820152608401610bac565b6112678585858585613861565b600061212e6125fd565b6000612148600080516020617269833981519152b3612648565b9050336001600160a01b0382161461217e576040516313d2c13360e21b81526001600160a01b0382166004820152602401610bac565b608086015173080000000000000000000000000000000000000016156122435760808601516040516315d7892d60e21b808252916001600160a01b03169063575e24b4906121d89033908b908b908b908b90600401616db2565b6020604051808303816000875af11580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b9190616a44565b6001600160e01b0319161461224357604051631e048e1d60e01b815260040160405180910390fd5b60408601516000906280000016156122ff5786608001516001600160a01b0316632ab7a3e233898989896040518663ffffffff1660e01b815260040161228d959493929190616db2565b6020604051808303816000875af11580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d09190616e3e565b9050620f42408162ffffff16106122fa57604051637e2df70960e11b815260040160405180910390fd5b61230b565b506040860151620fffff165b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052819060006123498b612a3a565b90506123b96040518060a001604052808762ffffff1681526020018d6060015160020b81526020018c60000151151581526020018c6020015181526020018c604001516001600160a01b031681525060096000848152602001908152602001600020613a0390919063ffffffff16565b929950909550935091506123cd8b8861290d565b831561240f5783600160008c600001516123eb578d602001516123ee565b8d515b6001600160a01b031681526020810191909152604001600020805490910190555b82156124685760808b01516001600160a01b031660009081526002602052604081208b51859290612444578d60200151612447565b8d515b6001600160a01b031681526020810191909152604001600020805490910190555b60808b015173040000000000000000000000000000000000000016156125545763b47b2fb160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168b608001516001600160a01b031663b47b2fb1338e8e8c8f8f6040518763ffffffff1660e01b81526004016124e996959493929190616e5b565b6020604051808303816000875af1158015612508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252c9190616a44565b6001600160e01b0319161461255457604051631e048e1d60e01b815260040160405180910390fd5b33817f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f6125818a60801c90565b8a60408088015160a089015160608a015192516125e7959493908e90600f96870b81529490950b60208501526001600160a01b039290921660408401526001600160801b0316606083015260020b608082015262ffffff9190911660a082015260c00190565b60405180910390a3505050505050949350505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612646576040516306c4a1c760e11b815260040160405180910390fd5b565b60008060016126578460801c90565b0390507f760a9a962ae3d184e99c0483cf5684fb3170f47116ca4f445c50209da4f4f9066001600160801b03821601b3611de6565b60006f7fffffffffffffffffffffffffffffff8211156126ab57600080fd5b5090565b80600f0b6000036126be575050565b600080516020617269833981519152b360006126d982612648565b6001600160a01b038082166000908152600760209081526040808320938916835292905290812054919250612712600f86900b83616ee7565b905083600082900361273c5761273761272b8660801c90565b869060001984016135af565b61275c565b8260000361275c5761275c6127518660801c90565b8690600184016135af565b506001600160a01b039283166000908152600760209081526040808320989095168252969096529190942055505050565b60006001600160a01b0384166127cc5760008060008085875af19050806127c757604051633d2cec6f60e21b815260040160405180910390fd5b610d9d565b60405163a9059cbb60e01b6000528360045282602452602060006044600080895af13d15601f3d1160016000511416171691506000606052806040525080610d9d57604051633c9fd93960e21b815260040160405180910390fd5b60006009600061283684612a3a565b81526020019081526020016000209050919050565b60038301546000906001600160801b0316810361287b5760405163a74f97ab60e01b815260040160405180910390fd5b6128a36128878461268c565b6128908461268c565b6001600160801b031660809190911b1790565b905082156128d65760038401546128ca908490600160801b906001600160801b03166142d4565b60018501805490910190555b8115611de65760038401546128fb908390600160801b906001600160801b03166142d4565b60028501805490910190559392505050565b815161291d90610d568360801c90565b611df88260200151610d568390565b600354600090819081906001600160a01b031615611c3d577f00000000000000000000000000000000000000000000000000000000000000005a101561298557604051630f724b8160e11b815260040160405180910390fd5b60035460405163d6ec458560e01b81526001600160a01b039091169063d6ec4585907f0000000000000000000000000000000000000000000000000000000000000000906129d7908890600401616f0f565b6020604051808303818786fa93505050508015612a11575060408051601f3d908101601f19168201909252612a0e91810190616e3e565b60015b15612a2857925050610fff600c83901c8116915082165b612a3182614376565b611c3d81614376565b600081604051602001612a4d9190616f0f565b604051602081830303815290604052805190602001209050919050565b81546001600160a01b0316600003612a955760405163486aa30760e01b815260040160405180910390fd5b815462ffffff909116600160b81b027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff909116179055565b8151835114612b445760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610bac565b6001600160a01b038416612ba85760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610bac565b3360005b8451811015612cd5576000858281518110612bc957612bc9616a78565b602002602001015190506000858381518110612be757612be7616a78565b60209081029190910181015160008481526004835260408082206001600160a01b038e168352909352919091205490915081811015612c7b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610bac565b60008381526004602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290612cba908490616f5f565b9250508190555050505080612cce90616a8e565b9050612bac565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612d25929190616f72565b60405180910390a4612d3b8187878787876143f0565b505050505050565b80600f81900b8114612d5457600080fd5b919050565b6000612d866040518060800160405280600081526020016000815260200160008152602001600081525090565b83546001600160a01b0316600003612db15760405163486aa30760e01b815260040160405180910390fd5b612dc383602001518460400151614595565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905281906060860151600f0b15612f4657612e1887876020015188606001516000614631565b6001600160801b031660208301521515815260408601516060870151612e419189916001614631565b6001600160801b031660608084019190915290151560408301528601516000600f9190910b1315612f05576000612e7b876080015161470b565b9050806001600160801b031682602001516001600160801b03161115612ec057602087015160405163b8e3c38560e01b815260029190910b6004820152602401610bac565b806001600160801b031682606001516001600160801b03161115612f0357604080880151905163b8e3c38560e01b815260029190910b6004820152602401610bac565b505b805115612f245760208601516080870151612f249160058a0191614739565b806040015115612f465760408601516080870151612f469160058a0191614739565b612f5987876020015188604001516147d8565b60a0830181905260808301829052606088810151895160208b8101516040808e015181519490961b6bffffffffffffffffffffffff19168484015260e891821b603485015294901b60378301528351601a818403018152603a9092018452815191810191909120600090815260068d0190915291909120612fdb93909261488f565b809350819450505060008660600151600f0b12156130585780511561302757613027878760200151600290810b6000908152600490920160205260408220828155600181018390550155565b80604001511561305857604080870151600290810b600090815260048a016020529182208281556001810183905501555b506060850151600f0b156131fe5760208501518654600291820b600160a01b90910490910b12156130cb576130c4846130bf6130b96130b461309d8a602001516149c1565b6130aa8b604001516149c1565b8b60600151614ce4565b612d43565b60801b90565b614d23565b93506131fe565b60408501518654600291820b600160a01b90910490910b12156131c8578554604086015161313f9186916130bf91613114916130b4916001600160a01b0316906130aa906149c1565b6128906130b46131278b602001516149c1565b8c5460608d01516001600160a01b0390911690614d4d565b935060008560600151600f0b12613172576060850151600387015461316d91906001600160801b0316616f97565b613198565b846060015161318090616ced565b600387015461319891906001600160801b0316616fb7565b6003870180546fffffffffffffffffffffffffffffffff19166001600160801b03929092169190911790556131fe565b6131fb846130bf60006128906130b46131e48b602001516149c1565b6131f18c604001516149c1565b8c60600151614d4d565b93505b60008560600151600f0b12801561322057508554600160d01b9004610fff1615155b156132835761322f8685614d7c565b9250613280846130bf613245866000015161268c565b613252876040015161268c565b61325c9190616fd7565b613269876020015161268c565b613276886060015161268c565b6128909190616fd7565b93505b6132a18461329c6132938561268c565b6128908561268c565b614f68565b935050509250929050565b60006001600160a01b0383161561330457600160981b836001600160a01b03161015806132dd575062800000821615155b806132ec575062400000821615155b806132ff57506220000082161515611de6565b611de6565b62800000821615801561331a5750624000008216155b8015611de6575050622000001615919050565b60808101516000906001600160a01b031615612d545781608001516001600160a01b0316635ae4ce58836040518263ffffffff1660e01b81526004016133739190616f0f565b602060405180830381865afa9250505080156133ac575060408051601f3d908101601f191682019092526133a991810190616e3e565b60015b15612d5457604083015160009062400000166133c95760006133ce565b62fff0005b604085015190915060009062200000166133e95760006133ed565b610fff5b61ffff1691909117919091169392505050565b83546000906001600160a01b03161561342c57604051637983c05160e01b815260040160405180910390fd5b61343584614f95565b604080516080810182526001600160a01b0396909616808752600283900b602088015262ffffff9586169187018290529385166060909601869052865476ffffffffffffffffffffffffffffffffffffffffffffff1916909317600160a01b94821694909402939093177fffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b90920262ffffff60d01b191691909117600160d01b909302929092179092555090565b60006001600160a01b038216613500575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613544573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bda9190617016565b60006135748360801c90565b90507f760a9a962ae3d184e99c0483cf5684fb3170f47116ca4f445c50209da4f4f9066001600160801b038216018281b4610d9d8460018401815b608082901b6001600160801b0382161792506000805160206172698339815191528381b450505050565b60006135e58260801c90565b9050611df8826000198301816135af565b816001600160a01b0316836001600160a01b03160361367d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610bac565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b81546001600160a01b03166000036137155760405163486aa30760e01b815260040160405180910390fd5b815462ffffff909116600160d01b0262ffffff60d01b19909116179055565b613748306001600160a01b038416836152a8565b611df882611c348361268c565b6001600160a01b0384166137b55760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610bac565b336137cf816000876137c688615426565b61126788615426565b60008481526004602090815260408083206001600160a01b038916845290915281208054859290613801908490616f5f565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461126781600087878787615471565b6001600160a01b0384166138c55760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610bac565b336138d58187876137c688615426565b60008481526004602090815260408083206001600160a01b038a1684529091529020548381101561395b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610bac565b60008581526004602090815260408083206001600160a01b038b811685529252808320878503905590881682528120805486929061399a908490616f5f565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46139fa828888888888615471565b50505050505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052819081908460600151600003613a5d5760405163be8b850760e01b815260040160405180910390fd5b6040805160808101825287546001600160a01b038116808352600160a01b820460020b602084015262ffffff600160b81b8304811694840194909452600160d01b909104909216606082015290600003613aca5760405163486aa30760e01b815260040160405180910390fd5b856040015115613b795780600001516001600160a01b031686608001516001600160a01b031610613b285780516080870151604051637c9c6e8f60e01b81526001600160a01b03928316600482015291166024820152604401610bac565b6401000276a36001600160a01b031686608001516001600160a01b031611613b74576080860151604051639e4d7cc760e01b81526001600160a01b039091166004820152602401610bac565b613c28565b80600001516001600160a01b031686608001516001600160a01b031611613bcd5780516080870151604051637c9c6e8f60e01b81526001600160a01b03928316600482015291166024820152604401610bac565b73fffd8963efd1fc6a506488495d951d5263988d266001600160a01b031686608001516001600160a01b031610613c28576080860151604051639e4d7cc760e01b81526001600160a01b039091166004820152602401610bac565b6040805160608101825260038901546001600160801b0316815290870151600091906020820190613c6357604084015160121c603f16613c7a565b604084810151600c1c610fff16613c7a9190617045565b61ffff1681526020018860400151613c9c57606084015160121c603f16613cb5565b6060840151604090600c1c610fff16613cb59190617045565b61ffff16815250905060008088606001511390506040518060c00160405280896060015181526020016000815260200184600001516001600160a01b03168152602001846020015160020b81526020018960400151613d18578a60020154613d1e565b8a600101545b815283516001600160801b03166020918201526040805160e0810182526000808252928101839052908101829052606081018290526080810182905260a0810182905260c08101919091529094505b845115801590613d97575088608001516001600160a01b031685604001516001600160a01b031614155b1561419f576040808601516001600160a01b03168252606086015160208b0151918b0151613dca9260058e01929161556d565b1515604083015260020b60208201819052620d89e7191315613df557620d89e7196020820152613e29565b613e02620d89e719617066565b60020b816020015160020b1315613e2957613e20620d89e719617066565b60020b60208201525b613e3681602001516149c1565b6001600160a01b03166060820152604080860151908a0151613eb99190613e79578a608001516001600160a01b031683606001516001600160a01b031611613e97565b8a608001516001600160a01b031683606001516001600160a01b0316105b613ea5578260600151613eab565b8a608001515b60a088015188518d516156af565b60c085015260a084015260808301526001600160a01b031660408601528115613f1b57613eef8160c001518260800151016158a1565b855103855260a0810151613f02906158a1565b8560200151613f11919061707f565b6020860152613f5e565b613f288160a001516158a1565b855101855260c08101516080820151613f4991613f4491616f5f565b6158a1565b8560200151613f589190616ee7565b60208601525b602083015161ffff1615613f98576000836020015161ffff168260c00151613f86919061709f565b60c08301805182900390529790970196505b604083015161ffff1615613fd2576000836040015161ffff168260c00151613fc0919061709f565b60c08301805182900390529690960195505b60a08501516001600160801b031615614011576140058160c00151600160801b8760a001516001600160801b03166142d4565b60808601805190910190525b80606001516001600160a01b031685604001516001600160a01b03160361416c578060400151156141435760006140eb8b83602001518c6040015161405a578d60010154614060565b88608001515b8d604001516140aa578960800151600292830b600090815260049094016020526040909320600181018054909203909155908101805490920390915554600160801b9004600f0b90565b8e60020154600292830b600090815260049094016020526040909320600181018054909203909155908101805490920390915554600160801b9004600f0b90565b90508960400151156140fb576000035b600081600f0b1261411b57808660a001516141169190616f97565b614133565b61412481616ced565b8660a001516141339190616fb7565b6001600160801b031660a0870152505b886040015161415657806020015161415f565b60018160200151035b60020b6060860152613d6d565b80600001516001600160a01b031685604001516001600160a01b03161461419a5761415f8560400151614f95565b613d6d565b604085015160608601518b5476ffffffffffffffffffffffffffffffffffffffffffffff1916600160a01b62ffffff9092169190910273ffffffffffffffffffffffffffffffffffffffff1916176001600160a01b03909116178a5560a085015183516001600160801b039182169116146142445760a085015160038b0180546fffffffffffffffffffffffffffffffff19166001600160801b039092169190911790555b88604001511561425d57608085015160018b0155614268565b608085015160028b01555b81151589604001511515036142a15761429a61428d86600001518b6060015103612d43565b6128908760200151612d43565b97506142c7565b6142c46142b18660200151612d43565b61289087600001518c6060015103612d43565b97505b5050505092959194509250565b600083830281600019858709828110838203039150508084116142f657600080fd5b8060000361430957508290049050611de6565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b61ffff8116156143ed57600061438d604083617045565b90506103ff600683901c1661ffff8216158015906143af5750600461ffff8316105b806143cc575061ffff8116158015906143cc5750600461ffff8216105b156143ea57604051637e2df70960e11b815260040160405180910390fd5b50505b50565b6001600160a01b0384163b15612d3b5760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061443490899089908890889088906004016170b3565b6020604051808303816000875af192505050801561446f575060408051601f3d908101601f1916820190925261446c91810190616a44565b60015b6145245761447b617105565b806308c379a0036144b4575061448f617121565b8061449a57506144b6565b8060405162461bcd60e51b8152600401610bac9190616000565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610bac565b6001600160e01b0319811663bc197c8160e01b146139fa5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610bac565b8060020b8260020b126145c95760405163c4433ed560e01b8152600283810b600483015282900b6024820152604401610bac565b620d89e719600283900b12156145f85760405163d5e2f7ab60e01b8152600283900b6004820152602401610bac565b614605620d89e719617066565b60020b8160020b1315611df85760405163035aeeff60e31b8152600282900b6004820152602401610bac565b600283900b6000908152600485016020526040812080548291906001600160801b0381169060801c600f87900b84136146735761466e8783616f97565b614686565b61467c87616ced565b6146869083616fb7565b6001600160801b03808216159084168015919091141596509094506000036146d4578854600160a01b9004600290810b9089900b136146d4576001808a0154908401556002808a0154908401555b6000866146ea576146e58883616fd7565b6146f4565b6146f488836171ab565b90508060801b851784555050505094509492505050565b6000621b13d08201600290810b9083900b6001600160801b0302816147325761473261702f565b0492915050565b8060020b8260020b8161474e5761474e61702f565b0760020b1561477e57604051636a6c79f360e11b8152600283810b600483015282900b6024820152604401610bac565b6000806147ac8360020b8560020b816147995761479961702f565b0560020b600881901d9161010090910790565b600191820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600282810b600081815260048601602052604080822085850b835290822087549294859492939192600160a01b909204900b90811215614831578160010154836001015403945081600201548360020154039350614884565b8560020b8160020b1261485d578260010154826001015403945082600201548260020154039350614884565b81600101548360010154896001015403039450816002015483600201548960020154030393505b505050935093915050565b6040805160608101825285546001600160801b0316815260018601546020820152600286015491810191909152600090819081600f87900b81036149005781516001600160801b03166000036148f857604051632bbfae4960e21b815260040160405180910390fd5b508051614935565b600087600f0b1261491d578151614918908890616f97565b614932565b61492687616ced565b82516149329190616fb7565b90505b6149578260200151870383600001516001600160801b0316600160801b6142d4565b935061497b8260400151860383600001516001600160801b0316600160801b6142d4565b925086600f0b6000146149ab5787546fffffffffffffffffffffffffffffffff19166001600160801b0382161788555b5050600186019390935560029094015591929050565b60008060008360020b126149d8578260020b6149e0565b8260020b6000035b9050620d89e8811115614a06576040516333a3bdff60e21b815260040160405180910390fd5b600081600116600003614a1d57600160801b614a2f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615614a63576ffff97272373d413259a46990580e213a0260801c5b6004821615614a82576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614aa1576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614ac0576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614adf576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615614afe576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614b1d576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615614b3d576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615614b5d576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614b7d576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614b9d576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614bbd576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614bdd576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614bfd576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614c1d576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614c3e576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615614c5e576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614c7d576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614c9a576b048a170391f7dc42444e8fa20260801c5b60008460020b1315614cbb578060001981614cb757614cb761702f565b0490505b640100000000810615614ccf576001614cd2565b60005b60ff16602082901c0192505050919050565b60008082600f0b12614d0557614d00613f4485858560016158d0565b610ce9565b614d18613f4485858560000360006158d0565b600003949350505050565b6000611de6614d328360801c90565b614d3c8560801c90565b614d469190616fd7565b8385613276565b60008082600f0b12614d6957614d00613f448585856001615999565b614d18613f448585856000036000615999565b614da76040518060800160405280600081526020016000815260200160008152602001600081525090565b6000614db38360801c90565b6040805160808101825286546001600160a01b0381168252600160a01b810460020b602083015262ffffff600160b81b82048116838501819052600160d01b9092049081166060840181905294955087949293600091610fff16614e179190617045565b9050603f600684901c166000614e326040610fff8616617045565b9050603f600685901c166000600f8a900b128015614e54575060008461ffff16115b15614e805761ffff8416614e678a616ced565b614e7191906171ea565b6001600160801b031660408b01525b600088600f0b128015614e97575060008361ffff16115b15614ec35761ffff8316614eaa89616ced565b614eb491906171ea565b6001600160801b031660608b01525b60008261ffff16118015614edb575060008a60400151115b15614f0c578161ffff168a60400151614ef4919061709f565b808b5260408b018051614f0890839061694e565b9052505b60008161ffff16118015614f24575060008a60600151115b15614f59578061ffff168a60600151614f3d919061709f565b60208b0181905260608b018051614f5590839061694e565b9052505b50505050505050505092915050565b6000611de6614f778360801c90565b614f818560801c90565b614f8b91906171ab565b61289084866171ab565b60006401000276a36001600160a01b0383161080614fd0575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b03831610155b15614fee5760405163015680db60e11b815260040160405180910390fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061508f57607f810383901c9150615099565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461529957886001600160a01b031661527e826149c1565b6001600160a01b03161115615293578161529b565b8061529b565b815b9998505050505050505050565b6001600160a01b03831661530a5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610bac565b3361533a8185600061531b87615426565b61532487615426565b5050604080516020810190915260009052505050565b60008381526004602090815260408083206001600160a01b0388168452909152902054828110156153b95760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610bac565b60008481526004602090815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061546057615460616a78565b602090810291909101015292915050565b6001600160a01b0384163b15612d3b5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906154b59089908990889088908890600401617210565b6020604051808303816000875af19250505080156154f0575060408051601f3d908101601f191682019092526154ed91810190616a44565b60015b6154fc5761447b617105565b6001600160e01b0319811663f23a6e6160e01b146139fa5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610bac565b60008060008460020b8660020b816155875761558761702f565b05905060008660020b1280156155b457508460020b8660020b816155ad576155ad61702f565b0760020b15155b156155be57600019015b831561563257600281900b600881901d600181810b600090815260208b9052604090205461010090930760ff81169190911b8001600019019283168015159550919290918561561457888360ff16860302615627565b8861561e82615a20565b840360ff168603025b9650505050506156a5565b600181810160020b600881901d80830b600090815260208b9052604090205461010090920760ff81169390931b60001901199182168015159550909291908561568857888360ff0360ff1686600101010261569e565b888361569383615ac0565b0360ff168660010101025b9650505050505b5094509492505050565b60008080806001600160a01b03808916908a1610158187128015906157345760006156e88989620f42400362ffffff16620f42406142d4565b905082615701576156fc8c8c8c6001615999565b61570e565b61570e8b8d8c60016158d0565b955085811061571f578a965061572e565b61572b8c8b8386615baa565b96505b5061577e565b8161574b576157468b8b8b60006158d0565b615758565b6157588a8c8b6000615999565b935083886000031061576c5789955061577e565b61577b8b8a8a60000385615bf6565b95505b6001600160a01b038a81169087161482156157e15780801561579d5750815b6157b3576157ae878d8c60016158d0565b6157b5565b855b95508080156157c2575081155b6157d8576157d3878d8c6000615999565b6157da565b845b945061582b565b8080156157eb5750815b615801576157fc8c888c6001615999565b615803565b855b9550808015615810575081155b615826576158218c888c60006158d0565b615828565b845b94505b8115801561583b57508860000385115b15615847578860000394505b81801561586657508a6001600160a01b0316876001600160a01b031614155b15615875578589039350615892565b61588f868962ffffff168a620f42400362ffffff16615c42565b93505b50505095509550955095915050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156126ab57600080fd5b6000836001600160a01b0316856001600160a01b031611156158f0579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b03868603811690871661592c57600080fd5b8361596257866001600160a01b031661594f8383896001600160a01b03166142d4565b8161595c5761595c61702f565b0461598e565b61598e6159798383896001600160a01b0316615c42565b886001600160a01b0316808204910615150190565b979650505050505050565b6000836001600160a01b0316856001600160a01b031611156159b9579293925b816159ed576159e86001600160801b0384166159d58787617248565b6001600160a01b0316600160601b6142d4565b615a17565b615a176001600160801b038416615a048787617248565b6001600160a01b0316600160601b615c42565b95945050505050565b6000808211615a2e57600080fd5b600160801b8210615a4157608091821c91015b680100000000000000008210615a5957604091821c91015b6401000000008210615a6d57602091821c91015b620100008210615a7f57601091821c91015b6101008210615a9057600891821c91015b60108210615aa057600491821c91015b60048210615ab057600291821c91015b60028210612d5457600101919050565b6000808211615ace57600080fd5b5060ff6001600160801b03821615615ae957607f1901615af1565b608082901c91505b67ffffffffffffffff821615615b0a57603f1901615b12565b604082901c91505b63ffffffff821615615b2757601f1901615b2f565b602082901c91505b61ffff821615615b4257600f1901615b4a565b601082901c91505b60ff821615615b5c5760071901615b64565b600882901c91505b600f821615615b765760031901615b7e565b600482901c91505b6003821615615b905760011901615b98565b600282901c91505b6001821615612d545760001901919050565b600080856001600160a01b031611615bc157600080fd5b6000846001600160801b031611615bd757600080fd5b81615be9576159e88585856001615c82565b615a178585856001615d69565b600080856001600160a01b031611615c0d57600080fd5b6000846001600160801b031611615c2357600080fd5b81615c35576159e88585856000615d69565b615a178585856000615c82565b6000615c4f8484846142d4565b905060008280615c6157615c6161702f565b8486091115611de6576000198110615c7857600080fd5b6001019392505050565b60008115615cf45760006001600160a01b03841115615cb857615cb384600160601b876001600160801b03166142d4565b615ccf565b615ccf6001600160801b038616606086901b61709f565b9050615cec615ce7826001600160a01b038916616f5f565b615e6b565b915050610ce9565b60006001600160a01b03841115615d2257615d1d84600160601b876001600160801b0316615c42565b615d3f565b615d3f606085901b6001600160801b038716808204910615150190565b905080866001600160a01b031611615d5657600080fd5b615cec816001600160a01b03881661694e565b600082600003615d7a575083610ce9565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b168215615e1e576001600160a01b03861684810290858281615dc057615dc061702f565b0403615df057818101828110615dee57615de483896001600160a01b031683615c42565b9350505050610ce9565b505b50615cec8185615e096001600160a01b038a168361709f565b615e139190616f5f565b808204910615150190565b6001600160a01b03861684810290858281615e3b57615e3b61702f565b04148015615e4857508082115b615e5157600080fd5b808203615de4615ce7846001600160a01b038b1684615c42565b806001600160a01b0381168114612d5457600080fd5b6001600160a01b03811681146143ed57600080fd5b60008060408385031215615ea957600080fd5b8235615eb481615e81565b946020939093013593505050565b6001600160e01b0319811681146143ed57600080fd5b600060208284031215615eea57600080fd5b8135611de681615ec2565b8035600281900b8114612d5457600080fd5b60008060008060808587031215615f1d57600080fd5b843593506020850135615f2f81615e81565b9250615f3d60408601615ef5565b9150615f4b60608601615ef5565b905092959194509250565b600080600060608486031215615f6b57600080fd5b8335615f7681615e81565b92506020840135615f8681615e81565b929592945050506040919091013590565b600060208284031215615fa957600080fd5b5035919050565b60005b83811015615fcb578181015183820152602001615fb3565b50506000910152565b60008151808452615fec816020860160208601615fb0565b601f01601f19169290920160200192915050565b602081526000611de66020830184615fd4565b60006020828403121561602557600080fd5b8135611de681615e81565b634e487b7160e01b600052604160045260246000fd5b6060810181811067ffffffffffffffff8211171561606657616066616030565b60405250565b601f8201601f1916810167ffffffffffffffff8111828210171561609257616092616030565b6040525050565b62ffffff811681146143ed57600080fd5b600060a082840312156160bc57600080fd5b60405160a0810181811067ffffffffffffffff821117156160df576160df616030565b60405290508082356160f081615e81565b8152602083013561610081615e81565b6020820152604083013561611381616099565b604082015261612460608401615ef5565b6060820152608083013561613781615e81565b6080919091015292915050565b60008083601f84011261615657600080fd5b50813567ffffffffffffffff81111561616e57600080fd5b60208301915083602082850101111561618657600080fd5b9250929050565b600080600080600061010086880312156161a657600080fd5b6161b087876160aa565b945060a0860135935060c0860135925060e086013567ffffffffffffffff8111156161da57600080fd5b6161e688828901616144565b969995985093965092949392505050565b600060a0828403121561620957600080fd5b611de683836160aa565b600067ffffffffffffffff82111561622d5761622d616030565b5060051b60200190565b600082601f83011261624857600080fd5b8135602061625582616213565b604051616262828261606c565b83815260059390931b850182019282810191508684111561628257600080fd5b8286015b8481101561629d5780358352918301918301616286565b509695505050505050565b600067ffffffffffffffff8211156162c2576162c2616030565b50601f01601f191660200190565b600082601f8301126162e157600080fd5b81356162ec816162a8565b6040516162f9828261606c565b82815285602084870101111561630e57600080fd5b82602086016020830137600092810160200192909252509392505050565b600080600080600060a0868803121561634457600080fd5b853561634f81615e81565b9450602086013561635f81615e81565b9350604086013567ffffffffffffffff8082111561637c57600080fd5b61638889838a01616237565b9450606088013591508082111561639e57600080fd5b6163aa89838a01616237565b935060808801359150808211156163c057600080fd5b506163cd888289016162d0565b9150509295509295909350565b600080604083850312156163ed57600080fd5b50508035926020909101359150565b6000806040838503121561640f57600080fd5b823567ffffffffffffffff8082111561642757600080fd5b818501915085601f83011261643b57600080fd5b8135602061644882616213565b604051616455828261606c565b83815260059390931b850182019282810191508984111561647557600080fd5b948201945b8386101561649c57853561648d81615e81565b8252948201949082019061647a565b965050860135925050808211156164b257600080fd5b506164bf85828601616237565b9150509250929050565b600081518084526020808501945080840160005b838110156164f9578151875295820195908201906001016164dd565b509495945050505050565b602081526000611de660208301846164c9565b60008060008084860361012081121561652f57600080fd5b61653987876160aa565b94506060609f198201121561654d57600080fd5b5060405161655a81616046565b61656660a08701615ef5565b815261657460c08701615ef5565b602082015260e08601356040820152925061010085013567ffffffffffffffff8111156165a057600080fd5b6165ac87828801616144565b95989497509550505050565b60008060008060e085870312156165ce57600080fd5b6165d886866160aa565b935060a08501356165e881615e81565b925060c085013567ffffffffffffffff8111156165a057600080fd5b6000806020838503121561661757600080fd5b823567ffffffffffffffff81111561662e57600080fd5b61663a85828601616144565b90969095509350505050565b80358015158114612d5457600080fd5b6000806040838503121561666957600080fd5b823561667481615e81565b915061668260208401616646565b90509250929050565b6000806040838503121561669e57600080fd5b82356166a981615e81565b915060208301356166b981615e81565b809150509250929050565b60008083601f8401126166d657600080fd5b50813567ffffffffffffffff8111156166ee57600080fd5b6020830191508360208260051b850101111561618657600080fd5b60008060008060008060008060a0898b03121561672557600080fd5b883561673081615e81565b9750602089013561674081615e81565b9650604089013567ffffffffffffffff8082111561675d57600080fd5b6167698c838d016166c4565b909850965060608b013591508082111561678257600080fd5b61678e8c838d016166c4565b909650945060808b01359150808211156167a757600080fd5b506167b48b828c01616144565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156167e157600080fd5b86356167ec81615e81565b955060208701356167fc81615e81565b94506040870135935060608701359250608087013567ffffffffffffffff81111561682657600080fd5b61683289828a01616144565b979a9699509497509295939492505050565b600080600080600060a0868803121561685c57600080fd5b853561686781615e81565b9450602086013561687781615e81565b93506040860135925060608601359150608086013567ffffffffffffffff8111156168a157600080fd5b6163cd888289016162d0565b6000806000808486036101208112156168c557600080fd5b6168cf87876160aa565b94506060609f19820112156168e357600080fd5b506040516168f081616046565b6168fc60a08701616646565b815260c0860135602082015260e086013561691681615e81565b6040820152925061010085013567ffffffffffffffff8111156165a057600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610bda57610bda616938565b600181811c9082168061697557607f821691505b60208210810361699557634e487b7160e01b600052602260045260246000fd5b50919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006101206001600160a01b0389168352616a2460208401896001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b8660c08401528560e08401528061010084015261529b818401858761699b565b600060208284031215616a5657600080fd5b8151611de681615ec2565b8082028115828204841417610bda57610bda616938565b634e487b7160e01b600052603260045260246000fd5b600060018201616aa057616aa0616938565b5060010190565b60006101406001600160a01b0388168352616b0760208401886001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b8551600290810b60c08501526020870151900b60e084015260408601516101008401525b80610120840152616b3f818401858761699b565b98975050505050505050565b60006101606001600160a01b0389168352616bab60208401896001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b8651600290810b60c08501526020880151900b60e084015260408701516101008401525b856101208401528061014084015261529b818401858761699b565b60006101006001600160a01b038089168452616c4b60208501896001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b861660c084015260e08301819052616b3f818401858761699b565b60006101206001600160a01b03808a168452616cc7602085018a6001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b80881660c0850152508560020b60e08401528061010084015261529b818401858761699b565b600081600f0b6f7fffffffffffffffffffffffffffffff198103616d1357616d13616938565b60000392915050565b602081526000610ce960208301848661699b565b600060208284031215616d4257600080fd5b815167ffffffffffffffff811115616d5957600080fd5b8201601f81018413616d6a57600080fd5b8051616d75816162a8565b604051616d82828261606c565b828152866020848601011115616d9757600080fd5b616da8836020830160208701615fb0565b9695505050505050565b60006101406001600160a01b0388168352616e1260208401886001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b8551151560c0840152602086015160e084015260408601516001600160a01b0316610100840152616b2b565b600060208284031215616e5057600080fd5b8151611de681616099565b60006101606001600160a01b0389168352616ebb60208401896001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b8651151560c0840152602087015160e084015260408701516001600160a01b0316610100840152616bcf565b8082018281126000831280158216821582161715616f0757616f07616938565b505092915050565b60a08101610bda82846001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b80820180821115610bda57610bda616938565b604081526000616f8560408301856164c9565b8281036020840152615a1781856164c9565b6001600160801b03818116838216019080821115611d2d57611d2d616938565b6001600160801b03828116828216039080821115611d2d57611d2d616938565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81136f7fffffffffffffffffffffffffffffff1982121715610bda57610bda616938565b60006020828403121561702857600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600061ffff8084168061705a5761705a61702f565b92169190910692915050565b60008160020b627fffff198103616d1357616d13616938565b8181036000831280158383131683831282161715611d2d57611d2d616938565b6000826170ae576170ae61702f565b500490565b60006001600160a01b03808816835280871660208401525060a060408301526170df60a08301866164c9565b82810360608401526170f181866164c9565b90508281036080840152616b3f8185615fd4565b600060033d111561711e5760046000803e5060005160e01c5b90565b600060443d101561712f5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561715f57505050505090565b82850191508151818111156171775750505050505090565b843d87010160208285010111156171915750505050505090565b6171a06020828601018761606c565b509095945050505050565b600f82810b9082900b036f7fffffffffffffffffffffffffffffff1981126f7fffffffffffffffffffffffffffffff82131715610bda57610bda616938565b60006001600160801b03808416806172045761720461702f565b92169190910492915050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261598e60a0830184615fd4565b6001600160a01b03828116828216039080821115611d2d57611d2d61693856fe42429cc76d46bf08df26d19473353195d5f3713a3c92736054a3ec1c5bee41aaa26469706673582212205c20cec6ba4eb6107872ed05d27a817ea0b6ac0cb001a2082ed769c5abbb0eee64736f6c637823302e382e32322d63692e323032332e382e31332b636f6d6d69742e64376165346439340054",
"sourceMap": "1299:14499:3:-:0;;;2218:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1092:62:75;;;;;;;;-1:-1:-1;1092:62:75;;;573:18:2;;-1:-1:-1;;;;;;573:18:2;581:10;573:18;;;;;606:36;;1092:62:75;;2263:18:3;;581:10:2;;-1:-1:-1;606:36:2;;-1:-1:-1;;606:36:2;1016:40:0;;629:4:1;610:24;;1134:13:75;1142:4;1134:7;:13::i;:::-;1092:62;2218:79:3;1299:14499;;7936:86:75;8002:4;:13;8009:6;8002:4;:13;:::i;:::-;;7936:86;:::o;14:184:107:-;84:6;137:2;125:9;116:7;112:23;108:32;105:52;;;153:1;150;143:12;105:52;-1:-1:-1;176:16:107;;14:184;-1:-1:-1;14:184:107:o;203:127::-;264:10;259:3;255:20;252:1;245:31;295:4;292:1;285:15;319:4;316:1;309:15;335:380;414:1;410:12;;;;457;;;478:61;;532:4;524:6;520:17;510:27;;478:61;585:2;577:6;574:14;554:18;551:38;548:161;;631:10;626:3;622:20;619:1;612:31;666:4;663:1;656:15;694:4;691:1;684:15;548:161;;335:380;;;:::o;846:545::-;948:2;943:3;940:11;937:448;;;984:1;1009:5;1005:2;998:17;1054:4;1050:2;1040:19;1124:2;1112:10;1108:19;1105:1;1101:27;1095:4;1091:38;1160:4;1148:10;1145:20;1142:47;;;-1:-1:-1;1183:4:107;1142:47;1238:2;1233:3;1229:12;1226:1;1222:20;1216:4;1212:31;1202:41;;1293:82;1311:2;1304:5;1301:13;1293:82;;;1356:17;;;1337:1;1326:13;1293:82;;;1297:3;;;937:448;846:545;;;:::o;1567:1352::-;1687:10;;-1:-1:-1;;;;;1709:30:107;;1706:56;;;1742:18;;:::i;:::-;1771:97;1861:6;1821:38;1853:4;1847:11;1821:38;:::i;:::-;1815:4;1771:97;:::i;:::-;1923:4;;1987:2;1976:14;;2004:1;1999:663;;;;2706:1;2723:6;2720:89;;;-1:-1:-1;2775:19:107;;;2769:26;2720:89;-1:-1:-1;;1524:1:107;1520:11;;;1516:24;1512:29;1502:40;1548:1;1544:11;;;1499:57;2822:81;;1969:944;;1999:663;793:1;786:14;;;830:4;817:18;;-1:-1:-1;;2035:20:107;;;2153:236;2167:7;2164:1;2161:14;2153:236;;;2256:19;;;2250:26;2235:42;;2348:27;;;;2316:1;2304:14;;;;2183:19;;2153:236;;;2157:3;2417:6;2408:7;2405:19;2402:201;;;2478:19;;;2472:26;-1:-1:-1;;2561:1:107;2557:14;;;2573:3;2553:24;2549:37;2545:42;2530:58;2515:74;;2402:201;-1:-1:-1;;;;;2649:1:107;2633:14;;;2629:22;2616:36;;-1:-1:-1;1567:1352:107:o;:::-;1299:14499:3;;;;;;;;;;;;;;;;;;;;;;;",
"linkReferences": {}
},
"deployedBytecode": {
"object": "0x6080604052600436106102d45760003560e01c80638161b87411610179578063bc197c81116100d6578063effd18c01161008a578063f242432a11610064578063f242432a14610ab9578063f3cd914c14610ad9578063fa6793d514610af957600080fd5b8063effd18c014610a59578063f02de3b214610a79578063f23a6e6114610a9957600080fd5b8063c815641c116100bb578063c815641c14610938578063d68f4dd1146109f0578063e985e9c514610a1057600080fd5b8063bc197c81146108df578063c6c3bbe61461091857600080fd5b8063a22cb4651161012d578063af440f8211610112578063af440f8214610790578063b4c41939146107b0578063b5217bb4146107e857600080fd5b8063a22cb46514610738578063a54b28311461075857600080fd5b80638da5cb5b1161015e5780638da5cb5b146106a657806393c85a21146106de57806397e8cd4e1461070b57600080fd5b80638161b8741461065f57806384e41c5e1461067f57600080fd5b8063282076cc116102325780634e1273f4116101e6578063695c5bf5116101c0578063695c5bf51461060c5780636a256b291461062c578063815483191461063f57600080fd5b80634e1273f4146105a957806360460f06146105d657806361ae449a146105ec57600080fd5b80632eb2c2d6116102175780632eb2c2d6146104c657806333aa955b146104e657806335fd631a1461058957600080fd5b8063282076cc146104865780632d771389146104a657600080fd5b80630e89341c11610289578063174a94981161026e578063174a9498146104255780631e2eaeaf14610447578063234266d71461046657600080fd5b80630e89341c146103d857806313af40351461040557600080fd5b8063048d9c70116102ba578063048d9c701461034357806307eff0dd1461038e5780630b0d9c09146103b657600080fd5b8062fdd58e146102e057806301ffc9a71461031357600080fd5b366102db57005b600080fd5b3480156102ec57600080fd5b506103006102fb366004615e96565b610b32565b6040519081526020015b60405180910390f35b34801561031f57600080fd5b5061033361032e366004615ed8565b610be0565b604051901515815260200161030a565b34801561034f57600080fd5b5061036361035e366004615f07565b610c30565b6040805182516001600160801b0316815260208084015190820152918101519082015260600161030a565b34801561039a57600080fd5b506103a3600181565b60405160029190910b815260200161030a565b3480156103c257600080fd5b506103d66103d1366004615f56565b610cf1565b005b3480156103e457600080fd5b506103f86103f3366004615f97565b610da3565b60405161030a9190616000565b34801561041157600080fd5b506103d6610420366004616013565b610e37565b34801561043157600080fd5b50600080516020617269833981519152b3610300565b34801561045357600080fd5b50610300610462366004615f97565b5490565b34801561047257600080fd5b5061030061048136600461618d565b610eca565b34801561049257600080fd5b506103d66104a13660046161f7565b6110cd565b3480156104b257600080fd5b506103d66104c1366004616013565b611140565b3480156104d257600080fd5b506103d66104e136600461632c565b6111cc565b3480156104f257600080fd5b50610571610501366004615f07565b6000938452600960209081526040808620815160609690961b6bffffffffffffffffffffffff19168684015260e894851b60348701529290931b60378501528251601a818603018152603a909401835283519381019390932084526006019091529020546001600160801b031690565b6040516001600160801b03909116815260200161030a565b34801561059557600080fd5b506103f86105a43660046163da565b61126e565b3480156105b557600080fd5b506105c96105c43660046163fc565b6112ee565b60405161030a9190616504565b3480156105e257600080fd5b506103a3617fff81565b3480156105f857600080fd5b50610300610607366004616517565b611424565b34801561061857600080fd5b506103a36106273660046165b8565b61180f565b61030061063a366004616013565b611b82565b34801561064b57600080fd5b506103f861065a366004616604565b611c44565b34801561066b57600080fd5b5061030061067a366004615f56565b611d34565b34801561068b57600080fd5b50610694600481565b60405160ff909116815260200161030a565b3480156106b257600080fd5b506000546106c6906001600160a01b031681565b6040516001600160a01b03909116815260200161030a565b3480156106ea57600080fd5b506103006106f9366004616013565b60086020526000908152604090205481565b34801561071757600080fd5b50610300610726366004616013565b60016020526000908152604090205481565b34801561074457600080fd5b506103d6610753366004616656565b611ded565b34801561076457600080fd5b5061030061077336600461668b565b600760209081526000928352604080842090915290825290205481565b34801561079c57600080fd5b506103d66107ab3660046161f7565b611dfc565b3480156107bc57600080fd5b506103006107cb36600461668b565b600260209081526000928352604080842090915290825290205481565b3480156107f457600080fd5b5061087c610803366004615f97565b600960209081526000918252604091829020825160808101845281546001600160a01b0381168252600160a01b8104600290810b9483019490945262ffffff600160b81b8204811695830195909552600160d01b900490931660608401526001810154918101546003909101546001600160801b031684565b6040805185516001600160a01b0316815260208087015160020b908201528582015162ffffff9081169282019290925260609586015190911694810194909452608084019290925260a08301526001600160801b031660c082015260e00161030a565b3480156108eb57600080fd5b506108ff6108fa366004616709565b611e66565b6040516001600160e01b0319909116815260200161030a565b34801561092457600080fd5b506103d6610933366004615f56565b611ef1565b34801561094457600080fd5b506109b8610953366004615f97565b600090815260096020908152604091829020825160808101845290546001600160a01b038116808352600160a01b820460020b93830184905262ffffff600160b81b83048116958401869052600160d01b909204909116606090920182905293919291565b604080516001600160a01b03909516855260029390930b602085015262ffffff9182169284019290925216606082015260800161030a565b3480156109fc57600080fd5b506106c6610a0b366004615f97565b611f7a565b348015610a1c57600080fd5b50610333610a2b36600461668b565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b348015610a6557600080fd5b50610300610a74366004615f56565b611fa5565b348015610a8557600080fd5b506003546106c6906001600160a01b031681565b348015610aa557600080fd5b506108ff610ab43660046167c8565b61204a565b348015610ac557600080fd5b506103d6610ad4366004616844565b612089565b348015610ae557600080fd5b50610300610af43660046168ad565b612124565b348015610b0557600080fd5b50610571610b14366004615f97565b6000908152600960205260409020600301546001600160801b031690565b60006001600160a01b038316610bb55760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201527f65726f206164647265737300000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526004602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216636cdb3d1360e11b1480610c1157506001600160e01b031982166303a24d0760e21b145b80610bda57506301ffc9a760e01b6001600160e01b0319831614610bda565b610c5d604051806060016040528060006001600160801b0316815260200160008152602001600081525090565b600085815260096020908152604080832081516bffffffffffffffffffffffff1960608a901b168185015260e888811b603483015287901b60378201528251808203601a018152603a9091018352805190840120845260060190915290206040805160608101825282546001600160801b03168152600183015460208201526002909201549082015290505b949350505050565b610cf96125fd565b6000610d13600080516020617269833981519152b3612648565b9050336001600160a01b03821614610d49576040516313d2c13360e21b81526001600160a01b0382166004820152602401610bac565b610d5b84610d568461268c565b6126af565b6001600160a01b03841660009081526008602052604081208054849290610d8390849061694e565b90915550610d9d90506001600160a01b038516848461278d565b50505050565b606060068054610db290616961565b80601f0160208091040260200160405190810160405280929190818152602001828054610dde90616961565b8015610e2b5780601f10610e0057610100808354040283529160200191610e2b565b820191906000526020600020905b815481529060010190602001808311610e0e57829003601f168201915b50505050509050919050565b6000546001600160a01b03163314610e62576040516348f5c3ed60e01b815260040160405180910390fd5b600080546040516001600160a01b03808516939216917fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c91a36000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6000610ed46125fd565b6000610eee600080516020617269833981519152b3612648565b9050336001600160a01b03821614610f24576040516313d2c13360e21b81526001600160a01b0382166004820152602401610bac565b60808701517302000000000000000000000000000000000000001615610feb576080870151604051635b54587d60e11b808252916001600160a01b03169063b6a8b0fa90610f809033908c908c908c908c908c906004016169c4565b6020604051808303816000875af1158015610f9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc39190616a44565b6001600160e01b03191614610feb57604051631e048e1d60e01b815260040160405180910390fd5b6110008686610ff98a612827565b919061284b565b915061100c878361290d565b6080870151600160981b16156110c357608087015160405163e1b4af6960e01b808252916001600160a01b03169063e1b4af69906110589033908c908c908c908c908c906004016169c4565b6020604051808303816000875af1158015611077573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061109b9190616a44565b6001600160e01b031916146110c357604051631e048e1d60e01b815260040160405180910390fd5b5095945050505050565b60006110d88261292c565b905060006110e583612a3a565b60008181526009602052604090209091506111009083612a6a565b60405162ffffff8316815281907fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9906020015b60405180910390a2505050565b6000546001600160a01b0316331461116b576040516348f5c3ed60e01b815260040160405180910390fd5b6003805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040519081527fb4bd8ef53df690b9943d3318996006dbb82a25f54719d8c8035b516a2a5b8acc9060200160405180910390a150565b6001600160a01b0385163314806111e857506111e88533610a2b565b61125a5760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f742060448201527f6f776e6572206e6f7220617070726f76656400000000000000000000000000006064820152608401610bac565b6112678585858585612acd565b5050505050565b6060600061127d836020616a61565b67ffffffffffffffff81111561129557611295616030565b6040519080825280601f01601f1916602001820160405280156112bf576020820181803683370190505b50905060005b838110156112e65780850154602060018301028301526001810190506112c5565b509392505050565b606081518351146113675760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610bac565b6000835167ffffffffffffffff81111561138357611383616030565b6040519080825280602002602001820160405280156113ac578160200160208202803683370190505b50905060005b84518110156112e6576113f78582815181106113d0576113d0616a78565b60200260200101518583815181106113ea576113ea616a78565b6020026020010151610b32565b82828151811061140957611409616a78565b602090810291909101015261141d81616a8e565b90506113b2565b600061142e6125fd565b6000611448600080516020617269833981519152b3612648565b9050336001600160a01b0382161461147e576040516313d2c13360e21b81526001600160a01b0382166004820152602401610bac565b6080860151732000000000000000000000000000000000000000161561154357608086015160405163fe9a6f4560e01b808252916001600160a01b03169063fe9a6f45906114d89033908b908b908b908b90600401616aa7565b6020604051808303816000875af11580156114f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061151b9190616a44565b6001600160e01b0319161461154357604051631e048e1d60e01b815260040160405180910390fd5b600061154e87612a3a565b905061157b6040518060800160405280600081526020016000815260200160008152602001600081525090565b6115e66040518060a00160405280336001600160a01b03168152602001896000015160020b8152602001896020015160020b81526020016115bf8a60400151612d43565b600f0b815260608b015160020b602091820152600085815260099091526040902090612d59565b90945090506115f5888561290d565b80511561161f57805188516001600160a01b03166000908152600160205260409020805490910190555b60208101511561165357602080820151898201516001600160a01b0316600090815260019092526040909120805490910190555b6040810151156116995760408082015160808a01516001600160a01b039081166000908152600260209081528482208d5190931682529190915291909120805490910190555b6060810151156116de57606081015160808901516001600160a01b039081166000908152600260209081526040808320828e0151909416835292905220805490910190555b608088015173100000000000000000000000000000000000000016156117a55760808801516040516330b7cdef60e01b808252916001600160a01b0316906330b7cdef9061173a9033908d908d908b908e908e90600401616b4b565b6020604051808303816000875af1158015611759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061177d9190616a44565b6001600160e01b031916146117a557604051631e048e1d60e01b815260040160405180910390fd5b865160208801516040808a01519051339386937fc54f65a0367b92850ef8e90f7e302da8b0a137ab343132a9b8d0e63e684bf53c936117fc93600293840b81529190920b6020820152604081019190915260600190565b60405180910390a3505050949350505050565b6040840151600090620f4240620fffff9091161061184057604051637e2df70960e11b815260040160405180910390fd5b6060850151617fff60029190910b131561186d57604051635815aee160e11b815260040160405180910390fd5b600160020b856060015160020b121561189957604051630b7f3b4b60e11b815260040160405180910390fd5b845160208601516001600160a01b03908116911611156118cc576040516305a25e7160e11b815260040160405180910390fd5b6118f0856040015186608001516001600160a01b03166132ac90919063ffffffff16565b61191e576080850151604051630732d7b560e51b81526001600160a01b039091166004820152602401610bac565b608085015173800000000000000000000000000000000000000016156119e35760808501516040516301a206c160e51b808252916001600160a01b031690633440d820906119789033908a908a908a908a90600401616bea565b6020604051808303816000875af1158015611997573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119bb9190616a44565b6001600160e01b031916146119e357604051631e048e1d60e01b815260040160405180910390fd5b60006119ee86612a3a565b905060006119fb8761292c565b90506000611a088861332d565b6000848152600960205260409020909150611a2590888484613400565b60808901519094507340000000000000000000000000000000000000001615611aef57608088015160405163a910f80f60e01b808252916001600160a01b03169063a910f80f90611a849033908d908d908b908e908e90600401616c66565b6020604051808303816000875af1158015611aa3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ac79190616a44565b6001600160e01b03191614611aef57604051631e048e1d60e01b815260040160405180910390fd5b87602001516001600160a01b031688600001516001600160a01b0316847f3fd553db44f207b1f41348cfc4d251860814af9eadc470e8e7895e4d120511f48b604001518c606001518d60800151604051611b6f9392919062ffffff93909316835260029190910b60208301526001600160a01b0316604082015260600190565b60405180910390a4505050949350505050565b6000611b8c6125fd565b6000611ba6600080516020617269833981519152b3612648565b9050336001600160a01b03821614611bdc576040516313d2c13360e21b81526001600160a01b0382166004820152602401610bac565b6001600160a01b03831660008181526008602052604090205490611bff906134e9565b6001600160a01b0385166000908152600860205260409020819055611c2590829061694e565b9250611c3d84611c348561268c565b610d5690616ced565b5050919050565b6060600080516020617269833981519152b3611c608133613568565b6040516355b148ff60e11b8152339063ab6291fe90611c859087908790600401616d1c565b6000604051808303816000875af1158015611ca4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ccc9190810190616d30565b915050600080516020617269833981519152b3608081901c600103611d2457806001600160801b031615611d1357604051635212cba160e01b815260040160405180910390fd5b611d1f816000806135af565b611d2d565b611d2d816135d9565b5092915050565b600080546001600160a01b03163314801590611d5b57506003546001600160a01b03163314155b15611d79576040516348f5c3ed60e01b815260040160405180910390fd5b8115611d855781611d9f565b6001600160a01b0383166000908152600160205260409020545b6001600160a01b038416600090815260016020526040812080549293508392909190611dcc90849061694e565b90915550611de690506001600160a01b038416858361278d565b9392505050565b611df83383836135f6565b5050565b6000611e078261332d565b90506000611e1483612a3a565b6000818152600960205260409020909150611e2f90836136ea565b60405162ffffff8316815281907fc939c5b4f4e3398eb275de825cd913cca3ade8d1f42daa0ffe1d88accd40715890602001611133565b6000333014611e88576040516314fe96b960e21b815260040160405180910390fd5b60005b86811015611edb57611ed3611eb5898984818110611eab57611eab616a78565b9050602002013590565b878784818110611ec757611ec7616a78565b90506020020135613734565b600101611e8b565b5063bc197c8160e01b9998505050505050505050565b611ef96125fd565b6000611f13600080516020617269833981519152b3612648565b9050336001600160a01b03821614611f49576040516313d2c13360e21b81526001600160a01b0382166004820152602401610bac565b611f5684610d568461268c565b610d9d836001600160a01b0386168460405180602001604052806000815250613755565b60007f760a9a962ae3d184e99c0483cf5684fb3170f47116ca4f445c50209da4f4f9068201b3610bda565b6000338215611fb45782611fdb565b6001600160a01b038082166000908152600260209081526040808320938816835292905220545b91506001600160a01b03851615611ff25784611ff4565b805b6001600160a01b03808316600090815260026020908152604080832093891683529290529081208054929750849290919061203090849061694e565b909155506112e690506001600160a01b038516868461278d565b600033301461206c576040516314fe96b960e21b815260040160405180910390fd5b6120768585613734565b5063f23a6e6160e01b9695505050505050565b6001600160a01b0385163314806120a557506120a58533610a2b565b6121175760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201527f20617070726f76656400000000000000000000000000000000000000000000006064820152608401610bac565b6112678585858585613861565b600061212e6125fd565b6000612148600080516020617269833981519152b3612648565b9050336001600160a01b0382161461217e576040516313d2c13360e21b81526001600160a01b0382166004820152602401610bac565b608086015173080000000000000000000000000000000000000016156122435760808601516040516315d7892d60e21b808252916001600160a01b03169063575e24b4906121d89033908b908b908b908b90600401616db2565b6020604051808303816000875af11580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b9190616a44565b6001600160e01b0319161461224357604051631e048e1d60e01b815260040160405180910390fd5b60408601516000906280000016156122ff5786608001516001600160a01b0316632ab7a3e233898989896040518663ffffffff1660e01b815260040161228d959493929190616db2565b6020604051808303816000875af11580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d09190616e3e565b9050620f42408162ffffff16106122fa57604051637e2df70960e11b815260040160405180910390fd5b61230b565b506040860151620fffff165b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052819060006123498b612a3a565b90506123b96040518060a001604052808762ffffff1681526020018d6060015160020b81526020018c60000151151581526020018c6020015181526020018c604001516001600160a01b031681525060096000848152602001908152602001600020613a0390919063ffffffff16565b929950909550935091506123cd8b8861290d565b831561240f5783600160008c600001516123eb578d602001516123ee565b8d515b6001600160a01b031681526020810191909152604001600020805490910190555b82156124685760808b01516001600160a01b031660009081526002602052604081208b51859290612444578d60200151612447565b8d515b6001600160a01b031681526020810191909152604001600020805490910190555b60808b015173040000000000000000000000000000000000000016156125545763b47b2fb160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168b608001516001600160a01b031663b47b2fb1338e8e8c8f8f6040518763ffffffff1660e01b81526004016124e996959493929190616e5b565b6020604051808303816000875af1158015612508573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061252c9190616a44565b6001600160e01b0319161461255457604051631e048e1d60e01b815260040160405180910390fd5b33817f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f6125818a60801c90565b8a60408088015160a089015160608a015192516125e7959493908e90600f96870b81529490950b60208501526001600160a01b039290921660408401526001600160801b0316606083015260020b608082015262ffffff9190911660a082015260c00190565b60405180910390a3505050505050949350505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614612646576040516306c4a1c760e11b815260040160405180910390fd5b565b60008060016126578460801c90565b0390507f760a9a962ae3d184e99c0483cf5684fb3170f47116ca4f445c50209da4f4f9066001600160801b03821601b3611de6565b60006f7fffffffffffffffffffffffffffffff8211156126ab57600080fd5b5090565b80600f0b6000036126be575050565b600080516020617269833981519152b360006126d982612648565b6001600160a01b038082166000908152600760209081526040808320938916835292905290812054919250612712600f86900b83616ee7565b905083600082900361273c5761273761272b8660801c90565b869060001984016135af565b61275c565b8260000361275c5761275c6127518660801c90565b8690600184016135af565b506001600160a01b039283166000908152600760209081526040808320989095168252969096529190942055505050565b60006001600160a01b0384166127cc5760008060008085875af19050806127c757604051633d2cec6f60e21b815260040160405180910390fd5b610d9d565b60405163a9059cbb60e01b6000528360045282602452602060006044600080895af13d15601f3d1160016000511416171691506000606052806040525080610d9d57604051633c9fd93960e21b815260040160405180910390fd5b60006009600061283684612a3a565b81526020019081526020016000209050919050565b60038301546000906001600160801b0316810361287b5760405163a74f97ab60e01b815260040160405180910390fd5b6128a36128878461268c565b6128908461268c565b6001600160801b031660809190911b1790565b905082156128d65760038401546128ca908490600160801b906001600160801b03166142d4565b60018501805490910190555b8115611de65760038401546128fb908390600160801b906001600160801b03166142d4565b60028501805490910190559392505050565b815161291d90610d568360801c90565b611df88260200151610d568390565b600354600090819081906001600160a01b031615611c3d577f00000000000000000000000000000000000000000000000000000000000000005a101561298557604051630f724b8160e11b815260040160405180910390fd5b60035460405163d6ec458560e01b81526001600160a01b039091169063d6ec4585907f0000000000000000000000000000000000000000000000000000000000000000906129d7908890600401616f0f565b6020604051808303818786fa93505050508015612a11575060408051601f3d908101601f19168201909252612a0e91810190616e3e565b60015b15612a2857925050610fff600c83901c8116915082165b612a3182614376565b611c3d81614376565b600081604051602001612a4d9190616f0f565b604051602081830303815290604052805190602001209050919050565b81546001600160a01b0316600003612a955760405163486aa30760e01b815260040160405180910390fd5b815462ffffff909116600160b81b027fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff909116179055565b8151835114612b445760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610bac565b6001600160a01b038416612ba85760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610bac565b3360005b8451811015612cd5576000858281518110612bc957612bc9616a78565b602002602001015190506000858381518110612be757612be7616a78565b60209081029190910181015160008481526004835260408082206001600160a01b038e168352909352919091205490915081811015612c7b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610bac565b60008381526004602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290612cba908490616f5f565b9250508190555050505080612cce90616a8e565b9050612bac565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051612d25929190616f72565b60405180910390a4612d3b8187878787876143f0565b505050505050565b80600f81900b8114612d5457600080fd5b919050565b6000612d866040518060800160405280600081526020016000815260200160008152602001600081525090565b83546001600160a01b0316600003612db15760405163486aa30760e01b815260040160405180910390fd5b612dc383602001518460400151614595565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905281906060860151600f0b15612f4657612e1887876020015188606001516000614631565b6001600160801b031660208301521515815260408601516060870151612e419189916001614631565b6001600160801b031660608084019190915290151560408301528601516000600f9190910b1315612f05576000612e7b876080015161470b565b9050806001600160801b031682602001516001600160801b03161115612ec057602087015160405163b8e3c38560e01b815260029190910b6004820152602401610bac565b806001600160801b031682606001516001600160801b03161115612f0357604080880151905163b8e3c38560e01b815260029190910b6004820152602401610bac565b505b805115612f245760208601516080870151612f249160058a0191614739565b806040015115612f465760408601516080870151612f469160058a0191614739565b612f5987876020015188604001516147d8565b60a0830181905260808301829052606088810151895160208b8101516040808e015181519490961b6bffffffffffffffffffffffff19168484015260e891821b603485015294901b60378301528351601a818403018152603a9092018452815191810191909120600090815260068d0190915291909120612fdb93909261488f565b809350819450505060008660600151600f0b12156130585780511561302757613027878760200151600290810b6000908152600490920160205260408220828155600181018390550155565b80604001511561305857604080870151600290810b600090815260048a016020529182208281556001810183905501555b506060850151600f0b156131fe5760208501518654600291820b600160a01b90910490910b12156130cb576130c4846130bf6130b96130b461309d8a602001516149c1565b6130aa8b604001516149c1565b8b60600151614ce4565b612d43565b60801b90565b614d23565b93506131fe565b60408501518654600291820b600160a01b90910490910b12156131c8578554604086015161313f9186916130bf91613114916130b4916001600160a01b0316906130aa906149c1565b6128906130b46131278b602001516149c1565b8c5460608d01516001600160a01b0390911690614d4d565b935060008560600151600f0b12613172576060850151600387015461316d91906001600160801b0316616f97565b613198565b846060015161318090616ced565b600387015461319891906001600160801b0316616fb7565b6003870180546fffffffffffffffffffffffffffffffff19166001600160801b03929092169190911790556131fe565b6131fb846130bf60006128906130b46131e48b602001516149c1565b6131f18c604001516149c1565b8c60600151614d4d565b93505b60008560600151600f0b12801561322057508554600160d01b9004610fff1615155b156132835761322f8685614d7c565b9250613280846130bf613245866000015161268c565b613252876040015161268c565b61325c9190616fd7565b613269876020015161268c565b613276886060015161268c565b6128909190616fd7565b93505b6132a18461329c6132938561268c565b6128908561268c565b614f68565b935050509250929050565b60006001600160a01b0383161561330457600160981b836001600160a01b03161015806132dd575062800000821615155b806132ec575062400000821615155b806132ff57506220000082161515611de6565b611de6565b62800000821615801561331a5750624000008216155b8015611de6575050622000001615919050565b60808101516000906001600160a01b031615612d545781608001516001600160a01b0316635ae4ce58836040518263ffffffff1660e01b81526004016133739190616f0f565b602060405180830381865afa9250505080156133ac575060408051601f3d908101601f191682019092526133a991810190616e3e565b60015b15612d5457604083015160009062400000166133c95760006133ce565b62fff0005b604085015190915060009062200000166133e95760006133ed565b610fff5b61ffff1691909117919091169392505050565b83546000906001600160a01b03161561342c57604051637983c05160e01b815260040160405180910390fd5b61343584614f95565b604080516080810182526001600160a01b0396909616808752600283900b602088015262ffffff9586169187018290529385166060909601869052865476ffffffffffffffffffffffffffffffffffffffffffffff1916909317600160a01b94821694909402939093177fffffff000000000000ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b90920262ffffff60d01b191691909117600160d01b909302929092179092555090565b60006001600160a01b038216613500575047919050565b6040516370a0823160e01b81523060048201526001600160a01b038316906370a0823190602401602060405180830381865afa158015613544573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bda9190617016565b60006135748360801c90565b90507f760a9a962ae3d184e99c0483cf5684fb3170f47116ca4f445c50209da4f4f9066001600160801b038216018281b4610d9d8460018401815b608082901b6001600160801b0382161792506000805160206172698339815191528381b450505050565b60006135e58260801c90565b9050611df8826000198301816135af565b816001600160a01b0316836001600160a01b03160361367d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610bac565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b81546001600160a01b03166000036137155760405163486aa30760e01b815260040160405180910390fd5b815462ffffff909116600160d01b0262ffffff60d01b19909116179055565b613748306001600160a01b038416836152a8565b611df882611c348361268c565b6001600160a01b0384166137b55760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610bac565b336137cf816000876137c688615426565b61126788615426565b60008481526004602090815260408083206001600160a01b038916845290915281208054859290613801908490616f5f565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461126781600087878787615471565b6001600160a01b0384166138c55760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610bac565b336138d58187876137c688615426565b60008481526004602090815260408083206001600160a01b038a1684529091529020548381101561395b5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610bac565b60008581526004602090815260408083206001600160a01b038b811685529252808320878503905590881682528120805486929061399a908490616f5f565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46139fa828888888888615471565b50505050505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052819081908460600151600003613a5d5760405163be8b850760e01b815260040160405180910390fd5b6040805160808101825287546001600160a01b038116808352600160a01b820460020b602084015262ffffff600160b81b8304811694840194909452600160d01b909104909216606082015290600003613aca5760405163486aa30760e01b815260040160405180910390fd5b856040015115613b795780600001516001600160a01b031686608001516001600160a01b031610613b285780516080870151604051637c9c6e8f60e01b81526001600160a01b03928316600482015291166024820152604401610bac565b6401000276a36001600160a01b031686608001516001600160a01b031611613b74576080860151604051639e4d7cc760e01b81526001600160a01b039091166004820152602401610bac565b613c28565b80600001516001600160a01b031686608001516001600160a01b031611613bcd5780516080870151604051637c9c6e8f60e01b81526001600160a01b03928316600482015291166024820152604401610bac565b73fffd8963efd1fc6a506488495d951d5263988d266001600160a01b031686608001516001600160a01b031610613c28576080860151604051639e4d7cc760e01b81526001600160a01b039091166004820152602401610bac565b6040805160608101825260038901546001600160801b0316815290870151600091906020820190613c6357604084015160121c603f16613c7a565b604084810151600c1c610fff16613c7a9190617045565b61ffff1681526020018860400151613c9c57606084015160121c603f16613cb5565b6060840151604090600c1c610fff16613cb59190617045565b61ffff16815250905060008088606001511390506040518060c00160405280896060015181526020016000815260200184600001516001600160a01b03168152602001846020015160020b81526020018960400151613d18578a60020154613d1e565b8a600101545b815283516001600160801b03166020918201526040805160e0810182526000808252928101839052908101829052606081018290526080810182905260a0810182905260c08101919091529094505b845115801590613d97575088608001516001600160a01b031685604001516001600160a01b031614155b1561419f576040808601516001600160a01b03168252606086015160208b0151918b0151613dca9260058e01929161556d565b1515604083015260020b60208201819052620d89e7191315613df557620d89e7196020820152613e29565b613e02620d89e719617066565b60020b816020015160020b1315613e2957613e20620d89e719617066565b60020b60208201525b613e3681602001516149c1565b6001600160a01b03166060820152604080860151908a0151613eb99190613e79578a608001516001600160a01b031683606001516001600160a01b031611613e97565b8a608001516001600160a01b031683606001516001600160a01b0316105b613ea5578260600151613eab565b8a608001515b60a088015188518d516156af565b60c085015260a084015260808301526001600160a01b031660408601528115613f1b57613eef8160c001518260800151016158a1565b855103855260a0810151613f02906158a1565b8560200151613f11919061707f565b6020860152613f5e565b613f288160a001516158a1565b855101855260c08101516080820151613f4991613f4491616f5f565b6158a1565b8560200151613f589190616ee7565b60208601525b602083015161ffff1615613f98576000836020015161ffff168260c00151613f86919061709f565b60c08301805182900390529790970196505b604083015161ffff1615613fd2576000836040015161ffff168260c00151613fc0919061709f565b60c08301805182900390529690960195505b60a08501516001600160801b031615614011576140058160c00151600160801b8760a001516001600160801b03166142d4565b60808601805190910190525b80606001516001600160a01b031685604001516001600160a01b03160361416c578060400151156141435760006140eb8b83602001518c6040015161405a578d60010154614060565b88608001515b8d604001516140aa578960800151600292830b600090815260049094016020526040909320600181018054909203909155908101805490920390915554600160801b9004600f0b90565b8e60020154600292830b600090815260049094016020526040909320600181018054909203909155908101805490920390915554600160801b9004600f0b90565b90508960400151156140fb576000035b600081600f0b1261411b57808660a001516141169190616f97565b614133565b61412481616ced565b8660a001516141339190616fb7565b6001600160801b031660a0870152505b886040015161415657806020015161415f565b60018160200151035b60020b6060860152613d6d565b80600001516001600160a01b031685604001516001600160a01b03161461419a5761415f8560400151614f95565b613d6d565b604085015160608601518b5476ffffffffffffffffffffffffffffffffffffffffffffff1916600160a01b62ffffff9092169190910273ffffffffffffffffffffffffffffffffffffffff1916176001600160a01b03909116178a5560a085015183516001600160801b039182169116146142445760a085015160038b0180546fffffffffffffffffffffffffffffffff19166001600160801b039092169190911790555b88604001511561425d57608085015160018b0155614268565b608085015160028b01555b81151589604001511515036142a15761429a61428d86600001518b6060015103612d43565b6128908760200151612d43565b97506142c7565b6142c46142b18660200151612d43565b61289087600001518c6060015103612d43565b97505b5050505092959194509250565b600083830281600019858709828110838203039150508084116142f657600080fd5b8060000361430957508290049050611de6565b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b61ffff8116156143ed57600061438d604083617045565b90506103ff600683901c1661ffff8216158015906143af5750600461ffff8316105b806143cc575061ffff8116158015906143cc5750600461ffff8216105b156143ea57604051637e2df70960e11b815260040160405180910390fd5b50505b50565b6001600160a01b0384163b15612d3b5760405163bc197c8160e01b81526001600160a01b0385169063bc197c819061443490899089908890889088906004016170b3565b6020604051808303816000875af192505050801561446f575060408051601f3d908101601f1916820190925261446c91810190616a44565b60015b6145245761447b617105565b806308c379a0036144b4575061448f617121565b8061449a57506144b6565b8060405162461bcd60e51b8152600401610bac9190616000565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e204552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610bac565b6001600160e01b0319811663bc197c8160e01b146139fa5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610bac565b8060020b8260020b126145c95760405163c4433ed560e01b8152600283810b600483015282900b6024820152604401610bac565b620d89e719600283900b12156145f85760405163d5e2f7ab60e01b8152600283900b6004820152602401610bac565b614605620d89e719617066565b60020b8160020b1315611df85760405163035aeeff60e31b8152600282900b6004820152602401610bac565b600283900b6000908152600485016020526040812080548291906001600160801b0381169060801c600f87900b84136146735761466e8783616f97565b614686565b61467c87616ced565b6146869083616fb7565b6001600160801b03808216159084168015919091141596509094506000036146d4578854600160a01b9004600290810b9089900b136146d4576001808a0154908401556002808a0154908401555b6000866146ea576146e58883616fd7565b6146f4565b6146f488836171ab565b90508060801b851784555050505094509492505050565b6000621b13d08201600290810b9083900b6001600160801b0302816147325761473261702f565b0492915050565b8060020b8260020b8161474e5761474e61702f565b0760020b1561477e57604051636a6c79f360e11b8152600283810b600483015282900b6024820152604401610bac565b6000806147ac8360020b8560020b816147995761479961702f565b0560020b600881901d9161010090910790565b600191820b60009081526020979097526040909620805460ff9097169190911b90951890945550505050565b600282810b600081815260048601602052604080822085850b835290822087549294859492939192600160a01b909204900b90811215614831578160010154836001015403945081600201548360020154039350614884565b8560020b8160020b1261485d578260010154826001015403945082600201548260020154039350614884565b81600101548360010154896001015403039450816002015483600201548960020154030393505b505050935093915050565b6040805160608101825285546001600160801b0316815260018601546020820152600286015491810191909152600090819081600f87900b81036149005781516001600160801b03166000036148f857604051632bbfae4960e21b815260040160405180910390fd5b508051614935565b600087600f0b1261491d578151614918908890616f97565b614932565b61492687616ced565b82516149329190616fb7565b90505b6149578260200151870383600001516001600160801b0316600160801b6142d4565b935061497b8260400151860383600001516001600160801b0316600160801b6142d4565b925086600f0b6000146149ab5787546fffffffffffffffffffffffffffffffff19166001600160801b0382161788555b5050600186019390935560029094015591929050565b60008060008360020b126149d8578260020b6149e0565b8260020b6000035b9050620d89e8811115614a06576040516333a3bdff60e21b815260040160405180910390fd5b600081600116600003614a1d57600160801b614a2f565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615614a63576ffff97272373d413259a46990580e213a0260801c5b6004821615614a82576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615614aa1576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615614ac0576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615614adf576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615614afe576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615614b1d576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615614b3d576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615614b5d576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615614b7d576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615614b9d576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615614bbd576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615614bdd576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615614bfd576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615614c1d576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615614c3e576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615614c5e576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615614c7d576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615614c9a576b048a170391f7dc42444e8fa20260801c5b60008460020b1315614cbb578060001981614cb757614cb761702f565b0490505b640100000000810615614ccf576001614cd2565b60005b60ff16602082901c0192505050919050565b60008082600f0b12614d0557614d00613f4485858560016158d0565b610ce9565b614d18613f4485858560000360006158d0565b600003949350505050565b6000611de6614d328360801c90565b614d3c8560801c90565b614d469190616fd7565b8385613276565b60008082600f0b12614d6957614d00613f448585856001615999565b614d18613f448585856000036000615999565b614da76040518060800160405280600081526020016000815260200160008152602001600081525090565b6000614db38360801c90565b6040805160808101825286546001600160a01b0381168252600160a01b810460020b602083015262ffffff600160b81b82048116838501819052600160d01b9092049081166060840181905294955087949293600091610fff16614e179190617045565b9050603f600684901c166000614e326040610fff8616617045565b9050603f600685901c166000600f8a900b128015614e54575060008461ffff16115b15614e805761ffff8416614e678a616ced565b614e7191906171ea565b6001600160801b031660408b01525b600088600f0b128015614e97575060008361ffff16115b15614ec35761ffff8316614eaa89616ced565b614eb491906171ea565b6001600160801b031660608b01525b60008261ffff16118015614edb575060008a60400151115b15614f0c578161ffff168a60400151614ef4919061709f565b808b5260408b018051614f0890839061694e565b9052505b60008161ffff16118015614f24575060008a60600151115b15614f59578061ffff168a60600151614f3d919061709f565b60208b0181905260608b018051614f5590839061694e565b9052505b50505050505050505092915050565b6000611de6614f778360801c90565b614f818560801c90565b614f8b91906171ab565b61289084866171ab565b60006401000276a36001600160a01b0383161080614fd0575073fffd8963efd1fc6a506488495d951d5263988d266001600160a01b03831610155b15614fee5760405163015680db60e11b815260040160405180910390fd5b77ffffffffffffffffffffffffffffffffffffffff00000000602083901b166001600160801b03811160071b81811c67ffffffffffffffff811160061b90811c63ffffffff811160051b90811c61ffff811160041b90811c60ff8111600390811b91821c600f811160021b90811c918211600190811b92831c9790881196179094179092171790911717176080811061508f57607f810383901c9150615099565b80607f0383901b91505b908002607f81811c60ff83811c9190911c800280831c81831c1c800280841c81841c1c800280851c81851c1c800280861c81861c1c800280871c81871c1c800280881c81881c1c800280891c81891c1c8002808a1c818a1c1c8002808b1c818b1c1c8002808c1c818c1c1c8002808d1c818d1c1c8002808e1c9c81901c9c909c1c80029c8d901c9e9d607f198f0160401b60c09190911c678000000000000000161760c19b909b1c674000000000000000169a909a1760c29990991c672000000000000000169890981760c39790971c671000000000000000169690961760c49590951c670800000000000000169490941760c59390931c670400000000000000169290921760c69190911c670200000000000000161760c79190911c670100000000000000161760c89190911c6680000000000000161760c99190911c6640000000000000161760ca9190911c6620000000000000161760cb9190911c6610000000000000161760cc9190911c6608000000000000161760cd9190911c66040000000000001617693627a301d71055774c8581026f028f6481ab7f045a5af012a19d003aa9198101608090811d906fdb2df09e81959a81455e260799a0632f8301901d600281810b9083900b1461529957886001600160a01b031661527e826149c1565b6001600160a01b03161115615293578161529b565b8061529b565b815b9998505050505050505050565b6001600160a01b03831661530a5760405162461bcd60e51b815260206004820152602360248201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260448201526265737360e81b6064820152608401610bac565b3361533a8185600061531b87615426565b61532487615426565b5050604080516020810190915260009052505050565b60008381526004602090815260408083206001600160a01b0388168452909152902054828110156153b95760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610bac565b60008481526004602090815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061546057615460616a78565b602090810291909101015292915050565b6001600160a01b0384163b15612d3b5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906154b59089908990889088908890600401617210565b6020604051808303816000875af19250505080156154f0575060408051601f3d908101601f191682019092526154ed91810190616a44565b60015b6154fc5761447b617105565b6001600160e01b0319811663f23a6e6160e01b146139fa5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610bac565b60008060008460020b8660020b816155875761558761702f565b05905060008660020b1280156155b457508460020b8660020b816155ad576155ad61702f565b0760020b15155b156155be57600019015b831561563257600281900b600881901d600181810b600090815260208b9052604090205461010090930760ff81169190911b8001600019019283168015159550919290918561561457888360ff16860302615627565b8861561e82615a20565b840360ff168603025b9650505050506156a5565b600181810160020b600881901d80830b600090815260208b9052604090205461010090920760ff81169390931b60001901199182168015159550909291908561568857888360ff0360ff1686600101010261569e565b888361569383615ac0565b0360ff168660010101025b9650505050505b5094509492505050565b60008080806001600160a01b03808916908a1610158187128015906157345760006156e88989620f42400362ffffff16620f42406142d4565b905082615701576156fc8c8c8c6001615999565b61570e565b61570e8b8d8c60016158d0565b955085811061571f578a965061572e565b61572b8c8b8386615baa565b96505b5061577e565b8161574b576157468b8b8b60006158d0565b615758565b6157588a8c8b6000615999565b935083886000031061576c5789955061577e565b61577b8b8a8a60000385615bf6565b95505b6001600160a01b038a81169087161482156157e15780801561579d5750815b6157b3576157ae878d8c60016158d0565b6157b5565b855b95508080156157c2575081155b6157d8576157d3878d8c6000615999565b6157da565b845b945061582b565b8080156157eb5750815b615801576157fc8c888c6001615999565b615803565b855b9550808015615810575081155b615826576158218c888c60006158d0565b615828565b845b94505b8115801561583b57508860000385115b15615847578860000394505b81801561586657508a6001600160a01b0316876001600160a01b031614155b15615875578589039350615892565b61588f868962ffffff168a620f42400362ffffff16615c42565b93505b50505095509550955095915050565b60007f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156126ab57600080fd5b6000836001600160a01b0316856001600160a01b031611156158f0579293925b7bffffffffffffffffffffffffffffffff000000000000000000000000606084901b166001600160a01b03868603811690871661592c57600080fd5b8361596257866001600160a01b031661594f8383896001600160a01b03166142d4565b8161595c5761595c61702f565b0461598e565b61598e6159798383896001600160a01b0316615c42565b886001600160a01b0316808204910615150190565b979650505050505050565b6000836001600160a01b0316856001600160a01b031611156159b9579293925b816159ed576159e86001600160801b0384166159d58787617248565b6001600160a01b0316600160601b6142d4565b615a17565b615a176001600160801b038416615a048787617248565b6001600160a01b0316600160601b615c42565b95945050505050565b6000808211615a2e57600080fd5b600160801b8210615a4157608091821c91015b680100000000000000008210615a5957604091821c91015b6401000000008210615a6d57602091821c91015b620100008210615a7f57601091821c91015b6101008210615a9057600891821c91015b60108210615aa057600491821c91015b60048210615ab057600291821c91015b60028210612d5457600101919050565b6000808211615ace57600080fd5b5060ff6001600160801b03821615615ae957607f1901615af1565b608082901c91505b67ffffffffffffffff821615615b0a57603f1901615b12565b604082901c91505b63ffffffff821615615b2757601f1901615b2f565b602082901c91505b61ffff821615615b4257600f1901615b4a565b601082901c91505b60ff821615615b5c5760071901615b64565b600882901c91505b600f821615615b765760031901615b7e565b600482901c91505b6003821615615b905760011901615b98565b600282901c91505b6001821615612d545760001901919050565b600080856001600160a01b031611615bc157600080fd5b6000846001600160801b031611615bd757600080fd5b81615be9576159e88585856001615c82565b615a178585856001615d69565b600080856001600160a01b031611615c0d57600080fd5b6000846001600160801b031611615c2357600080fd5b81615c35576159e88585856000615d69565b615a178585856000615c82565b6000615c4f8484846142d4565b905060008280615c6157615c6161702f565b8486091115611de6576000198110615c7857600080fd5b6001019392505050565b60008115615cf45760006001600160a01b03841115615cb857615cb384600160601b876001600160801b03166142d4565b615ccf565b615ccf6001600160801b038616606086901b61709f565b9050615cec615ce7826001600160a01b038916616f5f565b615e6b565b915050610ce9565b60006001600160a01b03841115615d2257615d1d84600160601b876001600160801b0316615c42565b615d3f565b615d3f606085901b6001600160801b038716808204910615150190565b905080866001600160a01b031611615d5657600080fd5b615cec816001600160a01b03881661694e565b600082600003615d7a575083610ce9565b7bffffffffffffffffffffffffffffffff000000000000000000000000606085901b168215615e1e576001600160a01b03861684810290858281615dc057615dc061702f565b0403615df057818101828110615dee57615de483896001600160a01b031683615c42565b9350505050610ce9565b505b50615cec8185615e096001600160a01b038a168361709f565b615e139190616f5f565b808204910615150190565b6001600160a01b03861684810290858281615e3b57615e3b61702f565b04148015615e4857508082115b615e5157600080fd5b808203615de4615ce7846001600160a01b038b1684615c42565b806001600160a01b0381168114612d5457600080fd5b6001600160a01b03811681146143ed57600080fd5b60008060408385031215615ea957600080fd5b8235615eb481615e81565b946020939093013593505050565b6001600160e01b0319811681146143ed57600080fd5b600060208284031215615eea57600080fd5b8135611de681615ec2565b8035600281900b8114612d5457600080fd5b60008060008060808587031215615f1d57600080fd5b843593506020850135615f2f81615e81565b9250615f3d60408601615ef5565b9150615f4b60608601615ef5565b905092959194509250565b600080600060608486031215615f6b57600080fd5b8335615f7681615e81565b92506020840135615f8681615e81565b929592945050506040919091013590565b600060208284031215615fa957600080fd5b5035919050565b60005b83811015615fcb578181015183820152602001615fb3565b50506000910152565b60008151808452615fec816020860160208601615fb0565b601f01601f19169290920160200192915050565b602081526000611de66020830184615fd4565b60006020828403121561602557600080fd5b8135611de681615e81565b634e487b7160e01b600052604160045260246000fd5b6060810181811067ffffffffffffffff8211171561606657616066616030565b60405250565b601f8201601f1916810167ffffffffffffffff8111828210171561609257616092616030565b6040525050565b62ffffff811681146143ed57600080fd5b600060a082840312156160bc57600080fd5b60405160a0810181811067ffffffffffffffff821117156160df576160df616030565b60405290508082356160f081615e81565b8152602083013561610081615e81565b6020820152604083013561611381616099565b604082015261612460608401615ef5565b6060820152608083013561613781615e81565b6080919091015292915050565b60008083601f84011261615657600080fd5b50813567ffffffffffffffff81111561616e57600080fd5b60208301915083602082850101111561618657600080fd5b9250929050565b600080600080600061010086880312156161a657600080fd5b6161b087876160aa565b945060a0860135935060c0860135925060e086013567ffffffffffffffff8111156161da57600080fd5b6161e688828901616144565b969995985093965092949392505050565b600060a0828403121561620957600080fd5b611de683836160aa565b600067ffffffffffffffff82111561622d5761622d616030565b5060051b60200190565b600082601f83011261624857600080fd5b8135602061625582616213565b604051616262828261606c565b83815260059390931b850182019282810191508684111561628257600080fd5b8286015b8481101561629d5780358352918301918301616286565b509695505050505050565b600067ffffffffffffffff8211156162c2576162c2616030565b50601f01601f191660200190565b600082601f8301126162e157600080fd5b81356162ec816162a8565b6040516162f9828261606c565b82815285602084870101111561630e57600080fd5b82602086016020830137600092810160200192909252509392505050565b600080600080600060a0868803121561634457600080fd5b853561634f81615e81565b9450602086013561635f81615e81565b9350604086013567ffffffffffffffff8082111561637c57600080fd5b61638889838a01616237565b9450606088013591508082111561639e57600080fd5b6163aa89838a01616237565b935060808801359150808211156163c057600080fd5b506163cd888289016162d0565b9150509295509295909350565b600080604083850312156163ed57600080fd5b50508035926020909101359150565b6000806040838503121561640f57600080fd5b823567ffffffffffffffff8082111561642757600080fd5b818501915085601f83011261643b57600080fd5b8135602061644882616213565b604051616455828261606c565b83815260059390931b850182019282810191508984111561647557600080fd5b948201945b8386101561649c57853561648d81615e81565b8252948201949082019061647a565b965050860135925050808211156164b257600080fd5b506164bf85828601616237565b9150509250929050565b600081518084526020808501945080840160005b838110156164f9578151875295820195908201906001016164dd565b509495945050505050565b602081526000611de660208301846164c9565b60008060008084860361012081121561652f57600080fd5b61653987876160aa565b94506060609f198201121561654d57600080fd5b5060405161655a81616046565b61656660a08701615ef5565b815261657460c08701615ef5565b602082015260e08601356040820152925061010085013567ffffffffffffffff8111156165a057600080fd5b6165ac87828801616144565b95989497509550505050565b60008060008060e085870312156165ce57600080fd5b6165d886866160aa565b935060a08501356165e881615e81565b925060c085013567ffffffffffffffff8111156165a057600080fd5b6000806020838503121561661757600080fd5b823567ffffffffffffffff81111561662e57600080fd5b61663a85828601616144565b90969095509350505050565b80358015158114612d5457600080fd5b6000806040838503121561666957600080fd5b823561667481615e81565b915061668260208401616646565b90509250929050565b6000806040838503121561669e57600080fd5b82356166a981615e81565b915060208301356166b981615e81565b809150509250929050565b60008083601f8401126166d657600080fd5b50813567ffffffffffffffff8111156166ee57600080fd5b6020830191508360208260051b850101111561618657600080fd5b60008060008060008060008060a0898b03121561672557600080fd5b883561673081615e81565b9750602089013561674081615e81565b9650604089013567ffffffffffffffff8082111561675d57600080fd5b6167698c838d016166c4565b909850965060608b013591508082111561678257600080fd5b61678e8c838d016166c4565b909650945060808b01359150808211156167a757600080fd5b506167b48b828c01616144565b999c989b5096995094979396929594505050565b60008060008060008060a087890312156167e157600080fd5b86356167ec81615e81565b955060208701356167fc81615e81565b94506040870135935060608701359250608087013567ffffffffffffffff81111561682657600080fd5b61683289828a01616144565b979a9699509497509295939492505050565b600080600080600060a0868803121561685c57600080fd5b853561686781615e81565b9450602086013561687781615e81565b93506040860135925060608601359150608086013567ffffffffffffffff8111156168a157600080fd5b6163cd888289016162d0565b6000806000808486036101208112156168c557600080fd5b6168cf87876160aa565b94506060609f19820112156168e357600080fd5b506040516168f081616046565b6168fc60a08701616646565b815260c0860135602082015260e086013561691681615e81565b6040820152925061010085013567ffffffffffffffff8111156165a057600080fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610bda57610bda616938565b600181811c9082168061697557607f821691505b60208210810361699557634e487b7160e01b600052602260045260246000fd5b50919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60006101206001600160a01b0389168352616a2460208401896001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b8660c08401528560e08401528061010084015261529b818401858761699b565b600060208284031215616a5657600080fd5b8151611de681615ec2565b8082028115828204841417610bda57610bda616938565b634e487b7160e01b600052603260045260246000fd5b600060018201616aa057616aa0616938565b5060010190565b60006101406001600160a01b0388168352616b0760208401886001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b8551600290810b60c08501526020870151900b60e084015260408601516101008401525b80610120840152616b3f818401858761699b565b98975050505050505050565b60006101606001600160a01b0389168352616bab60208401896001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b8651600290810b60c08501526020880151900b60e084015260408701516101008401525b856101208401528061014084015261529b818401858761699b565b60006101006001600160a01b038089168452616c4b60208501896001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b861660c084015260e08301819052616b3f818401858761699b565b60006101206001600160a01b03808a168452616cc7602085018a6001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b80881660c0850152508560020b60e08401528061010084015261529b818401858761699b565b600081600f0b6f7fffffffffffffffffffffffffffffff198103616d1357616d13616938565b60000392915050565b602081526000610ce960208301848661699b565b600060208284031215616d4257600080fd5b815167ffffffffffffffff811115616d5957600080fd5b8201601f81018413616d6a57600080fd5b8051616d75816162a8565b604051616d82828261606c565b828152866020848601011115616d9757600080fd5b616da8836020830160208701615fb0565b9695505050505050565b60006101406001600160a01b0388168352616e1260208401886001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b8551151560c0840152602086015160e084015260408601516001600160a01b0316610100840152616b2b565b600060208284031215616e5057600080fd5b8151611de681616099565b60006101606001600160a01b0389168352616ebb60208401896001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b8651151560c0840152602087015160e084015260408701516001600160a01b0316610100840152616bcf565b8082018281126000831280158216821582161715616f0757616f07616938565b505092915050565b60a08101610bda82846001600160a01b0380825116835280602083015116602084015262ffffff6040830151166040840152606082015160020b6060840152806080830151166080840152505050565b80820180821115610bda57610bda616938565b604081526000616f8560408301856164c9565b8281036020840152615a1781856164c9565b6001600160801b03818116838216019080821115611d2d57611d2d616938565b6001600160801b03828116828216039080821115611d2d57611d2d616938565b600f81810b9083900b016f7fffffffffffffffffffffffffffffff81136f7fffffffffffffffffffffffffffffff1982121715610bda57610bda616938565b60006020828403121561702857600080fd5b5051919050565b634e487b7160e01b600052601260045260246000fd5b600061ffff8084168061705a5761705a61702f565b92169190910692915050565b60008160020b627fffff198103616d1357616d13616938565b8181036000831280158383131683831282161715611d2d57611d2d616938565b6000826170ae576170ae61702f565b500490565b60006001600160a01b03808816835280871660208401525060a060408301526170df60a08301866164c9565b82810360608401526170f181866164c9565b90508281036080840152616b3f8185615fd4565b600060033d111561711e5760046000803e5060005160e01c5b90565b600060443d101561712f5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561715f57505050505090565b82850191508151818111156171775750505050505090565b843d87010160208285010111156171915750505050505090565b6171a06020828601018761606c565b509095945050505050565b600f82810b9082900b036f7fffffffffffffffffffffffffffffff1981126f7fffffffffffffffffffffffffffffff82131715610bda57610bda616938565b60006001600160801b03808416806172045761720461702f565b92169190910492915050565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a0608083015261598e60a0830184615fd4565b6001600160a01b03828116828216039080821115611d2d57611d2d61693856fe42429cc76d46bf08df26d19473353195d5f3713a3c92736054a3ec1c5bee41aaa26469706673582212205c20cec6ba4eb6107872ed05d27a817ea0b6ac0cb001a2082ed769c5abbb0eee64736f6c637823302e382e32322d63692e323032332e382e31332b636f6d6d69742e64376165346439340054",
"sourceMap": "1299:14499:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2170:228:75;;;;;;;;;;-1:-1:-1;2170:228:75;;;;;:::i;:::-;;:::i;:::-;;;639:25:107;;;627:2;612:18;2170:228:75;;;;;;;;1221:305;;;;;;;;;;-1:-1:-1;1221:305:75;;;;;:::i;:::-;;:::i;:::-;;;1226:14:107;;1219:22;1201:41;;1189:2;1174:18;1221:305:75;1061:187:107;3244:256:3;;;;;;;;;;-1:-1:-1;3244:256:3;;;;;:::i;:::-;;:::i;:::-;;;;2119:13:107;;-1:-1:-1;;;;;2115:54:107;2097:73;;2226:4;2214:17;;;2208:24;2186:20;;;2179:54;2277:17;;;2271:24;2249:20;;;2242:54;2085:2;2070:18;3244:256:3;1907:395:107;1774:51:3;;;;;;;;;;;;1824:1;1774:51;;;;;2478:1:107;2467:21;;;;2449:40;;2437:2;2422:18;1774:51:3;2307:188:107;12510:245:3;;;;;;;;;;-1:-1:-1;12510:245:3;;;;;:::i;:::-;;:::i;:::-;;1925:103:75;;;;;;;;;;-1:-1:-1;1925:103:75;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;655:126:2:-;;;;;;;;;;-1:-1:-1;655:126:2;;;;;:::i;:::-;;:::i;15576:130:3:-;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;3426:19:18;15576:130:3;;14975:182;;;;;;;;;;-1:-1:-1;14975:182:3;;;;;:::i;:::-;15130:11;;14975:182;11658:813;;;;;;;;;;-1:-1:-1;11658:813:3;;;;;:::i;:::-;;:::i;14477:257::-;;;;;;;;;;-1:-1:-1;14477:257:3;;;;;:::i;:::-;;:::i;3418:203:0:-;;;;;;;;;;-1:-1:-1;3418:203:0;;;;;:::i;:::-;;:::i;4045:430:75:-;;;;;;;;;;-1:-1:-1;4045:430:75;;;;;:::i;:::-;;:::i;2981:257:3:-;;;;;;;;;;-1:-1:-1;2981:257:3;;;;;:::i;:::-;3128:17;3168:9;;;:5;:9;;;;;;;;1450:45:20;;37180:2:107;37176:15;;;;-1:-1:-1;;37172:53:107;1450:45:20;;;37160:66:107;37260:3;37256:16;;;37242:12;;;37235:38;37303:16;;;;37289:12;;;37282:38;1450:45:20;;;;;;;;;37336:12:107;;;;1450:45:20;;1440:56;;;;;;;;;1435:62;;3168:19:3;;1435:62:20;;;;;3168:63:3;-1:-1:-1;;;;;3168:63:3;;2981:257;;;;-1:-1:-1;;;;;11094:47:107;;;11076:66;;11064:2;11049:18;2981:257:3;10930:218:107;15163:407:3;;;;;;;;;;-1:-1:-1;15163:407:3;;;;;:::i;:::-;;:::i;2555:508:75:-;;;;;;;;;;-1:-1:-1;2555:508:75;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1669:65:3:-;;;;;;;;;;-1:-1:-1;1669:65:3;1719:15;1669:65;;7141:2070;;;;;;;;;;-1:-1:-1;7141:2070:3;;;;;:::i;:::-;;:::i;3704:1557::-;;;;;;;;;;-1:-1:-1;3704:1557:3;;;;;:::i;:::-;;:::i;13047:374::-;;;;;;:::i;:::-;;:::i;5300:626::-;;;;;;;;;;-1:-1:-1;5300:626:3;;;;;:::i;:::-;;:::i;3627:454:0:-;;;;;;;;;;-1:-1:-1;3627:454:0;;;;;:::i;:::-;;:::i;625:54::-;;;;;;;;;;;;678:1;625:54;;;;;16607:4:107;16595:17;;;16577:36;;16565:2;16550:18;625:54:0;16435:184:107;84:20:2;;;;;;;;;;-1:-1:-1;84:20:2;;;;-1:-1:-1;;;;;84:20:2;;;;;;-1:-1:-1;;;;;16788:55:107;;;16770:74;;16758:2;16743:18;84:20:2;16624:226:107;2095:64:3;;;;;;;;;;-1:-1:-1;2095:64:3;;;;;:::i;:::-;;;;;;;;;;;;;;686::0;;;;;;;;;;-1:-1:-1;686:64:0;;;;;:::i;:::-;;;;;;;;;;;;;;3131:153:75;;;;;;;;;;-1:-1:-1;3131:153:75;;;;;:::i;:::-;;:::i;1957:98:3:-;;;;;;;;;;-1:-1:-1;1957:98:3;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;14740:229;;;;;;;;;;-1:-1:-1;14740:229:3;;;;;:::i;:::-;;:::i;757:92:0:-;;;;;;;;;;-1:-1:-1;757:92:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2166:45:3;;;;;;;;;;-1:-1:-1;2166:45:3;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2166:45:3;;;;-1:-1:-1;;;2166:45:3;;;;;;;;;;;;;;-1:-1:-1;;;2166:45:3;;;;;;;;;;;-1:-1:-1;;;2166:45:3;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2166:45:3;;;;;;;18455:13:107;;-1:-1:-1;;;;;18451:62:107;18433:81;;18584:4;18572:17;;;18566:24;18563:1;18552:39;18530:20;;;18523:69;18627:17;;;18621:24;18664:8;18710:21;;;18688:20;;;18681:51;;;;18792:4;18780:17;;;18774:24;18770:33;;;18748:20;;;18741:63;;;;18835:3;18820:19;;18813:35;;;;18879:3;18864:19;;18857:35;-1:-1:-1;;;;;18929:47:107;18923:3;18908:19;;18901:76;18420:3;18405:19;2166:45:3;18156:827:107;13937:534:3;;;;;;;;;;-1:-1:-1;13937:534:3;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;;20865:33:107;;;20847:52;;20835:2;20820:18;13937:534:3;20703:202:107;12794:214:3;;;;;;;;;;-1:-1:-1;12794:214:3;;;;;:::i;:::-;;:::i;2463:313::-;;;;;;;;;;-1:-1:-1;2463:313:3;;;;;:::i;:::-;2556:20;2668:9;;;:5;:9;;;;;;;;;2642:41;;;;;;;;;-1:-1:-1;;;;;2642:41:3;;;;;-1:-1:-1;;;2642:41:3;;;;;;;;;;;-1:-1:-1;;;2642:41:3;;;;;;;;;;-1:-1:-1;;;2642:41:3;;;;;;;;;;;;;;;;;2463:313;;;;;-1:-1:-1;;;;;21151:55:107;;;21133:74;;21254:1;21243:21;;;;21238:2;21223:18;;21216:49;21284:8;21328:15;;;21308:18;;;21301:43;;;;21380:15;21375:2;21360:18;;21353:43;21120:3;21105:19;2463:313:3;20910:492:107;3539:126:3;;;;;;;;;;-1:-1:-1;3539:126:3;;;;;:::i;:::-;;:::i;3351:166:75:-;;;;;;;;;;-1:-1:-1;3351:166:75;;;;;:::i;:::-;-1:-1:-1;;;;;3473:27:75;;;3450:4;3473:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;3351:166;4087:479:0;;;;;;;;;;-1:-1:-1;4087:479:0;;;;;:::i;:::-;;:::i;856:51::-;;;;;;;;;;-1:-1:-1;856:51:0;;;;-1:-1:-1;;;;;856:51:0;;;13619:312:3;;;;;;;;;;-1:-1:-1;13619:312:3;;;;;:::i;:::-;;:::i;3584:389:75:-;;;;;;;;;;-1:-1:-1;3584:389:75;;;;;:::i;:::-;;:::i;9250:2369:3:-;;;;;;;;;;-1:-1:-1;9250:2369:3;;;;;:::i;:::-;;:::i;2815:127::-;;;;;;;;;;-1:-1:-1;2815:127:3;;;;;:::i;:::-;2880:17;2916:9;;;:5;:9;;;;;:19;;;-1:-1:-1;;;;;2916:19:3;;2815:127;2170:228:75;2256:7;-1:-1:-1;;;;;2283:21:75;;2275:77;;;;-1:-1:-1;;;2275:77:75;;24846:2:107;2275:77:75;;;24828:21:107;24885:2;24865:18;;;24858:30;24924:34;24904:18;;;24897:62;24995:13;24975:18;;;24968:41;25026:19;;2275:77:75;;;;;;;;;-1:-1:-1;2369:13:75;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;2369:22:75;;;;;;;;;;2170:228;;;;;:::o;1221:305::-;1323:4;-1:-1:-1;;;;;;1358:41:75;;-1:-1:-1;;;1358:41:75;;:109;;-1:-1:-1;;;;;;;1415:52:75;;-1:-1:-1;;;1415:52:75;1358:109;:161;;;-1:-1:-1;;;;;;;;;;937:40:81;;;1483:36:75;829:155:81;3244:256:3;3389:29;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3389:29:3;3441:9;;;;:5;:9;;;;;;;;1450:45:20;;-1:-1:-1;;37180:2:107;37176:15;;;37172:53;1450:45:20;;;37160:66:107;37260:3;37256:16;;;37242:12;;;37235:38;37303:16;;;37289:12;;;37282:38;1450:45:20;;;;;;;;;37336:12:107;;;;1450:45:20;;1440:56;;;;;;1435:62;;3441:19:3;;1435:62:20;;;;;3434:59:3;;;;;;;;;;-1:-1:-1;;;;;3434:59:3;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3244:256:3;;;;;;;:::o;12510:245::-;1102:22:1;:20;:22::i;:::-;6959:14:3::1;6976:49;-1:-1:-1::0;;;;;;;;;;;3426:19:18;6976:47:3::1;:49::i;:::-;6959:66:::0;-1:-1:-1;7039:10:3::1;-1:-1:-1::0;;;;;7039:20:3;::::1;;7035:49;;7068:16;::::0;-1:-1:-1;;;7068:16:3;;-1:-1:-1;;;;;16788:55:107;;7068:16:3::1;::::0;::::1;16770:74:107::0;16743:18;;7068:16:3::1;16624:226:107::0;7035:49:3::1;12627:42:::2;12641:8;12651:17;:6;:15;:17::i;:::-;12627:13;:42::i;:::-;-1:-1:-1::0;;;;;12679:20:3;::::2;;::::0;;;:10:::2;:20;::::0;;;;:30;;12703:6;;12679:20;:30:::2;::::0;12703:6;;12679:30:::2;:::i;:::-;::::0;;;-1:-1:-1;12719:29:3::2;::::0;-1:-1:-1;;;;;;12719:17:3;::::2;12737:2:::0;12741:6;12719:17:::2;:29::i;:::-;6949:153:::1;12510:245:::0;;;:::o;1925:103:75:-;1985:13;2017:4;2010:11;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1925:103;;;:::o;655:126:2:-;496:5;;-1:-1:-1;;;;;496:5:2;482:10;:19;478:47;;510:15;;-1:-1:-1;;;510:15:2;;;;;;;;;;;478:47;736:5:::1;::::0;;723:27:::1;::::0;-1:-1:-1;;;;;723:27:2;;::::1;::::0;736:5;::::1;::::0;723:27:::1;::::0;::::1;760:5;:14:::0;;-1:-1:-1;;760:14:2::1;-1:-1:-1::0;;;;;760:14:2;;;::::1;::::0;;;::::1;::::0;;655:126::o;11658:813:3:-;11848:18;1102:22:1;:20;:22::i;:::-;6959:14:3::1;6976:49;-1:-1:-1::0;;;;;;;;;;;3426:19:18;6976:47:3::1;:49::i;:::-;6959:66:::0;-1:-1:-1;7039:10:3::1;-1:-1:-1::0;;;;;7039:20:3;::::1;;7035:49;;7068:16;::::0;-1:-1:-1;;;7068:16:3;;-1:-1:-1;;;;;16788:55:107;;7068:16:3::1;::::0;::::1;16770:74:107::0;16743:18;;7068:16:3::1;16624:226:107::0;7035:49:3::1;11886:9:::2;::::0;::::2;::::0;1015:8:17;4446:52;:57;11882:236:3::2;;11940:9;::::0;::::2;::::0;:67:::2;::::0;-1:-1:-1;;;11940:67:3;;;12011:28;-1:-1:-1;;;;;11940:22:3::2;::::0;12011:28:::2;::::0;11940:67:::2;::::0;11963:10:::2;::::0;11940:3;;11980:7;;11989;;11998:8;;;;11940:67:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;11940:99:3::2;;11936:172;;12066:27;;-1:-1:-1::0;;;12066:27:3::2;;;;;;;;;;;11936:172;12136:38;12157:7;12166;12136:13;12145:3;12136:8;:13::i;:::-;:20:::0;:38;:20:::2;:38::i;:::-;12128:46;;12185:36;12210:3;12215:5;12185:24;:36::i;:::-;12236:9;::::0;::::2;::::0;-1:-1:-1;;;4606:51:17;:56;12232:233:3::2;;12289:9;::::0;::::2;::::0;:66:::2;::::0;-1:-1:-1;;;12289:66:3;;;12359:27;-1:-1:-1;;;;;12289:21:3::2;::::0;12359:27:::2;::::0;12289:66:::2;::::0;12311:10:::2;::::0;12289:3;;12328:7;;12337;;12346:8;;;;12289:66:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;12289:97:3::2;;12285:170;;12413:27;;-1:-1:-1::0;;;12413:27:3::2;;;;;;;;;;;12285:170;6949:153:::1;11658:813:::0;;;;;;;:::o;14477:257::-;14541:22;14566:23;14585:3;14566:18;:23::i;:::-;14541:48;;14599:9;14611:10;:3;:8;:10::i;:::-;14631:9;;;;:5;:9;;;;;14599:22;;-1:-1:-1;14631:42:3;;14657:15;14631:25;:42::i;:::-;14688:39;;27522:8:107;27510:21;;27492:40;;14707:2:3;;14688:39;;27480:2:107;27465:18;14688:39:3;;;;;;;;14531:203;;14477:257;:::o;3418:203:0:-;496:5:2;;-1:-1:-1;;;;;496:5:2;482:10;:19;478:47;;510:15;;-1:-1:-1;;;510:15:2;;;;;;;;;;;478:47;3516:21:0::1;:34:::0;;-1:-1:-1;;3516:34:0::1;-1:-1:-1::0;;;;;3516:34:0;::::1;::::0;;::::1;::::0;;;3565:49:::1;::::0;16770:74:107;;;3565:49:0::1;::::0;16758:2:107;16743:18;3565:49:0::1;;;;;;;3418:203:::0;:::o;4045:430:75:-;-1:-1:-1;;;;;4270:20:75;;719:10:80;4270:20:75;;:60;;-1:-1:-1;4294:36:75;4311:4;719:10:80;3351:166:75;:::i;4294:36::-;4249:157;;;;-1:-1:-1;;;4249:157:75;;27745:2:107;4249:157:75;;;27727:21:107;27784:2;27764:18;;;27757:30;27823:34;27803:18;;;27796:62;27894:20;27874:18;;;27867:48;27932:19;;4249:157:75;27543:414:107;4249:157:75;4416:52;4439:4;4445:2;4449:3;4454:7;4463:4;4416:22;:52::i;:::-;4045:430;;;;;:::o;15163:407:3:-;15239:12;15263:18;15294:11;15299:6;15294:2;:11;:::i;:::-;15284:22;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15284:22:3;;15263:43;;15398:1;15383:148;15408:6;15405:1;15402:13;15383:148;;;15513:1;15502:9;15498:17;15492:24;15486:2;15482:1;15479;15475:9;15471:18;15464:5;15460:30;15453:64;15430:1;15427;15423:9;15418:14;;15383:148;;;-1:-1:-1;15558:5:3;15163:407;-1:-1:-1;;;15163:407:3:o;2555:508:75:-;2706:16;2765:3;:10;2746:8;:15;:29;2738:83;;;;-1:-1:-1;;;2738:83:75;;28337:2:107;2738:83:75;;;28319:21:107;28376:2;28356:18;;;28349:30;28415:34;28395:18;;;28388:62;28486:11;28466:18;;;28459:39;28515:19;;2738:83:75;28135:405:107;2738:83:75;2832:30;2879:8;:15;2865:30;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2865:30:75;;2832:63;;2911:9;2906:120;2930:8;:15;2926:1;:19;2906:120;;;2985:30;2995:8;3004:1;2995:11;;;;;;;;:::i;:::-;;;;;;;3008:3;3012:1;3008:6;;;;;;;;:::i;:::-;;;;;;;2985:9;:30::i;:::-;2966:13;2980:1;2966:16;;;;;;;;:::i;:::-;;;;;;;;;;:49;2947:3;;;:::i;:::-;;;2906:120;;7141:2070:3;7344:18;1102:22:1;:20;:22::i;:::-;6959:14:3::1;6976:49;-1:-1:-1::0;;;;;;;;;;;3426:19:18;6976:47:3::1;:49::i;:::-;6959:66:::0;-1:-1:-1;7039:10:3::1;-1:-1:-1::0;;;;;7039:20:3;::::1;;7035:49;;7068:16;::::0;-1:-1:-1;;;7068:16:3;;-1:-1:-1;;;;;16788:55:107;;7068:16:3::1;::::0;::::1;16770:74:107::0;16743:18;;7068:16:3::1;16624:226:107::0;7035:49:3::1;7378:9:::2;::::0;::::2;::::0;768:8:17;3788:61;:66;7374:300:3::2;;7457:9;::::0;::::2;::::0;:65:::2;::::0;-1:-1:-1;;;7457:65:3;;;7546:36;-1:-1:-1;;;;;7457:30:3::2;::::0;7546:36:::2;::::0;7457:65:::2;::::0;7488:10:::2;::::0;7457:3;;7505:6;;7513:8;;;;7457:65:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;7457:125:3::2;;7436:228;;7622:27;;-1:-1:-1::0;;;7622:27:3::2;;;;;;;;;;;7436:228;7684:9;7696:10;:3;:8;:10::i;:::-;7684:22;;7716:33;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7716:33:3::2;7781:326;7819:278;;;;;;;;7870:10;-1:-1:-1::0;;;;;7819:278:3::2;;;;;7909:6;:16;;;7819:278;;;;;;7954:6;:16;;;7819:278;;;;;;8004:32;:6;:21;;;:30;:32::i;:::-;7819:278;;::::0;;8067:15:::2;::::0;::::2;::::0;7819:278:::2;;;::::0;;::::2;::::0;-1:-1:-1;7781:9:3;;;:5:::2;:9:::0;;;-1:-1:-1;7781:9:3;;;:24:::2;:326::i;:::-;7759:348:::0;;-1:-1:-1;7759:348:3;-1:-1:-1;8118:36:3::2;8143:3:::0;7759:348;8118:24:::2;:36::i;:::-;8193:26:::0;;:30;8189:133:::2;;8281:26:::0;;8263:13;;-1:-1:-1;;;;;8243:34:3::2;8281:26;8243:34:::0;;;:19:::2;:34;::::0;;;;:64;;;;::::2;::::0;;8189:133:::2;8339:26;::::0;::::2;::::0;:30;8335:133:::2;;8427:26;::::0;;::::2;::::0;8409:13;;::::2;::::0;-1:-1:-1;;;;;8389:34:3::2;;::::0;;;:19:::2;:34:::0;;;;;;;:64;;;;::::2;::::0;;8335:133:::2;8485:22;::::0;::::2;::::0;:26;8481:141:::2;;8585:22;::::0;;::::2;::::0;8555:9:::2;::::0;::::2;::::0;-1:-1:-1;;;;;8531:35:3;;::::2;;::::0;;;:15:::2;:35;::::0;;;;;;8567:13;;8531:50;;::::2;::::0;;;;;;;;;;:76;;;;::::2;::::0;;8481:141:::2;8639:22;::::0;::::2;::::0;:26;8635:141:::2;;8739:22;::::0;::::2;::::0;8709:9:::2;::::0;::::2;::::0;-1:-1:-1;;;;;8685:35:3;;::::2;;::::0;;;:15:::2;:35;::::0;;;;;;;8721:13;;::::2;::::0;8685:50;;::::2;::::0;;;;;;:76;;;;::::2;::::0;;8635:141:::2;8800:9;::::0;::::2;::::0;837:8:17;3965:60;:65;8796:304:3::2;;8878:9;::::0;::::2;::::0;:71:::2;::::0;-1:-1:-1;;;8878:71:3;;;8973:35;-1:-1:-1;;;;;8878:29:3::2;::::0;8973:35:::2;::::0;8878:71:::2;::::0;8908:10:::2;::::0;8878:3;;8925:6;;8933:5;;8940:8;;;;8878:71:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;8878:130:3::2;;8857:233;;9048:27;;-1:-1:-1::0;;;9048:27:3::2;;;;;;;;;;;8857:233;9146:16:::0;;9164::::2;::::0;::::2;::::0;9182:21:::2;::::0;;::::2;::::0;9115:89;;9134:10:::2;::::0;9130:2;;9115:89:::2;::::0;::::2;::::0;30823:1:107;30812:21;;;30794:40;;30870:21;;;;30865:2;30850:18;;30843:49;30923:2;30908:18;;30901:34;;;;30782:2;30767:18;;30602:339;9115:89:3::2;;;;;;;;7364:1847;;6949:153:::1;7141:2070:::0;;;;;;:::o;3704:1557::-;3872:7;;;;3842:10;;848:7:13;137:8;822:22;;;:33;3868:55:3;;3910:13;;-1:-1:-1;;;3910:13:3;;;;;;;;;;;3868:55;4041:15;;;;1719;4041:34;;;;;;4037:68;;;4084:21;;-1:-1:-1;;;4084:21:3;;;;;;;;;;;4037:68;1824:1;4119:34;;:3;:15;;;:34;;;4115:68;;;4162:21;;-1:-1:-1;;;4162:21:3;;;;;;;;;;;4115:68;4197:13;;4213;;;;-1:-1:-1;;;;;476:50:50;;;;;;4193:75:3;;;4235:33;;-1:-1:-1;;;4235:33:3;;;;;;;;;;;4193:75;4283:37;4312:3;:7;;;4283:3;:9;;;-1:-1:-1;;;;;4283:28:3;;;:37;;;;:::i;:::-;4278:96;;4363:9;;;;4329:45;;-1:-1:-1;;;4329:45:3;;-1:-1:-1;;;;;16788:55:107;;;4329:45:3;;;16770:74:107;16743:18;;4329:45:3;16624:226:107;4278:96:3;4389:9;;;;634:8:17;3448:56;:61;4385:256:3;;4447:9;;;;:67;;-1:-1:-1;;;4447:67:3;;;4518:32;-1:-1:-1;;;;;4447:26:3;;4518:32;;4447:67;;4474:10;;4447:3;;4491:12;;4505:8;;;;4447:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;4447:103:3;;4443:188;;4589:27;;-1:-1:-1;;;4589:27:3;;;;;;;;;;;4443:188;4651:9;4663:10;:3;:8;:10::i;:::-;4651:22;;4683:19;4705:23;4724:3;4705:18;:23::i;:::-;4683:45;;4738:15;4756:19;4771:3;4756:14;:19::i;:::-;4792:9;;;;:5;:9;;;;;4738:37;;-1:-1:-1;4792:58:3;;4813:12;4827;4738:37;4792:20;:58::i;:::-;4865:9;;;;4785:65;;-1:-1:-1;698:8:17;3616:55;:60;4861:297:3;;4939:9;;;;:72;;-1:-1:-1;;;4939:72:3;;;5035:31;-1:-1:-1;;;;;4939:25:3;;5035:31;;4939:72;;4965:10;;4939:3;;4982:12;;4996:4;;5002:8;;;;4939:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;4939:127:3;;4918:230;;5106:27;;-1:-1:-1;;;5106:27:3;;;;;;;;;;;4918:230;5203:3;:13;;;-1:-1:-1;;;;;5173:81:3;5188:3;:13;;;-1:-1:-1;;;;;5173:81:3;5184:2;5173:81;5218:3;:7;;;5227:3;:15;;;5244:3;:9;;;5173:81;;;;;;;32542:8:107;32530:21;;;;32512:40;;32599:1;32588:21;;;;32583:2;32568:18;;32561:49;-1:-1:-1;;;;;32646:55:107;32641:2;32626:18;;32619:83;32500:2;32485:18;;32301:407;5173:81:3;;;;;;;;3858:1403;;;3704:1557;;;;;;:::o;13047:374::-;13145:12;1102:22:1;:20;:22::i;:::-;6959:14:3::1;6976:49;-1:-1:-1::0;;;;;;;;;;;3426:19:18;6976:47:3::1;:49::i;:::-;6959:66:::0;-1:-1:-1;7039:10:3::1;-1:-1:-1::0;;;;;7039:20:3;::::1;;7035:49;;7068:16;::::0;-1:-1:-1;;;7068:16:3;;-1:-1:-1;;;;;16788:55:107;;7068:16:3::1;::::0;::::1;16770:74:107::0;16743:18;;7068:16:3::1;16624:226:107::0;7035:49:3::1;-1:-1:-1::0;;;;;13194:20:3;::::2;13169:22;13194:20:::0;;;:10:::2;:20;::::0;;;;;;13247:24:::2;::::0;:22:::2;:24::i;:::-;-1:-1:-1::0;;;;;13224:20:3;::::2;;::::0;;;:10:::2;:20;::::0;;;;:47;;;13288:37:::2;::::0;13311:14;;13288:37:::2;:::i;:::-;13281:44;;13371:43;13385:8;13397:15;:4;:13;:15::i;:::-;13395:18;;;:::i;13371:43::-;13159:262;6949:153:::1;13047:374:::0;;;:::o;5300:626::-;5362:19;-1:-1:-1;;;;;;;;;;;3426:19:18;5460:25:3;3426:19:18;5474:10:3;5460:13;:25::i;:::-;5612:44;;-1:-1:-1;;;5612:44:3;;5626:10;;5612:38;;:44;;5651:4;;;;5612:44;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5612:44:3;;;;;;;;;;;;:::i;:::-;5603:53;-1:-1:-1;;;;;;;;;;;;;3426:19:18;2002:3;1998:18;;;5746:1:3;5725:22;5721:199;;5767:8;-1:-1:-1;;;;;5767:33:3;;5763:66;;5809:20;;-1:-1:-1;;;5809:20:3;;;;;;;;;;;5763:66;5843:21;:8;5859:1;;5843:15;:21::i;:::-;5721:199;;;5895:14;:8;:12;:14::i;:::-;5383:543;5300:626;;;;:::o;3627:454:0:-;3744:23;3801:5;;-1:-1:-1;;;;;3801:5:0;3787:10;:19;;;;:67;;-1:-1:-1;3832:21:0;;-1:-1:-1;;;;;3832:21:0;3810:10;:44;;3787:67;3783:95;;;3863:15;;-1:-1:-1;;;3863:15:0;;;;;;;;;;;3783:95;3908:11;;3907:54;;3955:6;3907:54;;;-1:-1:-1;;;;;3923:29:0;;;;;;:19;:29;;;;;;3907:54;-1:-1:-1;;;;;3971:29:0;;;;;;:19;:29;;;;;:48;;3889:72;;-1:-1:-1;3889:72:0;;3971:29;;;:48;;3889:72;;3971:48;:::i;:::-;;;;-1:-1:-1;4029:45:0;;-1:-1:-1;;;;;;4029:17:0;;4047:9;4058:15;4029:17;:45::i;:::-;3627:454;;;;;:::o;3131:153:75:-;3225:52;719:10:80;3258:8:75;3268;3225:18;:52::i;:::-;3131:153;;:::o;14740:229:3:-;14800:18;14821:19;14836:3;14821:14;:19::i;:::-;14800:40;;14850:9;14862:10;:3;:8;:10::i;:::-;14882:9;;;;:5;:9;;;;;14850:22;;-1:-1:-1;14882:34:3;;14904:11;14882:21;:34::i;:::-;14931:31;;27522:8:107;27510:21;;27492:40;;14946:2:3;;14931:31;;27480:2:107;27465:18;14931:31:3;27348:190:107;13937:534:3;14088:6;14114:10;14136:4;14114:27;14110:61;;14150:21;;-1:-1:-1;;;14150:21:3;;;;;;;;;;;14110:61;14267:9;14262:128;14278:14;;;14262:128;;;14317:58;14333:30;14356:3;;14360:1;14356:6;;;;;;;:::i;:::-;;;;;;;2237:8:18;2038:223;14333:30:3;14365:6;;14372:1;14365:9;;;;;;;:::i;:::-;;;;;;;14317:15;:58::i;:::-;14294:3;;14262:128;;;-1:-1:-1;;;;14416:48:3;13937:534;-1:-1:-1;;;;;;;;;13937:534:3:o;12794:214::-;1102:22:1;:20;:22::i;:::-;6959:14:3::1;6976:49;-1:-1:-1::0;;;;;;;;;;;3426:19:18;6976:47:3::1;:49::i;:::-;6959:66:::0;-1:-1:-1;7039:10:3::1;-1:-1:-1::0;;;;;7039:20:3;::::1;;7035:49;;7068:16;::::0;-1:-1:-1;;;7068:16:3;;-1:-1:-1;;;;;16788:55:107;;7068:16:3::1;::::0;::::1;16770:74:107::0;16743:18;;7068:16:3::1;16624:226:107::0;7035:49:3::1;12911:42:::2;12925:8;12935:17;:6;:15;:17::i;12911:42::-;12963:38;12969:2:::0;-1:-1:-1;;;;;12973:13:3;::::2;12990:6;12963:38;;;;;;;;;;;::::0;:5:::2;:38::i;3539:126::-:0;3599:14;823:21:18;2820:13;;2992:15;3632:26:3;2700:337:18;4087:479:0;4200:23;4261:10;4301:11;;4300:63;;4357:6;4300:63;;;-1:-1:-1;;;;;4316:28:0;;;;;;;:15;:28;;;;;;;;:38;;;;;;;;;;4300:63;4282:81;-1:-1:-1;;;;;;4386:23:0;;;4385:51;;4427:9;4385:51;;;4413:11;4385:51;-1:-1:-1;;;;;4447:28:0;;;;;;;:15;:28;;;;;;;;:38;;;;;;;;;;;:57;;4373:63;;-1:-1:-1;4489:15:0;;4447:38;;:28;:57;;4489:15;;4447:57;:::i;:::-;;;;-1:-1:-1;4514:45:0;;-1:-1:-1;;;;;;4514:17:0;;4532:9;4543:15;4514:17;:45::i;13619:312:3:-;13725:6;13747:10;13769:4;13747:27;13743:61;;13783:21;;-1:-1:-1;;;13783:21:3;;;;;;;;;;;13743:61;13814:50;13853:2;13858:5;13814:15;:50::i;:::-;-1:-1:-1;;;;13619:312:3;;;;;;;;:::o;3584:389:75:-;-1:-1:-1;;;;;3784:20:75;;719:10:80;3784:20:75;;:60;;-1:-1:-1;3808:36:75;3825:4;719:10:80;3351:166:75;:::i;3808:36::-;3763:148;;;;-1:-1:-1;;;3763:148:75;;34089:2:107;3763:148:75;;;34071:21:107;34128:2;34108:18;;;34101:30;34167:34;34147:18;;;34140:62;34238:11;34218:18;;;34211:39;34267:19;;3763:148:75;33887:405:107;3763:148:75;3921:45;3939:4;3945:2;3949;3953:6;3961:4;3921:17;:45::i;9250:2369:3:-;9443:18;1102:22:1;:20;:22::i;:::-;6959:14:3::1;6976:49;-1:-1:-1::0;;;;;;;;;;;3426:19:18;6976:47:3::1;:49::i;:::-;6959:66:::0;-1:-1:-1;7039:10:3::1;-1:-1:-1::0;;;;;7039:20:3;::::1;;7035:49;;7068:16;::::0;-1:-1:-1;;;7068:16:3;;-1:-1:-1;;;;;16788:55:107;;7068:16:3::1;::::0;::::1;16770:74:107::0;16743:18;;7068:16:3::1;16624:226:107::0;7035:49:3::1;9481:9:::2;::::0;::::2;::::0;896:8:17;4132:50;:55;9477:220:3::2;;9533:9;::::0;::::2;::::0;:55:::2;::::0;-1:-1:-1;;;9533:55:3;;;9592:26;-1:-1:-1;;;;;9533:20:3::2;::::0;9592:26:::2;::::0;9533:55:::2;::::0;9554:10:::2;::::0;9533:3;;9571:6;;9579:8;;;;9533:55:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;9533:85:3::2;;9529:158;;9645:27;;-1:-1:-1::0;;;9645:27:3::2;;;;;;;;;;;9529:158;9843:7;::::0;::::2;::::0;9810:19:::2;::::0;193:8:13;433:23;:28;9839:355:3::2;;9923:3;:9;;;-1:-1:-1::0;;;;;9896:45:3::2;;9942:10;9954:3;9959:6;9967:8;;9896:80;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9881:95;;10010:7;9994:12;:23;;;9990:49;;10026:13;;-1:-1:-1::0;;;10026:13:3::2;;;;;;;;;;;9990:49;9839:355;;;-1:-1:-1::0;10161:7:3::2;::::0;::::2;::::0;137:8:13;951:22;9839:355:3::2;-1:-1:-1::0;;;;;;;;10204:22:3::2;-1:-1:-1::0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10204:22:3;;10301:9:::2;10313:10;:3;:8;:10::i;:::-;10301:22;;10378:315;10406:277;;;;;;;;10445:12;10406:277;;;;;;10488:3;:15;;;10406:277;;;;;;10533:6;:17;;;10406:277;;;;;;10585:6;:22;;;10406:277;;;;10644:6;:24;;;-1:-1:-1::0;;;;;10406:277:3::2;;;::::0;10378:5:::2;:9;10384:2;10378:9;;;;;;;;;;;:14;;:315;;;;:::i;:::-;10333:360:::0;;-1:-1:-1;10333:360:3;;-1:-1:-1;10333:360:3;-1:-1:-1;10333:360:3;-1:-1:-1;10704:36:3::2;10729:3:::0;10333:360;10704:24:::2;:36::i;:::-;10823:18:::0;;10819:145:::2;;10935:14;10861:19;:70;10881:6;:17;;;:49;;10917:3;:13;;;10881:49;;;10901:13:::0;;10881:49:::2;-1:-1:-1::0;;;;;10861:70:3::2;::::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;10861:70:3;:88;;;;::::2;::::0;;10819:145:::2;10981:14:::0;;10977:153:::2;;11039:9;::::0;::::2;::::0;-1:-1:-1;;;;;11015:35:3::2;;::::0;;;:15:::2;:35;::::0;;;;11051:17;;11105:10;;11015:35;11051:49:::2;;11087:3;:13;;;11051:49;;;11071:13:::0;;11051:49:::2;-1:-1:-1::0;;;;;11015:86:3::2;::::0;;::::2;::::0;::::2;::::0;;;;;;-1:-1:-1;11015:86:3;:100;;;;::::2;::::0;;10977:153:::2;11154:9;::::0;::::2;::::0;954:8:17;4288:49;:54;11150:224:3::2;;11270:25;;;11205:90;;;:3;:9;;;-1:-1:-1::0;;;;;11205:19:3::2;;11225:10;11237:3;11242:6;11250:5;11257:8;;11205:61;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;;11205:90:3::2;;11201:163;;11322:27;;-1:-1:-1::0;;;11322:27:3::2;;;;;;;;;;;11201:163;11423:10;11407:2:::0;11389:223:::2;11447:15;:5:::0;2002:3:18;1998:18;;1832:200;11447:15:3::2;11476:5:::0;11505:18:::2;::::0;;::::2;::::0;11537:15:::2;::::0;::::2;::::0;11566:10:::2;::::0;::::2;::::0;11389:223;;::::2;::::0;;;11566:10;11590:12;;36607:2:107;36596:22;;;36578:41;;36655:22;;;;36650:2;36635:18;;36628:50;-1:-1:-1;;;;;36714:55:107;;;;36709:2;36694:18;;36687:83;-1:-1:-1;;;;;36806:47:107;36801:2;36786:18;;36779:75;36902:1;36891:21;36885:3;36870:19;;36863:50;36962:8;36950:21;;;;36944:3;36929:19;;36922:50;36565:3;36550:19;;36301:677;11389:223:3::2;;;;;;;;9467:2152;;;;;6949:153:::1;9250:2369:::0;;;;;;:::o;873:124:1:-;940:4;-1:-1:-1;;;;;949:8:1;932:25;;928:62;;966:24;;-1:-1:-1;;;966:24:1;;;;;;;;;;;928:62;873:124::o;3043:218:18:-;3112:7;3131:15;3210:1;3190:17;:8;2002:3;1998:18;;1832:200;3190:17;:21;;-1:-1:-1;823:21:18;-1:-1:-1;;;;;3238:16:18;;2820:13;2992:15;3238:16;2700:337;1238:149:21;1290:8;1331:16;1318:30;;;1310:39;;;;;;-1:-1:-1;1377:1:21;1238:149::o;5932:699:3:-;6011:5;:10;;6020:1;6011:10;6007:23;;5932:699;;:::o;6007:23::-;-1:-1:-1;;;;;;;;;;;3426:19:18;6040:21:3;6124:24;3426:19:18;6124:22:3;:24::i;:::-;-1:-1:-1;;;;;6175:21:3;;;6158:14;6175:21;;;:13;:21;;;;;;;;:31;;;;;;;;;;;;6107:41;;-1:-1:-1;6230:15:3;;;;;6175:31;6230:15;:::i;:::-;6216:29;-1:-1:-1;6284:8:3;6256:25;6351:9;;;6347:219;;6380:57;6396:17;:8;2002:3:18;1998:18;;1832:200;6396:17:3;6380:8;;-1:-1:-1;;6415:21:3;;6380:15;:57::i;:::-;6347:219;;;6462:7;6473:1;6462:12;6458:108;;6494:57;6510:17;:8;2002:3:18;1998:18;;1832:200;6510:17:3;6494:8;;6549:1;6529:21;;6494:15;:57::i;:::-;-1:-1:-1;;;;;;6586:21:3;;;;;;;:13;:21;;;;;;;;:31;;;;;;;;;;;;;;:38;-1:-1:-1;;;5932:699:3:o;1098:1975:50:-;1344:12;-1:-1:-1;;;;;1370:17:50;;1366:1701;;1546:1;1543;1540;1537;1529:6;1525:2;1518:5;1513:35;1502:46;;1581:7;1576:43;;1597:22;;-1:-1:-1;;;1597:22:50;;;;;;;;;;;1576:43;1366:1701;;;1787:4;1781:11;-1:-1:-1;;;1918:1:50;1911:77;2015:2;2012:1;2005:13;2075:6;2071:2;2064:18;2826:2;2823:1;2819:2;2816:1;2813;2803:8;2796:5;2791:38;2446:16;2439:24;2433:2;2415:16;2412:24;2408:1;2404;2398:8;2395:15;2391:46;2388:76;2164:687;2133:718;;2882:1;2876:4;2869:15;2948:10;2942:4;2935:24;;3019:7;3014:42;;3035:21;;-1:-1:-1;;;3035:21:50;;;;;;;;;;;2303:121:3;2363:18;2400:5;:17;2406:10;:3;:8;:10::i;:::-;2400:17;;;;;;;;;;;2393:24;;2303:121;;;:::o;23731:595:19:-;23854:15;;;;23820:18;;-1:-1:-1;;;;;23854:15:19;:20;;23850:59;;23883:26;;-1:-1:-1;;;23883:26:19;;;;;;;;;;;23850:59;23927:54;23942:18;:7;:16;:18::i;:::-;23962;:7;:16;:18::i;:::-;-1:-1:-1;;;;;419:81:49;403:3;399:18;;;;396:105;;205:304;23927:54:19;23919:62;-1:-1:-1;24019:11:19;;24015:141;;24125:15;;;;24080:61;;24096:7;;-1:-1:-1;;;272:35:14;-1:-1:-1;;;;;24125:15:19;24080;:61::i;:::-;24050:26;;;:91;;;;;;;24015:141;24173:11;;24169:141;;24279:15;;;;24234:61;;24250:7;;-1:-1:-1;;;272:35:14;-1:-1:-1;;;;;24279:15:19;24234;:61::i;:::-;24204:26;;;:91;;;;;;;23731:595;;;;;:::o;6719:200:3:-;6826:13;;6812:45;;6841:15;:5;2002:3:18;1998:18;;1832:200;6812:45:3;6867;6881:3;:13;;;6896:15;:5;2237:8:18;2038:223;1069:1025:0;1251:21;;1140:19;;;;;;-1:-1:-1;;;;;1251:21:0;1243:44;1239:849;;1545:18;1533:9;:30;1529:71;;;1572:28;;-1:-1:-1;;;1572:28:0;;;;;;;;;;;1529:71;1618:21;;:71;;-1:-1:-1;;;1618:71:0;;-1:-1:-1;;;;;1618:21:0;;;;:41;;1665:18;;1618:71;;1685:3;;1618:71;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1618:71:0;;;;;;;;-1:-1:-1;;1618:71:0;;;;;;;;;;;;:::i;:::-;;;1614:364;;;1800:19;-1:-1:-1;;1800:25:0;1823:2;1800:25;;;;;;-1:-1:-1;1873:27:0;;1614:364;1991:34;2009:15;1991:17;:34::i;:::-;2039:38;2057:19;2039:17;:38::i;215:136:52:-;276:6;334:7;323:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;313:30;;;;;;294:50;;215:136;;;:::o;5767:202:19:-;5856:23;;-1:-1:-1;;;;;5856:23:19;:10;:28;5852:61;;5893:20;;-1:-1:-1;;;5893:20:19;;;;;;;;;;;5852:61;5924:38;;;;;;-1:-1:-1;;;5924:38:19;;;;;;;;5767:202::o;6068:1045:75:-;6288:7;:14;6274:3;:10;:28;6266:81;;;;-1:-1:-1;;;6266:81:75;;38036:2:107;6266:81:75;;;38018:21:107;38075:2;38055:18;;;38048:30;38114:34;38094:18;;;38087:62;38185:10;38165:18;;;38158:38;38213:19;;6266:81:75;37834:404:107;6266:81:75;-1:-1:-1;;;;;6365:16:75;;6357:66;;;;-1:-1:-1;;;6357:66:75;;38445:2:107;6357:66:75;;;38427:21:107;38484:2;38464:18;;;38457:30;38523:34;38503:18;;;38496:62;-1:-1:-1;;;38574:18:107;;;38567:35;38619:19;;6357:66:75;38243:401:107;6357:66:75;719:10:80;6434:16:75;6547:411;6571:3;:10;6567:1;:14;6547:411;;;6602:10;6615:3;6619:1;6615:6;;;;;;;;:::i;:::-;;;;;;;6602:19;;6635:14;6652:7;6660:1;6652:10;;;;;;;;:::i;:::-;;;;;;;;;;;;6677:19;6699:13;;;:9;:13;;;;;;-1:-1:-1;;;;;6699:19:75;;;;;;;;;;;;6652:10;;-1:-1:-1;6740:21:75;;;;6732:76;;;;-1:-1:-1;;;6732:76:75;;38851:2:107;6732:76:75;;;38833:21:107;38890:2;38870:18;;;38863:30;38929:34;38909:18;;;38902:62;-1:-1:-1;;;38980:18:107;;;38973:40;39030:19;;6732:76:75;38649:406:107;6732:76:75;6850:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6850:19:75;;;;;;;;;;6872:20;;;6850:42;;6920:17;;;;;;;:27;;6872:20;;6850:13;6920:27;;6872:20;;6920:27;:::i;:::-;;;;;;;;6588:370;;;6583:3;;;;:::i;:::-;;;6547:411;;;;7003:2;-1:-1:-1;;;;;6973:47:75;6997:4;-1:-1:-1;;;;;6973:47:75;6987:8;-1:-1:-1;;;;;6973:47:75;;7007:3;7012:7;6973:47;;;;;;;:::i;:::-;;;;;;;;7031:75;7067:8;7077:4;7083:2;7087:3;7092:7;7101:4;7031:35;:75::i;:::-;6256:857;6068:1045;;;;;:::o;652:107:21:-;750:1;731:20;;;;;;723:29;;;;;;652:107;;;:::o;7134:5562:19:-;7248:19;7269:22;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7269:22:19;7311:23;;-1:-1:-1;;;;;7311:23:19;:10;:28;7307:61;;7348:20;;-1:-1:-1;;;7348:20:19;;;;;;;;;;;7307:61;7379:46;7390:6;:16;;;7408:6;:16;;;7379:10;:46::i;:::-;-1:-1:-1;;;;;;;;7436:17:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7436:17:19;;7608:21;;;;:26;;;7604:1169;;7729:64;7740:4;7746:6;:16;;;7764:6;:21;;;7787:5;7729:10;:64::i;:::-;-1:-1:-1;;;;;7654:139:19;7675:30;;;7654:139;;;;;7903:16;;;;7921:21;;;;7886:63;;7897:4;;7944;7886:10;:63::i;:::-;-1:-1:-1;;;;;7811:138:19;7832:30;;;;7811:138;;;;;;;7812:18;;;7811:138;7972:21;;;-1:-1:-1;7972:25:19;;;;;;7968:502;;;8021:27;8051:52;8084:6;:18;;;8051:32;:52::i;:::-;8021:82;;8162:19;-1:-1:-1;;;;;8129:52:19;:5;:30;;;-1:-1:-1;;;;;8129:52:19;;8125:153;;;8238:16;;;;8216:39;;-1:-1:-1;;;8216:39:19;;2478:1:107;2467:21;;;;8216:39:19;;;2449:40:107;2422:18;;8216:39:19;2307:188:107;8125:153:19;8336:19;-1:-1:-1;;;;;8303:52:19;:5;:30;;;-1:-1:-1;;;;;8303:52:19;;8299:153;;;8412:16;;;;;8390:39;;-1:-1:-1;;;8390:39:19;;2478:1:107;2467:21;;;;8390:39:19;;;2449:40:107;2422:18;;8390:39:19;2307:188:107;8299:153:19;7999:471;7968:502;8492:18;;8488:127;;;8559:16;;;;8577:18;;;;8534:62;;:15;;;;:24;:62::i;:::-;8636:5;:18;;;8632:127;;;8703:16;;;;8721:18;;;;8678:62;;:15;;;;:24;:62::i;:::-;8862:60;8881:4;8887:6;:16;;;8905:6;:16;;;8862:18;:60::i;:::-;8816:26;;;8787:135;;;8788:26;;;8787:135;;;9055:21;;;;;8981:12;;-1:-1:-1;8995:16:19;;;;9013;;;;;1450:45:20;;37176:15:107;;;;-1:-1:-1;;37172:53:107;1450:45:20;;;37160:66:107;37260:3;37256:16;;;37242:12;;;37235:38;37303:16;;;37289:12;;;37282:38;1450:45:20;;;;;;;;;37336:12:107;;;;1450:45:20;;1440:56;;;;;;;;;-1:-1:-1;1435:62:20;;;8962:14:19;;;1435:62:20;;;;;;;8962:184:19;;1435:62:20;;8962:75:19;:184::i;:::-;8937:209;;;;;;;;9249:1;9225:6;:21;;;:25;;;9221:276;;;9274:18;;9270:98;;;9316:33;9326:4;9332:6;:16;;;30057;;;;;;;;:10;;;;:16;;;;;30050:23;;;;;;;;;;;29980:100;9316:33;9389:5;:18;;;9385:98;;;9447:16;;;;;30057;;;;;;;;:10;;;:16;;;;;30050:23;;;;;;;;;;;9431:33;-1:-1:-1;9521:21:19;;;;:26;;;9517:2205;;9585:16;;;;9567:15;;:34;;;;-1:-1:-1;;;9567:15:19;;;;;;:34;9563:2149;;;9862:385;:6;9891:356;9931:267;:256;9990:45;10018:6;:16;;;9990:27;:45::i;:::-;10065;10093:6;:16;;;10065:27;:45::i;:::-;10140:6;:21;;;9931:29;:256::i;:::-;:265;:267::i;:::-;403:3:49;399:18;;205:304;9891:356:19;9862:385;:::i;:::-;9853:394;;9563:2149;;;10290:16;;;;10272:15;;:34;;;;-1:-1:-1;;;10272:15:19;;;;;;:34;10268:1444;;;10463:23;;10516:16;;;;10335:495;;:6;;10364:466;;10404:189;;:178;;-1:-1:-1;;;;;10463:23:19;;10488:45;;:27;:45::i;10404:189::-;10619;:178;10678:45;10706:6;:16;;;10678:27;:45::i;:::-;10725:23;;10750:21;;;;-1:-1:-1;;;;;10725:23:19;;;;10619:29;:178::i;10335:495::-;10326:504;;10890:1;10866:6;:21;;;:25;;;:166;;11010:21;;;;10985:14;;;;:47;;11010:21;-1:-1:-1;;;;;10985:14:19;:47;:::i;:::-;10866:166;;;10940:6;:21;;;10939:22;;;:::i;:::-;10914:14;;;;:48;;;-1:-1:-1;;;;;10914:14:19;:48;:::i;:::-;10849:14;;;:183;;-1:-1:-1;;10849:183:19;-1:-1:-1;;;;;10849:183:19;;;;;;;;;;10268:1444;;;11312:385;:6;11341:356;11381:1;11408:267;:256;11467:45;11495:6;:16;;;11467:27;:45::i;:::-;11542;11570:6;:16;;;11542:27;:45::i;:::-;11617:6;:21;;;11408:29;:256::i;11312:385::-;11303:394;;10268:1444;11760:1;11736:6;:21;;;:25;;;:68;;;;-1:-1:-1;11780:19:19;;-1:-1:-1;;;11780:19:19;;5748:5;5734:19;11765:39;;11736:68;11732:802;;;11925:36;11948:4;11954:6;11925:22;:36::i;:::-;11918:43;;12300:223;:6;12325:198;12391:31;:4;:20;;;:29;:31::i;:::-;12361:27;:4;:16;;;:25;:27::i;:::-;:61;;;;:::i;:::-;12474:31;:4;:20;;;:29;:31::i;:::-;12444:27;:4;:16;;;:25;:27::i;:::-;:61;;;;:::i;12300:223::-;12291:232;;11732:802;12622:67;:6;12631:58;12646:20;:9;:18;:20::i;:::-;12668;:9;:18;:20::i;12631:58::-;12622:67;:::i;:::-;12613:76;;7297:5399;;7134:5562;;;;;:::o;2816:531:17:-;2892:4;-1:-1:-1;;;;;3041:27:17;;;:299;;-1:-1:-1;;;3205:4:17;-1:-1:-1;;;;;3189:43:17;;;:65;;;-1:-1:-1;193:8:13;433:23;;:28;;3236:18:17;3189:89;;;-1:-1:-1;259:8:13;557:25;;:30;;3258:20:17;3189:137;;;-1:-1:-1;329:8:13;687:29;;:34;;3041:299:17;;3302:24;3041:299;;;193:8:13;433:23;;:28;;;3083:44:17;;-1:-1:-1;259:8:13;557:25;;:30;3083:44:17;:73;;;;-1:-1:-1;;329:8:13;687:29;:34;;3034:306:17;-1:-1:-1;2816:531:17:o;2268:555:0:-;2374:9;;;;2335:15;;-1:-1:-1;;;;;2366:32:0;;2362:455;;2442:3;:9;;;-1:-1:-1;;;;;2418:47:0;;2466:3;2418:52;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;2418:52:0;;;;;;;;-1:-1:-1;;2418:52:0;;;;;;;;;;;;:::i;:::-;;;2414:393;;;2539:7;;;;2518:18;;259:8:13;557:25;2539:39:0;;2577:1;2539:39;;;2566:8;2539:39;2621:7;;;;2518:60;;-1:-1:-1;2596:22:0;;329:8:13;687:29;2621:40:0;;2660:1;2621:40;;;2652:5;2621:40;2596:65;;2700:29;;;;2758:25;;;;;2268:555;-1:-1:-1;;;2268:555:0:o;5093:410:19:-;5257:23;;5227:10;;-1:-1:-1;;;;;5257:23:19;:28;5253:65;;5294:24;;-1:-1:-1;;;5294:24:19;;;;;;;;;;;5253:65;5336:41;5364:12;5336:27;:41::i;:::-;5401:95;;;;;;;;-1:-1:-1;;;;;5401:95:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5388:108;;-1:-1:-1;;5388:108:19;;;;-1:-1:-1;;;5388:108:19;;;;;;;;;;;;;-1:-1:-1;;;5388:108:19;;;-1:-1:-1;;;;5388:108:19;;;;;-1:-1:-1;;;5388:108:19;;;;;;;;;;-1:-1:-1;5401:95:19;5093:410::o;3079:271:50:-;3144:7;-1:-1:-1;;;;;3167:17:50;;3163:181;;-1:-1:-1;3209:21:50;;3079:271;-1:-1:-1;3079:271:50:o;3163:181::-;3268:65;;-1:-1:-1;;;3268:65:50;;3327:4;3268:65;;;16770:74:107;-1:-1:-1;;;;;3268:50:50;;;;;16743:18:107;;3268:65:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;947:586:18:-;1080:15;1098:17;:8;2002:3;1998:18;;1832:200;1098:17;1080:35;-1:-1:-1;823:21:18;-1:-1:-1;;;;;1172:19:18;;;1424:6;1172:19;1403:28;1458:58;1487:8;1484:1;1474:11;;1487:8;2267:427;2490:3;2486:17;;;-1:-1:-1;;;;;2525:91:18;;2462:172;;-1:-1:-1;;;;;;;;;;;;2462:172:18;750:21;2648:30;2420:268;2267:427;;;:::o;1627:199::-;1682:15;1700:17;:8;2002:3;1998:18;;1832:200;1700:17;1682:35;-1:-1:-1;1751:58:18;1780:8;-1:-1:-1;;1767:11:18;;1780:8;1751:15;:58::i;12074:323:75:-;12224:8;-1:-1:-1;;;;;12215:17:75;:5;-1:-1:-1;;;;;12215:17:75;;12207:71;;;;-1:-1:-1;;;12207:71:75;;40708:2:107;12207:71:75;;;40690:21:107;40747:2;40727:18;;;40720:30;40786:34;40766:18;;;40759:62;40857:11;40837:18;;;40830:39;40886:19;;12207:71:75;40506:405:107;12207:71:75;-1:-1:-1;;;;;12288:25:75;;;;;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;:46;;-1:-1:-1;;12288:46:75;;;;;;;;;;12349:41;;1201::107;;;12349::75;;1174:18:107;12349:41:75;;;;;;;12074:323;;;:::o;5975:186:19:-;6056:23;;-1:-1:-1;;;;;6056:23:19;:10;:28;6052:61;;6093:20;;-1:-1:-1;;;6093:20:19;;;;;;;;;;;6052:61;6124:30;;;;;;-1:-1:-1;;;6124:30:19;-1:-1:-1;;;;6124:30:19;;;;;;5975:186::o;13427::3:-;13506:45;13520:4;-1:-1:-1;;;;;13527:13:3;;13544:6;13506:5;:45::i;:::-;13561;13575:8;13587:17;:6;:15;:17::i;8395:553:75:-;-1:-1:-1;;;;;8542:16:75;;8534:62;;;;-1:-1:-1;;;8534:62:75;;41118:2:107;8534:62:75;;;41100:21:107;41157:2;41137:18;;;41130:30;41196:34;41176:18;;;41169:62;-1:-1:-1;;;41247:18:107;;;41240:31;41288:19;;8534:62:75;40916:397:107;8534:62:75;719:10:80;8649:102:75;719:10:80;8607:16:75;8692:2;8696:21;8714:2;8696:17;:21::i;:::-;8719:25;8737:6;8719:17;:25::i;8649:102::-;8762:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;8762:17:75;;;;;;;;;:27;;8783:6;;8762:13;:27;;8783:6;;8762:27;:::i;:::-;;;;-1:-1:-1;;8804:52:75;;;41492:25:107;;;41548:2;41533:18;;41526:34;;;-1:-1:-1;;;;;8804:52:75;;;;8837:1;;8804:52;;;;;;41465:18:107;8804:52:75;;;;;;;8867:74;8898:8;8916:1;8920:2;8924;8928:6;8936:4;8867:30;:74::i;4925:797::-;-1:-1:-1;;;;;5106:16:75;;5098:66;;;;-1:-1:-1;;;5098:66:75;;38445:2:107;5098:66:75;;;38427:21:107;38484:2;38464:18;;;38457:30;38523:34;38503:18;;;38496:62;-1:-1:-1;;;38574:18:107;;;38567:35;38619:19;;5098:66:75;38243:401:107;5098:66:75;719:10:80;5217:96:75;719:10:80;5248:4:75;5254:2;5258:21;5276:2;5258:17;:21::i;5217:96::-;5324:19;5346:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5346:19:75;;;;;;;;;;5383:21;;;;5375:76;;;;-1:-1:-1;;;5375:76:75;;38851:2:107;5375:76:75;;;38833:21:107;38890:2;38870:18;;;38863:30;38929:34;38909:18;;;38902:62;-1:-1:-1;;;38980:18:107;;;38973:40;39030:19;;5375:76:75;38649:406:107;5375:76:75;5485:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5485:19:75;;;;;;;;;;5507:20;;;5485:42;;5547:17;;;;;;;:27;;5507:20;;5485:13;5547:27;;5507:20;;5547:27;:::i;:::-;;;;-1:-1:-1;;5590:46:75;;;41492:25:107;;;41548:2;41533:18;;41526:34;;;-1:-1:-1;;;;;5590:46:75;;;;;;;;;;;;;;41465:18:107;5590:46:75;;;;;;;5647:68;5678:8;5688:4;5694:2;5698;5702:6;5710:4;5647:30;:68::i;:::-;5088:634;;4925:797;;;;;:::o;15800:7845:19:-;-1:-1:-1;;;;;;;;15894:19:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15894:19:19;;;;16001:6;:22;;;16027:1;16001:27;15997:64;;16037:24;;-1:-1:-1;;;16037:24:19;;;;;;;;;;;15997:64;16072:36;;;;;;;;;;-1:-1:-1;;;;;16072:36:19;;;;;-1:-1:-1;;;16072:36:19;;;;;;;;;-1:-1:-1;;;16072:36:19;;;;;;;;;;;-1:-1:-1;;;16072:36:19;;;;;;;;;;;:23;16122:28;16118:61;;16159:20;;-1:-1:-1;;;16159:20:19;;;;;;;;;;;16118:61;16193:6;:17;;;16189:737;;;16258:10;:23;;;-1:-1:-1;;;;;16230:51:19;:6;:24;;;-1:-1:-1;;;;;16230:51:19;;16226:173;;16334:23;;16359:24;;;;16308:76;;-1:-1:-1;;;16308:76:19;;-1:-1:-1;;;;;41824:15:107;;;16308:76:19;;;41806:34:107;41876:15;;41856:18;;;41849:43;41718:18;;16308:76:19;41571:327:107;16226:173:19;1106:10:25;-1:-1:-1;;;;;16416:51:19;:6;:24;;;-1:-1:-1;;;;;16416:51:19;;16412:144;;16516:24;;;;16494:47;;-1:-1:-1;;;16494:47:19;;-1:-1:-1;;;;;16788:55:107;;;16494:47:19;;;16770:74:107;16743:18;;16494:47:19;16624:226:107;16412:144:19;16189:737;;;16618:10;:23;;;-1:-1:-1;;;;;16590:51:19;:6;:24;;;-1:-1:-1;;;;;16590:51:19;;16586:173;;16694:23;;16719:24;;;;16668:76;;-1:-1:-1;;;16668:76:19;;-1:-1:-1;;;;;41824:15:107;;;16668:76:19;;;41806:34:107;41876:15;;41856:18;;;41849:43;41718:18;;16668:76:19;41571:327:107;16586:173:19;1286:49:25;-1:-1:-1;;;;;16776:51:19;:6;:24;;;-1:-1:-1;;;;;16776:51:19;;16772:144;;16876:24;;;;16854:47;;-1:-1:-1;;;16854:47:19;;-1:-1:-1;;;;;16788:55:107;;;16854:47:19;;;16770:74:107;16743:18;;16854:47:19;16624:226:107;16772:144:19;16961:353;;;;;;;;17001:14;;;;-1:-1:-1;;;;;17001:14:19;16961:353;;17042:17;;;;16936:22;;16961:353;;;;;17042:139;;17151:23;;;;17140:40;;;;17042:139;;;17117:2;17090:23;;;;5619:2;5604:17;;;17079:40;;;;:::i;:::-;16961:353;;;;;;17204:6;:17;;;:99;;17277:19;;;;17266:36;;;;17204:99;;;17236:19;;;;17259:2;;5619;5604:17;;;17225:36;;;;:::i;:::-;16961:353;;;;;16936:378;;17325:15;17368:1;17343:6;:22;;;:26;17325:44;;17388:355;;;;;;;;17438:6;:22;;;17388:355;;;;17492:1;17388:355;;;;17521:10;:23;;;-1:-1:-1;;;;;17388:355:19;;;;;17564:10;:15;;;17388:355;;;;;;17614:6;:17;;;:73;;17662:4;:25;;;17614:73;;;17634:4;:25;;;17614:73;17388:355;;17712:20;;-1:-1:-1;;;;;17388:355:19;;;;;;-1:-1:-1;;;;;;;;17712:20:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17380:363:19;;-1:-1:-1;17754:28:19;17915:30;;:35;;;;:85;;;17976:6;:24;;;-1:-1:-1;;;;;17954:46:19;:5;:18;;;-1:-1:-1;;;;;17954:46:19;;;17915:85;17908:4757;;;18041:18;;;;;-1:-1:-1;;;;;18016:43:19;;;18175:10;;;;18187:18;;;;18207:17;;;;18126:99;;:15;;;;18175:10;18126:48;:99::i;:::-;18074:151;;18090:16;;;18074:151;;;18075:13;;;18074:151;;;-1:-1:-1;;;18353:216:19;;;-1:-1:-1;;18410:13:19;;;:33;18353:216;;;926:9:25;-1:-1:-1;;926:9:25;:::i;:::-;18468:33:19;;:4;:13;;;:33;;;18464:105;;;926:9:25;-1:-1:-1;;926:9:25;:::i;:::-;18521:33:19;;:13;;;:33;18464:105;18654:42;18682:4;:13;;;18654:27;:42::i;:::-;-1:-1:-1;;;;;18630:66:19;:21;;;:66;18942:18;;;;;19000:17;;;;18900:459;;18942:18;19000:167;;19143:6;:24;;;-1:-1:-1;;;;;19119:48:19;:4;:21;;;-1:-1:-1;;;;;19119:48:19;;19000:167;;;19068:6;:24;;;-1:-1:-1;;;;;19044:48:19;:4;:21;;;-1:-1:-1;;;;;19044:48:19;;19000:167;18978:258;;19215:4;:21;;;18978:258;;;19188:6;:24;;;18978:258;19254:15;;;;19287:30;;19335:10;;18900:24;:459::i;:::-;18882:14;;;18830:529;18866:14;;;18830:529;18851:13;;;18830:529;-1:-1:-1;;;;;18830:529:19;18831:18;;;18830:529;19374:624;;;;19570:43;19587:4;:14;;;19571:4;:13;;;:30;19570:41;:43::i;:::-;19536:77;;;;;19699:14;;;;:25;;:23;:25::i;:::-;19674:5;:22;;;:50;;;;:::i;:::-;19649:22;;;:75;19374:624;;;19829:25;:4;:14;;;:23;:25::i;:::-;19795:59;;;;;19957:14;;;;19941:13;;;;19940:43;;19941:30;;;:::i;:::-;19940:41;:43::i;:::-;19915:5;:22;;;:68;;;;:::i;:::-;19890:22;;;:93;19374:624;20133:17;;;;:21;;;20129:417;;20259:13;20292:5;:17;;;20275:34;;:4;:14;;;:34;;;;:::i;:::-;20445:14;;;:23;;;;;;;20490;;;;;-1:-1:-1;20129:417:19;20564:13;;;;:17;;;20560:325;;20692:13;20725:5;:13;;;20708:30;;:4;:14;;;:30;;;;:::i;:::-;20788:14;;;:23;;;;;;;20833:19;;;;;-1:-1:-1;20560:325:19;20944:15;;;;-1:-1:-1;;;;;20944:19:19;;20940:205;;21044:68;21060:4;:14;;;-1:-1:-1;;;21096:5:19;:15;;;-1:-1:-1;;;;;21044:68:19;:15;:68::i;:::-;21015:25;;;:97;;;;;;;20940:205;21240:4;:21;;;-1:-1:-1;;;;;21218:43:19;:5;:18;;;-1:-1:-1;;;;;21218:43:19;;21214:1441;;21356:4;:16;;;21352:885;;;21396:19;21418:307;21458:4;21488;:13;;;21528:6;:17;;;:73;;21576:4;:25;;;21528:73;;;21548:5;:25;;;21528:73;21629:6;:17;;;:73;;21677:5;:25;;;30814:16;;;;30731:19;30814:16;;;:10;;;;:16;;;;;;30896:26;;;;;30873:49;;;30844:78;;;30988:26;;;;;30965:49;;;30936:78;;;31043:17;-1:-1:-1;;;31043:17:19;;;;;30586:491;21629:73;21649:4;:25;;;30814:16;;;;30731:19;30814:16;;;:10;;;;:16;;;;;;30896:26;;;;;30873:49;;;30844:78;;;30988:26;;;;;30965:49;;;30936:78;;;31043:17;-1:-1:-1;;;31043:17:19;;;;;30586:491;21418:307;21396:329;;21959:6;:17;;;21955:51;;;21993:13;;21955:51;22084:1;22069:12;:16;;;:149;;22205:12;22179:5;:15;;;:39;;;;:::i;:::-;22069:149;;;22138:13;22139:12;22138:13;:::i;:::-;22112:5;:15;;;:40;;;;:::i;:::-;-1:-1:-1;;;;;22051:167:19;:15;;;:167;-1:-1:-1;21352:885:19;22300:6;:17;;;:53;;22340:4;:13;;;22300:53;;;22336:1;22320:4;:13;;;:17;22300:53;22287:66;;:10;;;:66;17908:4757;;21214:1441;22418:4;:22;;;-1:-1:-1;;;;;22396:44:19;:5;:18;;;-1:-1:-1;;;;;22396:44:19;;22392:263;;22593:47;22621:5;:18;;;22593:27;:47::i;22392:263::-;17908:4757;;;22721:18;;;;22741:10;;;;22675:77;;-1:-1:-1;;22675:77:19;-1:-1:-1;;;22675:77:19;;;;;;;;-1:-1:-1;;22675:77:19;;-1:-1:-1;;;;;22675:77:19;;;;;;22833:15;;;;22809:20;;-1:-1:-1;;;;;22809:39:19;;;;;;22805:77;;22867:15;;;;22850:14;;;:32;;-1:-1:-1;;22850:32:19;-1:-1:-1;;;;;22850:32:19;;;;;;;;;22805:77;22933:6;:17;;;22929:185;;;22994:25;;;;22966;;;:53;22929:185;;;23078:25;;;;23050;;;:53;22929:185;23173:10;23152:31;;:6;:17;;;:31;;;23148:481;;23212:177;23248:68;23274:5;:30;;;23249:6;:22;;;:55;23248:66;:68::i;:::-;23338:33;:5;:22;;;:31;:33::i;23212:177::-;23203:186;;23148:481;;;23437:177;23473:33;:5;:22;;;:31;:33::i;:::-;23528:68;23554:5;:30;;;23529:6;:22;;;:55;23528:66;:68::i;23437:177::-;23428:186;;23148:481;15987:7658;;;;15800:7845;;;;;;;:::o;742:4029:16:-;824:14;1213:5;;;824:14;-1:-1:-1;;1217:1:16;1213;1385:20;1458:5;1454:2;1451:13;1443:5;1439:2;1435:14;1431:34;1422:43;;;1618:5;1604:11;:19;1596:28;;;;;;1705:5;1714:1;1705:10;1701:161;;-1:-1:-1;1776:23:16;;;;-1:-1:-1;1834:13:16;;1701:161;2162:17;2246:11;2243:1;2240;2233:25;2638:12;2654:15;;;2653:31;;2790:22;;;;;3665:1;3646;:15;;3645:21;;3908:17;;;3904:21;;3897:28;3970:17;;;3966:21;;3959:28;4033:17;;;4029:21;;4022:28;4096:17;;;4092:21;;4085:28;4159:17;;;4155:21;;4148:28;4223:17;;;4219:21;;;4212:28;3202:12;;;;3198:23;;;3223:1;3194:31;2391:20;;;2380:32;;;3261:12;;;;2438:21;;;;2934:16;;;;3252:21;;;;4716:11;;;;;-1:-1:-1;;742:4029:16;;;;;:::o;2910:502:0:-;2977:8;;;;2973:433;;3001:11;3015:8;3021:2;3015:3;:8;:::i;:::-;3001:22;-1:-1:-1;3051:8:0;3058:1;3051:8;;;;;3225:9;;;;;;:48;;-1:-1:-1;678:1:0;3238:35;;;;3225:48;3224:104;;;-1:-1:-1;3279:9:0;;;;;;;:48;;-1:-1:-1;678:1:0;3292:35;;;;3279:48;3203:193;;;3368:13;;-1:-1:-1;;;3368:13:0;;;;;;;;;;;3203:193;2987:419;;2973:433;2910:502;:::o;14282:792:75:-;-1:-1:-1;;;;;14514:13:75;;1087:20:79;1133:8;14510:558:75;;14549:79;;-1:-1:-1;;;14549:79:75;;-1:-1:-1;;;;;14549:43:75;;;;;:79;;14593:8;;14603:4;;14609:3;;14614:7;;14623:4;;14549:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14549:79:75;;;;;;;;-1:-1:-1;;14549:79:75;;;;;;;;;;;;:::i;:::-;;;14545:513;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;14934:6;14927:14;;-1:-1:-1;;;14927:14:75;;;;;;;;:::i;14545:513::-;;;14981:62;;-1:-1:-1;;;14981:62:75;;44886:2:107;14981:62:75;;;44868:21:107;44925:2;44905:18;;;44898:30;44964:34;44944:18;;;44937:62;45035:22;45015:18;;;45008:50;45075:19;;14981:62:75;44684:416:107;14545:513:75;-1:-1:-1;;;;;;14707:60:75;;-1:-1:-1;;;14707:60:75;14703:157;;14791:50;;-1:-1:-1;;;14791:50:75;;45307:2:107;14791:50:75;;;45289:21:107;45346:2;45326:18;;;45319:30;45385:34;45365:18;;;45358:62;-1:-1:-1;;;45436:18:107;;;45429:38;45484:19;;14791:50:75;45105:404:107;4765:322:19;4859:9;4846:22;;:9;:22;;;4842:72;;4877:37;;-1:-1:-1;;;4877:37:19;;45709:1:107;45698:21;;;4877:37:19;;;45680:40:107;45756:21;;;45736:18;;;45729:49;45653:18;;4877:37:19;45514:270:107;4842:72:19;-1:-1:-1;;4928:29:19;;;;;4924:73;;;4966:31;;-1:-1:-1;;;4966:31:19;;2478:1:107;2467:21;;;4966:31:19;;;2449:40:107;2422:18;;4966:31:19;2307:188:107;4924:73:19;926:9:25;-1:-1:-1;;926:9:25;:::i;:::-;5011:29:19;;:9;:29;;;5007:73;;;5049:31;;-1:-1:-1;;;5049:31:19;;2478:1:107;2467:21;;;5049:31:19;;;2449:40:107;2422:18;;5049:31:19;2307:188:107;26752:2333:19;26954:16;;;;26873:12;26954:16;;;:10;;;:16;;;;;27285;;26873:12;;26954:16;-1:-1:-1;;;;;27431:29:19;;;27444:3;27556:19;27617:18;;;;;-1:-1:-1;27617:141:19;;27712:46;27743:14;27712:20;:46;:::i;:::-;27617:141;;;27681:15;27682:14;27681:15;:::i;:::-;27650:47;;:20;:47;:::i;:::-;-1:-1:-1;;;;;27780:24:19;;;;27810:25;;;;;27779:57;;;;;;-1:-1:-1;27595:163:19;;-1:-1:-1;27834:1:19;27851:25;27847:355;;28016:15;;-1:-1:-1;;;28016:15:19;;;;;;28008:23;;;;;28004:188;;28080:25;;;;;28051:26;;;:54;28152:25;;;;;28123:26;;;:54;28004:188;28327:19;28349:5;:81;;28395:35;28416:14;28395:18;:35;:::i;:::-;28349:81;;;28357:35;28378:14;28357:18;:35;:::i;:::-;28327:103;;29024:12;29019:3;29015:22;28876:19;28769:286;28667:9;28643:426;28449:630;;;;26752:2333;;;;;;;:::o;29478:315::-;29562:7;29725:21;:35;;29745:1;29718:43;;;;29666:19;;;-1:-1:-1;;;;;29638:48:19;29718:43;29637:125;;;;:::i;:::-;;;29478:315;-1:-1:-1;;29478:315:19:o;1395:401:24:-;1538:11;1531:18;;:4;:18;;;;;;;:::i;:::-;;:23;;;1527:69;;1563:33;;-1:-1:-1;;;1563:33:24;;45709:1:107;45698:21;;;1563:33:24;;;45680:40:107;45756:21;;;45736:18;;;45729:49;45653:18;;1563:33:24;45514:270:107;1527:69:24;1645:13;1660:12;1676:28;1692:11;1685:18;;:4;:18;;;;;;;:::i;:::-;;1066:9;;1074:1;1066:9;;;;1117:3;1110:10;;;;935:204;1676:28;1733:1;1758:13;;;1718:12;1758:13;;;;;;;;;;;;:21;;1733:11;;;;;;;;1758:21;;;;;;-1:-1:-1;;;;1395:401:24:o;24812:1201:19:-;25040:21;;;;24941:28;25040:21;;;:10;;;:21;;;;;;25096;;;;;;;;25147:15;;24941:28;;;;25040:21;;25096;;-1:-1:-1;;;25147:15:19;;;;;;25201:23;;25197:800;;;25297:5;:27;;;25267:5;:27;;;:57;25244:80;;25395:5;:27;;;25365:5;:27;;;:57;25342:80;;25197:800;;;25462:9;25447:24;;:11;:24;;;25443:554;;25544:5;:27;;;25514:5;:27;;;:57;25491:80;;25642:5;:27;;;25612:5;:27;;;:57;25589:80;;25443:554;;;25809:5;:27;;;25779:5;:27;;;25751:4;:25;;;:55;:85;25708:128;;25955:5;:27;;;25925:5;:27;;;25897:4;:25;;;:55;:85;25854:128;;25443:554;25005:1008;;;24812:1201;;;;;;:::o;2144:1350:20:-;2366:24;;;;;;;;;;-1:-1:-1;;;;;2366:24:20;;;;;;;;;;;;;;;;;;;;;;2318:17;;;;;2436:19;;;;;;2432:385;;2475:15;;-1:-1:-1;;;;;2475:20:20;:15;:20;2471:60;;2504:27;;-1:-1:-1;;;2504:27:20;;;;;;;;;;;2471:60;-1:-1:-1;2605:15:20;;2432:385;;;2684:1;2667:14;:18;;;:139;;2765:15;;:41;;2791:14;;2765:41;:::i;:::-;2667:139;;;2730:15;2731:14;2730:15;:::i;:::-;2704;;:42;;;;:::i;:::-;2651:155;;2432:385;2956:137;3012:5;:30;;;2989:20;:53;3044:5;:15;;;-1:-1:-1;;;;;2956:137:20;-1:-1:-1;;;2956:15:20;:137::i;:::-;2944:149;;3119:137;3175:5;:30;;;3152:20;:53;3207:5;:15;;;-1:-1:-1;;;;;3119:137:20;-1:-1:-1;;;3119:15:20;:137::i;:::-;3107:149;;3312:14;:19;;3330:1;3312:19;3308:55;;3333:30;;-1:-1:-1;;3333:30:20;-1:-1:-1;;;;;3333:30:20;;;;;3308:55;-1:-1:-1;;3373:29:20;;;:52;;;;3435:29;;;;:52;2144:1350;;;-1:-1:-1;2144:1350:20:o;2136:2753:25:-;2199:20;2255:15;2280:1;2273:4;:8;;;:57;;2324:4;2317:12;;2273:57;;;2300:4;2293:12;;2292:13;;2273:57;2255:75;-1:-1:-1;926:9:25;2348:35;;2344:61;;;2392:13;;-1:-1:-1;;;2392:13:25;;;;;;;;;;;2344:61;2420:13;2452:7;2462:3;2452:13;2469:1;2452:18;:93;;-1:-1:-1;;;2452:93:25;;;2473:34;2452:93;2420:125;;;-1:-1:-1;2573:3:25;2563:13;;:18;2559:83;;2600:34;2592:42;2639:3;2591:51;2559:83;2670:3;2660:13;;:18;2656:83;;2697:34;2689:42;2736:3;2688:51;2656:83;2767:3;2757:13;;:18;2753:83;;2794:34;2786:42;2833:3;2785:51;2753:83;2864:4;2854:14;;:19;2850:84;;2892:34;2884:42;2931:3;2883:51;2850:84;2962:4;2952:14;;:19;2948:84;;2990:34;2982:42;3029:3;2981:51;2948:84;3060:4;3050:14;;:19;3046:84;;3088:34;3080:42;3127:3;3079:51;3046:84;3158:4;3148:14;;:19;3144:84;;3186:34;3178:42;3225:3;3177:51;3144:84;3256:5;3246:15;;:20;3242:85;;3285:34;3277:42;3324:3;3276:51;3242:85;3355:5;3345:15;;:20;3341:85;;3384:34;3376:42;3423:3;3375:51;3341:85;3454:5;3444:15;;:20;3440:85;;3483:34;3475:42;3522:3;3474:51;3440:85;3553:5;3543:15;;:20;3539:85;;3582:34;3574:42;3621:3;3573:51;3539:85;3652:6;3642:16;;:21;3638:86;;3682:34;3674:42;3721:3;3673:51;3638:86;3752:6;3742:16;;:21;3738:86;;3782:34;3774:42;3821:3;3773:51;3738:86;3852:6;3842:16;;:21;3838:86;;3882:34;3874:42;3921:3;3873:51;3838:86;3952:6;3942:16;;:21;3938:86;;3982:34;3974:42;4021:3;3973:51;3938:86;4052:7;4042:17;;:22;4038:86;;4083:33;4075:41;4121:3;4074:50;4038:86;4152:7;4142:17;;:22;4138:85;;4183:32;4175:40;4220:3;4174:49;4138:85;4251:7;4241:17;;:22;4237:83;;4282:30;4274:38;4317:3;4273:47;4237:83;4348:7;4338:17;;:22;4334:78;;4379:25;4371:33;4409:3;4370:42;4334:78;4438:1;4431:4;:8;;;4427:47;;;4469:5;-1:-1:-1;;4449:25:25;;;;;:::i;:::-;;4441:33;;4427:47;4849:7;4840:5;:17;:22;:30;;4869:1;4840:30;;;4865:1;4840:30;4823:48;;4833:2;4824:5;:11;;4823:48;4800:72;;2231:2652;;2136:2753;;;:::o;9690:432:22:-;9826:14;9899:1;9887:9;:13;;;:218;;10023:82;:71;10039:13;10054;10077:9;10089:4;10023:15;:71::i;:82::-;9887:218;;;9920:84;:73;9936:13;9951;9975:9;9974:10;;9987:5;9920:15;:73::i;:84::-;9919:85;;9880:225;9690:432;-1:-1:-1;;;;9690:432:22:o;511:157:49:-;570:12;597:68;626:11;:1;2002:3:18;1998:18;;1832:200;626:11:49;612;:1;2002:3:18;1998:18;;1832:200;612:11:49;:25;;;;:::i;:::-;653:1;639;:11;2038:223:18;10472:432:22;10608:14;10681:1;10669:9;:13;;;:218;;10805:82;:71;10821:13;10836;10859:9;10871:4;10805:15;:71::i;10669:218::-;10702:84;:73;10718:13;10733;10757:9;10756:10;;10769:5;10702:15;:73::i;12702:1335:19:-;12822:22;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12822:22:19;12860:14;12877:16;:6;2002:3:18;1998:18;;1832:200;12877:16:19;12947:36;;;;;;;;;;-1:-1:-1;;;;;12947:36:19;;;;-1:-1:-1;;;12947:36:19;;;;;;;;;-1:-1:-1;;;12947:36:19;;;;;;;;;;-1:-1:-1;;;12947:36:19;;;;;;;;;;;;12860:33;;-1:-1:-1;12920:6:19;;12947:36;;-1:-1:-1;;5748:5:19;5734:19;13114:29;;;;:::i;:::-;13096:47;-1:-1:-1;13171:29:19;13199:1;13171:29;;;;13153:15;13233:33;13264:2;5748:5;5734:19;;13233:33;:::i;:::-;13211:55;-1:-1:-1;13298:33:19;13330:1;13298:33;;;;13276:19;13346:11;;;;;:27;;;;;13372:1;13361:8;:12;;;13346:27;13342:105;;;13408:28;;;13416:8;13417:7;13416:8;:::i;:::-;13408:28;;;;:::i;:::-;-1:-1:-1;;;;;13389:47:19;:16;;;:47;13342:105;13470:1;13460:7;:11;;;:27;;;;;13486:1;13475:8;:12;;;13460:27;13456:105;;;13522:28;;;13530:8;13531:7;13530:8;:::i;:::-;13522:28;;;;:::i;:::-;-1:-1:-1;;;;;13503:47:19;:16;;;:47;13456:105;13660:1;13645:12;:16;;;:40;;;;;13684:1;13665:4;:16;;;:20;13645:40;13641:179;;;13743:12;13724:31;;:4;:16;;;:31;;;;:::i;:::-;13701:54;;;13769:16;;;:40;;;;13701:54;;13769:40;:::i;:::-;;;-1:-1:-1;13641:179:19;13849:1;13834:12;:16;;;:40;;;;;13873:1;13854:4;:16;;;:20;13834:40;13830:179;;;13932:12;13913:31;;:4;:16;;;:31;;;;:::i;:::-;13890:20;;;:54;;;13958:16;;;:40;;;;13890:54;;13958:40;:::i;:::-;;;-1:-1:-1;13830:179:19;14019:11;;;;;;;;;12702:1335;;;;:::o;670:157:49:-;729:12;756:68;785:11;:1;2002:3:18;1998:18;;1832:200;785:11:49;771;:1;2002:3:18;1998:18;;1832:200;771:11:49;:25;;;;:::i;:::-;798;812:1;798;:25;:::i;5308:4864:25:-;5381:10;1106;-1:-1:-1;;;;;5534:29:25;;;;:63;;-1:-1:-1;1286:49:25;-1:-1:-1;;;;;5567:30:25;;;;5534:63;5530:94;;;5606:18;;-1:-1:-1;;;5606:18:25;;;;;;;;;;;5530:94;5654:27;5679:2;5654:27;;;;-1:-1:-1;;;;;5800:41:25;;5797:1;5793:49;5898:9;;;5983:18;5977:25;;5974:1;5970:33;6059:9;;;6144:10;6138:17;;6135:1;6131:25;6212:9;;;6297:6;6291:13;;6288:1;6284:21;6361:9;;;6446:4;6440:11;;6437:1;6433:19;;;6508:9;;;6593:3;6587:10;;6584:1;6580:18;6654:9;;;6733:10;;;6730:1;6726:18;;;6800:9;;;;6872:10;;;6027;;6180;;;6329;;;6476;6622;;;6768;6906;6955:3;6948:10;;6944:83;;6980:3;6974;:9;6964:5;:20;;6960:24;;6944:83;;;7023:3;7017;:9;7007:5;:20;;7003:24;;6944:83;7138:9;;;7133:3;7129:19;;;7174:11;;;;7254:9;;;;7331;;7322:19;;;7367:11;;;7447:9;7524;;7515:19;;;7560:11;;;7640:9;7717;;7708:19;;;7753:11;;;7833:9;7910;;7901:19;;;7946:11;;;8026:9;8103;;8094:19;;;8139:11;;;8219:9;8296;;8287:19;;;8332:11;;;8412:9;8489;;8480:19;;;8525:11;;;8605:9;8682;;8673:19;;;8718:11;;;8798:9;8875;;8866:19;;;8911:11;;;8991:9;9068;;9059:19;;;9104:11;;;9184:9;9261;;9252:19;;;9297:11;;;9377:9;9454;;9445:19;;;9490:11;;;;9570:9;;;;9647;;9638:19;;;;;7138:9;-1:-1:-1;;7058:17:25;;7080:2;7057:25;7221:10;;;;;;;7211:21;7414:10;;;;;;;7404:21;;;;7607:10;;;;;;;7597:21;;;;7800:10;;;;;;;7790:21;;;;7993:10;;;;;;;7983:21;;;;8186:10;;;;;;;8176:21;;;;8379:10;;;;;;;8369:21;8572:10;;;;;;;8562:21;8765:10;;;;;;;8755:21;8958:10;;;;;;;8948:21;9151:10;;;;;;;9141:21;9344:10;;;;;;;9334:21;9537:10;;;;;;;9527:21;9730:10;;;;;;;9720:21;9800:24;9792:32;;-1:-1:-1;;9880:53:25;;7072:3;9879:62;;;;9994:39;9978:55;;9977:64;;10064:17;;;;;;;;;:91;;10124:12;-1:-1:-1;;;;;10094:42:25;:26;10113:6;10094:18;:26::i;:::-;-1:-1:-1;;;;;10094:42:25;;;:61;;10148:7;10064:91;;10094:61;10139:6;10064:91;;;10084:7;10064:91;10057:98;5308:4864;-1:-1:-1;;;;;;;;;5308:4864:25:o;10248:630:75:-;-1:-1:-1;;;;;10370:18:75;;10362:66;;;;-1:-1:-1;;;10362:66:75;;46466:2:107;10362:66:75;;;46448:21:107;46505:2;46485:18;;;46478:30;46544:34;46524:18;;;46517:62;-1:-1:-1;;;46595:18:107;;;46588:33;46638:19;;10362:66:75;46264:399:107;10362:66:75;719:10:80;10481:102:75;719:10:80;10512:4:75;10439:16;10530:21;10548:2;10530:17;:21::i;:::-;10553:25;10571:6;10553:17;:25::i;:::-;-1:-1:-1;;10481:102:75;;;;;;;;;-1:-1:-1;10481:102:75;;-1:-1:-1;;;6068:1045:75;10481:102;10594:19;10616:13;;;:9;:13;;;;;;;;-1:-1:-1;;;;;10616:19:75;;;;;;;;;;10653:21;;;;10645:70;;;;-1:-1:-1;;;10645:70:75;;46870:2:107;10645:70:75;;;46852:21:107;46909:2;46889:18;;;46882:30;46948:34;46928:18;;;46921:62;-1:-1:-1;;;46999:18:107;;;46992:34;47043:19;;10645:70:75;46668:400:107;10645:70:75;10749:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;10749:19:75;;;;;;;;;;;;10771:20;;;10749:42;;10817:54;;41492:25:107;;;41533:18;;;41526:34;;;10749:19:75;;10817:54;;;;;;41465:18:107;10817:54:75;;;;;;;10352:526;;10248:630;;;:::o;15080:193::-;15199:16;;;15213:1;15199:16;;;;;;;;;15146;;15174:22;;15199:16;;;;;;;;;;;;-1:-1:-1;15199:16:75;15174:41;;15236:7;15225:5;15231:1;15225:8;;;;;;;;:::i;:::-;;;;;;;;;;:18;15261:5;15080:193;-1:-1:-1;;15080:193:75:o;13551:725::-;-1:-1:-1;;;;;13758:13:75;;1087:20:79;1133:8;13754:516:75;;13793:72;;-1:-1:-1;;;13793:72:75;;-1:-1:-1;;;;;13793:38:75;;;;;:72;;13832:8;;13842:4;;13848:2;;13852:6;;13860:4;;13793:72;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13793:72:75;;;;;;;;-1:-1:-1;;13793:72:75;;;;;;;;;;;;:::i;:::-;;;13789:471;;;;:::i;:::-;-1:-1:-1;;;;;;13914:55:75;;-1:-1:-1;;;13914:55:75;13910:152;;13993:50;;-1:-1:-1;;;13993:50:75;;45307:2:107;13993:50:75;;;45289:21:107;45346:2;45326:18;;;45319:30;45385:34;45365:18;;;45358:62;-1:-1:-1;;;45436:18:107;;;45429:38;45484:19;;13993:50:75;45105:404:107;2534:2087:24;2718:10;2730:16;2782;2808:11;2801:18;;:4;:18;;;;;;;:::i;:::-;;2782:37;;2844:1;2837:4;:8;;;:35;;;;;2856:11;2849:18;;:4;:18;;;;;;;:::i;:::-;;:23;;;;2837:35;2833:53;;;-1:-1:-1;;2874:12:24;2833:53;2940:3;2936:1669;;;1066:9;;;;1074:1;1066:9;;;3140:1;3187:13;;;2964;3187;;;;;;;;;;;1117:3;1110:10;;;3140:11;;;;;;;3119:33;;-1:-1:-1;;3119:33:24;3187:20;;;3362:11;;;;-1:-1:-1;1066:9:24;;1110:10;;3362:11;3512:194;;3695:11;3683:6;3676:14;;3657:10;:34;3656:50;3512:194;;;3622:11;3582:34;3609:6;3582:26;:34::i;:::-;3573:6;:43;3566:51;;3547:10;:71;3546:87;3512:194;3505:201;;2945:776;;;;2936:1669;;;3900:1;3887:14;;;1066:9;;1074:1;1066:9;;;4052:13;;;3847;4052;;;;;;;;;;;1117:3;1110:10;;;4000:11;;;;;;;-1:-1:-1;;3999:17:24;3997:20;4052;;;4219:11;;;;-1:-1:-1;1066:9:24;;1110:10;3997:20;4219:11;4369:221;;4579:11;4567:6;4549:15;:24;4542:32;;4519:10;4532:1;4519:14;:56;4518:72;4369:221;;;4484:11;4472:6;4434:35;4462:6;4434:27;:35::i;:::-;:44;4427:52;;4404:10;4417:1;4404:14;:76;4403:92;4369:221;4362:228;;3727:878;;;;2936:1669;2758:1857;2534:2087;;;;;;;:::o;1448:3347:23:-;1658:24;;;;-1:-1:-1;;;;;1792:41:23;;;;;;;;1862:20;;;;;;1897:1398;;1928:30;1961:61;1985:15;2009:7;2003:3;:13;1961:61;;2018:3;1961:15;:61::i;:::-;1928:94;;2051:10;:230;;2194:87;2224:19;2245:18;2265:9;2276:4;2194:29;:87::i;:::-;2051:230;;;2084:87;2114:18;2134:19;2155:9;2166:4;2084:29;:87::i;:::-;2040:241;;2329:8;2303:22;:34;2299:337;;2380:18;2361:37;;2299:337;;;2464:153;2529:19;2550:9;2561:22;2585:10;2464:39;:153::i;:::-;2445:172;;2299:337;1910:740;1897:1398;;;2686:10;:232;;2830:88;2860:19;2881:18;2901:9;2912:5;2830:29;:88::i;:::-;2686:232;;;2719:88;2749:18;2769:19;2790:9;2801:5;2719:29;:88::i;:::-;2674:244;;2969:9;2949:15;2948:16;;2940:38;2936:345;;3021:18;3002:37;;2936:345;;;3105:157;3171:19;3192:9;3212:15;3211:16;;3230:10;3105:40;:157::i;:::-;3086:176;;2936:345;-1:-1:-1;;;;;3320:38:23;;;;;;;3417:788;;;;3462:3;:14;;;;;3469:7;3462:14;:153;;3530:85;3560:16;3578:19;3599:9;3610:4;3530:29;:85::i;:::-;3462:153;;;3499:8;3462:153;3451:164;;3645:3;:15;;;;;3653:7;3652:8;3645:15;:156;;3715:86;3745:16;3763:19;3784:9;3795:5;3715:29;:86::i;:::-;3645:156;;;3683:9;3645:156;3633:168;;3417:788;;;3851:3;:14;;;;;3858:7;3851:14;:153;;3919:85;3949:19;3970:16;3988:9;3999:4;3919:29;:85::i;:::-;3851:153;;;3888:8;3851:153;3840:164;;4034:3;:15;;;;;4042:7;4041:8;4034:15;:156;;4104:86;4134:19;4155:16;4173:9;4184:5;4104:29;:86::i;:::-;4034:156;;;4072:9;4034:156;4022:168;;3417:788;4303:7;4302:8;:49;;;;;4335:15;4334:16;;4314:9;:37;4302:49;4298:125;;;4392:15;4391:16;;4371:37;;4298:125;4441:7;:49;;;;;4472:18;-1:-1:-1;;;;;4452:38:23;:16;-1:-1:-1;;;;;4452:38:23;;;4441:49;4437:342;;;4646:8;4627:15;4619:35;4607:47;;4437:342;;;4705:59;4731:8;4741:7;4705:59;;4756:7;4750:3;:13;4705:59;;:25;:59::i;:::-;4693:71;;4437:342;1750:3039;;;1448:3347;;;;;;;;;;:::o;924:141:21:-;976:8;1017:16;1004:1;:30;;996:39;;;;;7631:749:22;7782:15;7857:13;-1:-1:-1;;;;;7841:29:22;:13;-1:-1:-1;;;;;7841:29:22;;7837:98;;;7906:13;;7921;7837:98;7971:45;309:2:15;7971:45:22;;;;-1:-1:-1;;;;;8051:29:22;;;8030:50;;;8103:17;;8095:26;;;;;;8143:7;:220;;8350:13;-1:-1:-1;;;;;8293:70:22;:54;8309:10;8321;8333:13;-1:-1:-1;;;;;8293:54:22;:15;:54::i;:::-;:70;;;;;:::i;:::-;;8143:220;;;8169:105;8194:64;8220:10;8232;8244:13;-1:-1:-1;;;;;8194:64:22;:25;:64::i;:::-;8260:13;-1:-1:-1;;;;;8169:105:22;641:9:26;;;655;;652:16;;637:32;;492:207;8169:105:22;8136:227;7631:749;-1:-1:-1;;;;;;;7631:749:22:o;8838:502::-;8989:15;9040:13;-1:-1:-1;;;;;9024:29:22;:13;-1:-1:-1;;;;;9024:29:22;;9020:98;;;9089:13;;9104;9020:98;9136:7;:197;;9258:75;-1:-1:-1;;;;;9258:75:22;;9285:29;9301:13;9285;:29;:::i;:::-;-1:-1:-1;;;;;9258:75:22;-1:-1:-1;;;9258:15:22;:75::i;:::-;9136:197;;;9158:85;-1:-1:-1;;;;;9158:85:22;;9195:29;9211:13;9195;:29;:::i;:::-;-1:-1:-1;;;;;9158:85:22;-1:-1:-1;;;9158:25:22;:85::i;:::-;9129:204;8838:502;-1:-1:-1;;;;;8838:502:22:o;671:877:12:-;733:7;764:1;760;:5;752:14;;;;;;-1:-1:-1;;;805:1:12;:40;801:114;;871:3;865:9;;;;892:8;801:114;937:19;932:1;:24;928:96;;982:2;976:8;;;;1002:7;928:96;1046:11;1041:1;:16;1037:88;;1083:2;1077:8;;;;1103:7;1037:88;1147:7;1142:1;:12;1138:84;;1180:2;1174:8;;;;1200:7;1138:84;1244:5;1239:1;:10;1235:80;;1275:1;1269:7;;;;1294:6;1235:80;1337:4;1332:1;:9;1328:79;;1367:1;1361:7;;;;1386:6;1328:79;1429:3;1424:1;:8;1420:78;;1458:1;1452:7;;;;1477:6;1420:78;1520:3;1515:1;:8;1511:20;;1530:1;1525:6;671:877;;;:::o;2039:1072::-;2102:7;2133:1;2129;:5;2121:14;;;;;;-1:-1:-1;2174:3:12;-1:-1:-1;;;;;2195:21:12;;:25;2191:120;;-1:-1:-1;;2240:8:12;2191:120;;;2293:3;2287:9;;;;;2191:120;2332:16;2328:20;;:24;2324:117;;-1:-1:-1;;2372:7:12;2324:117;;;2424:2;2418:8;;;;;2324:117;2462:16;2458:20;;:24;2454:117;;-1:-1:-1;;2502:7:12;2454:117;;;2554:2;2548:8;;;;;2454:117;2592:16;2588:20;;:24;2584:117;;-1:-1:-1;;2632:7:12;2584:117;;;2684:2;2678:8;;;;;2584:117;2722:15;2718:19;;:23;2714:114;;-1:-1:-1;;2761:6:12;2714:114;;;2812:1;2806:7;;;;;2714:114;2849:3;2845:7;;:11;2841:102;;-1:-1:-1;;2876:6:12;2841:102;;;2927:1;2921:7;;;;;2841:102;2964:3;2960:7;;:11;2956:102;;-1:-1:-1;;2991:6:12;2956:102;;;3042:1;3036:7;;;;;2956:102;3079:3;3075:7;;:11;3071:23;;-1:-1:-1;;3088:6:12;2039:1072;;;:::o;5470:520:22:-;5624:16;5675:1;5664:8;-1:-1:-1;;;;;5664:12:22;;5656:21;;;;;;5707:1;5695:9;-1:-1:-1;;;;;5695:13:22;;5687:22;;;;;;5793:10;:190;;5907:76;5947:8;5957:9;5968:8;5978:4;5907:39;:76::i;5793:190::-;5818:74;5856:8;5866:9;5877:8;5887:4;5818:37;:74::i;6560:520::-;6716:16;6767:1;6756:8;-1:-1:-1;;;;;6756:12:22;;6748:21;;;;;;6799:1;6787:9;-1:-1:-1;;;;;6787:13:22;;6779:22;;;;;;6879:10;:194;;6997:76;7035:8;7045:9;7056;7067:5;6997:37;:76::i;6879:194::-;6904:78;6944:8;6954:9;6965;6976:5;6904:39;:78::i;5053:335:16:-;5145:14;5204:25;5211:1;5214;5217:11;5204:6;:25::i;:::-;5195:34;;5275:1;5260:11;5247:25;;;;;:::i;:::-;5257:1;5254;5247:25;:29;5243:129;;;-1:-1:-1;;5304:6:16;:26;5296:35;;;;;;5349:8;;5053:335;;;;;:::o;3819:1078:22:-;3978:7;4159:3;4155:736;;;4178:16;-1:-1:-1;;;;;4215:27:22;;;:172;;4335:52;4351:6;-1:-1:-1;;;4377:9:22;-1:-1:-1;;;;;4335:52:22;:15;:52::i;:::-;4215:172;;;4265:47;-1:-1:-1;;;;;4265:47:22;;309:2:15;4266:33:22;;;4265:47;:::i;:::-;4178:223;-1:-1:-1;4423:42:22;4424:28;4178:223;-1:-1:-1;;;;;4424:17:22;;:28;:::i;:::-;4423:40;:42::i;:::-;4416:49;;;;;4155:736;4496:16;-1:-1:-1;;;;;4533:27:22;;;:205;;4676:62;4702:6;-1:-1:-1;;;4728:9:22;-1:-1:-1;;;;;4676:62:22;:25;:62::i;:::-;4533:205;;;4583:70;309:2:15;4608:33:22;;;-1:-1:-1;;;;;4583:70:22;;641:9:26;;;655;;652:16;;637:32;;492:207;4583:70:22;4496:256;;4786:8;4775;-1:-1:-1;;;;;4775:19:22;;4767:28;;;;;;4860:19;4871:8;-1:-1:-1;;;;;4860:19:22;;;:::i;1426:1555::-;1583:7;1722:6;1732:1;1722:11;1718:32;;-1:-1:-1;1742:8:22;1735:15;;1718:32;1781:45;309:2:15;1781:45:22;;;;1837:1138;;;;-1:-1:-1;;;;;1925:50:22;;1936:17;;;;1957:6;1936:17;1957:6;1925:38;;;;:::i;:::-;;:50;1921:367;;2021:20;;;2067:25;;;2063:207;;2186:60;2212:10;2224:8;-1:-1:-1;;;;;2186:60:22;2234:11;2186:25;:60::i;:::-;2171:76;;;;;;;2063:207;1977:311;1921:367;-1:-1:-1;2381:70:22;2406:10;2444:6;2419:21;-1:-1:-1;;;;;2419:21:22;;2406:10;2419:21;:::i;:::-;2418:32;;;;:::i;:::-;641:9:26;;;655;;652:16;;637:32;;492:207;1837:1138:22;-1:-1:-1;;;;;2718:50:22;;2729:17;;;;2750:6;2729:17;2750:6;2718:38;;;;:::i;:::-;;:50;:74;;;;;2785:7;2772:10;:20;2718:74;2710:83;;;;;;2833:20;;;2878:72;:60;2833:10;-1:-1:-1;;;;;2878:60:22;;2833:20;2878:25;:60::i;357:111:21:-;459:1;-1:-1:-1;;;;;439:21:21;;;;431:30;;;;;14:154:107;-1:-1:-1;;;;;93:5:107;89:54;82:5;79:65;69:93;;158:1;155;148:12;173:315;241:6;249;302:2;290:9;281:7;277:23;273:32;270:52;;;318:1;315;308:12;270:52;357:9;344:23;376:31;401:5;376:31;:::i;:::-;426:5;478:2;463:18;;;;450:32;;-1:-1:-1;;;173:315:107:o;675:131::-;-1:-1:-1;;;;;;749:32:107;;739:43;;729:71;;796:1;793;786:12;811:245;869:6;922:2;910:9;901:7;897:23;893:32;890:52;;;938:1;935;928:12;890:52;977:9;964:23;996:30;1020:5;996:30;:::i;1253:160::-;1319:20;;1379:1;1368:20;;;1358:31;;1348:59;;1403:1;1400;1393:12;1418:484;1528:6;1536;1544;1552;1605:3;1593:9;1584:7;1580:23;1576:33;1573:53;;;1622:1;1619;1612:12;1573:53;1658:9;1645:23;1635:33;;1718:2;1707:9;1703:18;1690:32;1731:31;1756:5;1731:31;:::i;:::-;1781:5;-1:-1:-1;1805:36:107;1837:2;1822:18;;1805:36;:::i;:::-;1795:46;;1860:36;1892:2;1881:9;1877:18;1860:36;:::i;:::-;1850:46;;1418:484;;;;;;;:::o;2500:486::-;2607:6;2615;2623;2676:2;2664:9;2655:7;2651:23;2647:32;2644:52;;;2692:1;2689;2682:12;2644:52;2731:9;2718:23;2750:31;2775:5;2750:31;:::i;:::-;2800:5;-1:-1:-1;2857:2:107;2842:18;;2829:32;2870:33;2829:32;2870:33;:::i;:::-;2500:486;;2922:7;;-1:-1:-1;;;2976:2:107;2961:18;;;;2948:32;;2500:486::o;2991:180::-;3050:6;3103:2;3091:9;3082:7;3078:23;3074:32;3071:52;;;3119:1;3116;3109:12;3071:52;-1:-1:-1;3142:23:107;;2991:180;-1:-1:-1;2991:180:107:o;3176:250::-;3261:1;3271:113;3285:6;3282:1;3279:13;3271:113;;;3361:11;;;3355:18;3342:11;;;3335:39;3307:2;3300:10;3271:113;;;-1:-1:-1;;3418:1:107;3400:16;;3393:27;3176:250::o;3431:271::-;3473:3;3511:5;3505:12;3538:6;3533:3;3526:19;3554:76;3623:6;3616:4;3611:3;3607:14;3600:4;3593:5;3589:16;3554:76;:::i;:::-;3684:2;3663:15;-1:-1:-1;;3659:29:107;3650:39;;;;3691:4;3646:50;;3431:271;-1:-1:-1;;3431:271:107:o;3707:220::-;3856:2;3845:9;3838:21;3819:4;3876:45;3917:2;3906:9;3902:18;3894:6;3876:45;:::i;3932:247::-;3991:6;4044:2;4032:9;4023:7;4019:23;4015:32;4012:52;;;4060:1;4057;4050:12;4012:52;4099:9;4086:23;4118:31;4143:5;4118:31;:::i;4767:127::-;4828:10;4823:3;4819:20;4816:1;4809:31;4859:4;4856:1;4849:15;4883:4;4880:1;4873:15;4899:225;4985:4;4977:6;4973:17;5056:6;5044:10;5041:22;5020:18;5008:10;5005:34;5002:62;4999:88;;;5067:18;;:::i;:::-;5103:2;5096:22;-1:-1:-1;4899:225:107:o;5129:249::-;5239:2;5220:13;;-1:-1:-1;;5216:27:107;5204:40;;5274:18;5259:34;;5295:22;;;5256:62;5253:88;;;5321:18;;:::i;:::-;5357:2;5350:22;-1:-1:-1;;5129:249:107:o;5383:119::-;5468:8;5461:5;5457:20;5450:5;5447:31;5437:59;;5492:1;5489;5482:12;5507:967;5561:5;5609:4;5597:9;5592:3;5588:19;5584:30;5581:50;;;5627:1;5624;5617:12;5581:50;5660:2;5654:9;5702:4;5694:6;5690:17;5773:6;5761:10;5758:22;5737:18;5725:10;5722:34;5719:62;5716:88;;;5784:18;;:::i;:::-;5820:2;5813:22;5853:6;-1:-1:-1;5853:6:107;5883:23;;5915:33;5883:23;5915:33;:::i;:::-;5957:23;;6032:2;6017:18;;6004:32;6045:33;6004:32;6045:33;:::i;:::-;6106:2;6094:15;;6087:32;6171:2;6156:18;;6143:32;6184;6143;6184;:::i;:::-;6244:2;6232:15;;6225:32;6290:36;6322:2;6307:18;;6290:36;:::i;:::-;6285:2;6277:6;6273:15;6266:61;6379:3;6368:9;6364:19;6351:33;6393;6418:7;6393:33;:::i;:::-;6454:3;6442:16;;;;6435:33;5507:967;;-1:-1:-1;;5507:967:107:o;6479:347::-;6530:8;6540:6;6594:3;6587:4;6579:6;6575:17;6571:27;6561:55;;6612:1;6609;6602:12;6561:55;-1:-1:-1;6635:20:107;;6678:18;6667:30;;6664:50;;;6710:1;6707;6700:12;6664:50;6747:4;6739:6;6735:17;6723:29;;6799:3;6792:4;6783:6;6775;6771:19;6767:30;6764:39;6761:59;;;6816:1;6813;6806:12;6761:59;6479:347;;;;;:::o;6831:665::-;6954:6;6962;6970;6978;6986;7039:3;7027:9;7018:7;7014:23;7010:33;7007:53;;;7056:1;7053;7046:12;7007:53;7079:45;7116:7;7105:9;7079:45;:::i;:::-;7069:55;;7171:3;7160:9;7156:19;7143:33;7133:43;;7223:3;7212:9;7208:19;7195:33;7185:43;;7279:3;7268:9;7264:19;7251:33;7307:18;7299:6;7296:30;7293:50;;;7339:1;7336;7329:12;7293:50;7378:58;7428:7;7419:6;7408:9;7404:22;7378:58;:::i;:::-;6831:665;;;;-1:-1:-1;6831:665:107;;-1:-1:-1;7455:8:107;;7352:84;6831:665;-1:-1:-1;;;6831:665:107:o;7716:229::-;7801:6;7854:3;7842:9;7833:7;7829:23;7825:33;7822:53;;;7871:1;7868;7861:12;7822:53;7894:45;7931:7;7920:9;7894:45;:::i;8233:183::-;8293:4;8326:18;8318:6;8315:30;8312:56;;;8348:18;;:::i;:::-;-1:-1:-1;8393:1:107;8389:14;8405:4;8385:25;;8233:183::o;8421:724::-;8475:5;8528:3;8521:4;8513:6;8509:17;8505:27;8495:55;;8546:1;8543;8536:12;8495:55;8582:6;8569:20;8608:4;8631:43;8671:2;8631:43;:::i;:::-;8703:2;8697:9;8715:31;8743:2;8735:6;8715:31;:::i;:::-;8781:18;;;8873:1;8869:10;;;;8857:23;;8853:32;;;8815:15;;;;-1:-1:-1;8897:15:107;;;8894:35;;;8925:1;8922;8915:12;8894:35;8961:2;8953:6;8949:15;8973:142;8989:6;8984:3;8981:15;8973:142;;;9055:17;;9043:30;;9093:12;;;;9006;;8973:142;;;-1:-1:-1;9133:6:107;8421:724;-1:-1:-1;;;;;;8421:724:107:o;9150:186::-;9198:4;9231:18;9223:6;9220:30;9217:56;;;9253:18;;:::i;:::-;-1:-1:-1;9319:2:107;9298:15;-1:-1:-1;;9294:29:107;9325:4;9290:40;;9150:186::o;9341:508::-;9383:5;9436:3;9429:4;9421:6;9417:17;9413:27;9403:55;;9454:1;9451;9444:12;9403:55;9490:6;9477:20;9516:31;9544:2;9516:31;:::i;:::-;9576:2;9570:9;9588:31;9616:2;9608:6;9588:31;:::i;:::-;9643:2;9635:6;9628:18;9689:3;9682:4;9677:2;9669:6;9665:15;9661:26;9658:35;9655:55;;;9706:1;9703;9696:12;9655:55;9770:2;9763:4;9755:6;9751:17;9744:4;9736:6;9732:17;9719:54;9817:1;9793:15;;;9810:4;9789:26;9782:37;;;;-1:-1:-1;9797:6:107;9341:508;-1:-1:-1;;;9341:508:107:o;9854:1071::-;10008:6;10016;10024;10032;10040;10093:3;10081:9;10072:7;10068:23;10064:33;10061:53;;;10110:1;10107;10100:12;10061:53;10149:9;10136:23;10168:31;10193:5;10168:31;:::i;:::-;10218:5;-1:-1:-1;10275:2:107;10260:18;;10247:32;10288:33;10247:32;10288:33;:::i;:::-;10340:7;-1:-1:-1;10398:2:107;10383:18;;10370:32;10421:18;10451:14;;;10448:34;;;10478:1;10475;10468:12;10448:34;10501:61;10554:7;10545:6;10534:9;10530:22;10501:61;:::i;:::-;10491:71;;10615:2;10604:9;10600:18;10587:32;10571:48;;10644:2;10634:8;10631:16;10628:36;;;10660:1;10657;10650:12;10628:36;10683:63;10738:7;10727:8;10716:9;10712:24;10683:63;:::i;:::-;10673:73;;10799:3;10788:9;10784:19;10771:33;10755:49;;10829:2;10819:8;10816:16;10813:36;;;10845:1;10842;10835:12;10813:36;;10868:51;10911:7;10900:8;10889:9;10885:24;10868:51;:::i;:::-;10858:61;;;9854:1071;;;;;;;;:::o;11153:248::-;11221:6;11229;11282:2;11270:9;11261:7;11257:23;11253:32;11250:52;;;11298:1;11295;11288:12;11250:52;-1:-1:-1;;11321:23:107;;;11391:2;11376:18;;;11363:32;;-1:-1:-1;11153:248:107:o;11629:1277::-;11747:6;11755;11808:2;11796:9;11787:7;11783:23;11779:32;11776:52;;;11824:1;11821;11814:12;11776:52;11864:9;11851:23;11893:18;11934:2;11926:6;11923:14;11920:34;;;11950:1;11947;11940:12;11920:34;11988:6;11977:9;11973:22;11963:32;;12033:7;12026:4;12022:2;12018:13;12014:27;12004:55;;12055:1;12052;12045:12;12004:55;12091:2;12078:16;12113:4;12136:43;12176:2;12136:43;:::i;:::-;12208:2;12202:9;12220:31;12248:2;12240:6;12220:31;:::i;:::-;12286:18;;;12374:1;12370:10;;;;12362:19;;12358:28;;;12320:15;;;;-1:-1:-1;12398:19:107;;;12395:39;;;12430:1;12427;12420:12;12395:39;12454:11;;;;12474:217;12490:6;12485:3;12482:15;12474:217;;;12570:3;12557:17;12587:31;12612:5;12587:31;:::i;:::-;12631:18;;12507:12;;;;12669;;;;12474:217;;;12710:6;-1:-1:-1;;12754:18:107;;12741:32;;-1:-1:-1;;12785:16:107;;;12782:36;;;12814:1;12811;12804:12;12782:36;;12837:63;12892:7;12881:8;12870:9;12866:24;12837:63;:::i;:::-;12827:73;;;11629:1277;;;;;:::o;12911:435::-;12964:3;13002:5;12996:12;13029:6;13024:3;13017:19;13055:4;13084:2;13079:3;13075:12;13068:19;;13121:2;13114:5;13110:14;13142:1;13152:169;13166:6;13163:1;13160:13;13152:169;;;13227:13;;13215:26;;13261:12;;;;13296:15;;;;13188:1;13181:9;13152:169;;;-1:-1:-1;13337:3:107;;12911:435;-1:-1:-1;;;;;12911:435:107:o;13351:261::-;13530:2;13519:9;13512:21;13493:4;13550:56;13602:2;13591:9;13587:18;13579:6;13550:56;:::i;13617:958::-;13769:6;13777;13785;13793;13837:9;13828:7;13824:23;13867:3;13863:2;13859:12;13856:32;;;13884:1;13881;13874:12;13856:32;13907:45;13944:7;13933:9;13907:45;:::i;:::-;13897:55;-1:-1:-1;13987:4:107;-1:-1:-1;;13968:17:107;;13964:28;13961:48;;;14005:1;14002;13995:12;13961:48;;14038:2;14032:9;14050:32;14075:6;14050:32;:::i;:::-;14106:37;14138:3;14127:9;14123:19;14106:37;:::i;:::-;14098:6;14091:53;14177:37;14209:3;14198:9;14194:19;14177:37;:::i;:::-;14172:2;14160:15;;14153:62;14276:3;14261:19;;14248:33;14243:2;14231:15;;14224:58;14164:6;-1:-1:-1;14358:3:107;14343:19;;14330:33;14386:18;14375:30;;14372:50;;;14418:1;14415;14408:12;14372:50;14457:58;14507:7;14498:6;14487:9;14483:22;14457:58;:::i;:::-;13617:958;;;;-1:-1:-1;14534:8:107;-1:-1:-1;;;;13617:958:107:o;14580:663::-;14694:6;14702;14710;14718;14771:3;14759:9;14750:7;14746:23;14742:33;14739:53;;;14788:1;14785;14778:12;14739:53;14811:45;14848:7;14837:9;14811:45;:::i;:::-;14801:55;;14906:3;14895:9;14891:19;14878:33;14920:31;14945:5;14920:31;:::i;:::-;14970:5;-1:-1:-1;15026:3:107;15011:19;;14998:33;15054:18;15043:30;;15040:50;;;15086:1;15083;15076:12;15530:409;15600:6;15608;15661:2;15649:9;15640:7;15636:23;15632:32;15629:52;;;15677:1;15674;15667:12;15629:52;15717:9;15704:23;15750:18;15742:6;15739:30;15736:50;;;15782:1;15779;15772:12;15736:50;15821:58;15871:7;15862:6;15851:9;15847:22;15821:58;:::i;:::-;15898:8;;15795:84;;-1:-1:-1;15530:409:107;-1:-1:-1;;;;15530:409:107:o;16855:160::-;16920:20;;16976:13;;16969:21;16959:32;;16949:60;;17005:1;17002;16995:12;17020:315;17085:6;17093;17146:2;17134:9;17125:7;17121:23;17117:32;17114:52;;;17162:1;17159;17152:12;17114:52;17201:9;17188:23;17220:31;17245:5;17220:31;:::i;:::-;17270:5;-1:-1:-1;17294:35:107;17325:2;17310:18;;17294:35;:::i;:::-;17284:45;;17020:315;;;;;:::o;17340:418::-;17438:6;17446;17499:2;17487:9;17478:7;17474:23;17470:32;17467:52;;;17515:1;17512;17505:12;17467:52;17554:9;17541:23;17573:31;17598:5;17573:31;:::i;:::-;17623:5;-1:-1:-1;17680:2:107;17665:18;;17652:32;17693:33;17652:32;17693:33;:::i;:::-;17745:7;17735:17;;;17340:418;;;;;:::o;18988:367::-;19051:8;19061:6;19115:3;19108:4;19100:6;19096:17;19092:27;19082:55;;19133:1;19130;19123:12;19082:55;-1:-1:-1;19156:20:107;;19199:18;19188:30;;19185:50;;;19231:1;19228;19221:12;19185:50;19268:4;19260:6;19256:17;19244:29;;19328:3;19321:4;19311:6;19308:1;19304:14;19296:6;19292:27;19288:38;19285:47;19282:67;;;19345:1;19342;19335:12;19360:1338;19520:6;19528;19536;19544;19552;19560;19568;19576;19629:3;19617:9;19608:7;19604:23;19600:33;19597:53;;;19646:1;19643;19636:12;19597:53;19685:9;19672:23;19704:31;19729:5;19704:31;:::i;:::-;19754:5;-1:-1:-1;19811:2:107;19796:18;;19783:32;19824:33;19783:32;19824:33;:::i;:::-;19876:7;-1:-1:-1;19934:2:107;19919:18;;19906:32;19957:18;19987:14;;;19984:34;;;20014:1;20011;20004:12;19984:34;20053:70;20115:7;20106:6;20095:9;20091:22;20053:70;:::i;:::-;20142:8;;-1:-1:-1;20027:96:107;-1:-1:-1;20230:2:107;20215:18;;20202:32;;-1:-1:-1;20246:16:107;;;20243:36;;;20275:1;20272;20265:12;20243:36;20314:72;20378:7;20367:8;20356:9;20352:24;20314:72;:::i;:::-;20405:8;;-1:-1:-1;20288:98:107;-1:-1:-1;20493:3:107;20478:19;;20465:33;;-1:-1:-1;20510:16:107;;;20507:36;;;20539:1;20536;20529:12;20507:36;;20578:60;20630:7;20619:8;20608:9;20604:24;20578:60;:::i;:::-;19360:1338;;;;-1:-1:-1;19360:1338:107;;-1:-1:-1;19360:1338:107;;;;;;20657:8;-1:-1:-1;;;19360:1338:107:o;22062:823::-;22168:6;22176;22184;22192;22200;22208;22261:3;22249:9;22240:7;22236:23;22232:33;22229:53;;;22278:1;22275;22268:12;22229:53;22317:9;22304:23;22336:31;22361:5;22336:31;:::i;:::-;22386:5;-1:-1:-1;22443:2:107;22428:18;;22415:32;22456:33;22415:32;22456:33;:::i;:::-;22508:7;-1:-1:-1;22562:2:107;22547:18;;22534:32;;-1:-1:-1;22613:2:107;22598:18;;22585:32;;-1:-1:-1;22668:3:107;22653:19;;22640:33;22696:18;22685:30;;22682:50;;;22728:1;22725;22718:12;22682:50;22767:58;22817:7;22808:6;22797:9;22793:22;22767:58;:::i;:::-;22062:823;;;;-1:-1:-1;22062:823:107;;-1:-1:-1;22062:823:107;;22844:8;;22062:823;-1:-1:-1;;;22062:823:107:o;22890:734::-;22994:6;23002;23010;23018;23026;23079:3;23067:9;23058:7;23054:23;23050:33;23047:53;;;23096:1;23093;23086:12;23047:53;23135:9;23122:23;23154:31;23179:5;23154:31;:::i;:::-;23204:5;-1:-1:-1;23261:2:107;23246:18;;23233:32;23274:33;23233:32;23274:33;:::i;:::-;23326:7;-1:-1:-1;23380:2:107;23365:18;;23352:32;;-1:-1:-1;23431:2:107;23416:18;;23403:32;;-1:-1:-1;23486:3:107;23471:19;;23458:33;23514:18;23503:30;;23500:50;;;23546:1;23543;23536:12;23500:50;23569:49;23610:7;23601:6;23590:9;23586:22;23569:49;:::i;23629:1010::-;23771:6;23779;23787;23795;23839:9;23830:7;23826:23;23869:3;23865:2;23861:12;23858:32;;;23886:1;23883;23876:12;23858:32;23909:45;23946:7;23935:9;23909:45;:::i;:::-;23899:55;-1:-1:-1;23989:4:107;-1:-1:-1;;23970:17:107;;23966:28;23963:48;;;24007:1;24004;23997:12;23963:48;;24040:2;24034:9;24052:32;24077:6;24052:32;:::i;:::-;24108:36;24139:3;24128:9;24124:19;24108:36;:::i;:::-;24100:6;24093:52;24206:3;24195:9;24191:19;24178:33;24173:2;24165:6;24161:15;24154:58;24262:3;24251:9;24247:19;24234:33;24276:31;24301:5;24276:31;:::i;:::-;24335:2;24323:15;;24316:30;24327:6;-1:-1:-1;24422:3:107;24407:19;;24394:33;24450:18;24439:30;;24436:50;;;24482:1;24479;24472:12;25056:127;25117:10;25112:3;25108:20;25105:1;25098:31;25148:4;25145:1;25138:15;25172:4;25169:1;25162:15;25188:128;25255:9;;;25276:11;;;25273:37;;;25290:18;;:::i;25321:380::-;25400:1;25396:12;;;;25443;;;25464:61;;25518:4;25510:6;25506:17;25496:27;;25464:61;25571:2;25563:6;25560:14;25540:18;25537:38;25534:161;;25617:10;25612:3;25608:20;25605:1;25598:31;25652:4;25649:1;25642:15;25680:4;25677:1;25670:15;25534:161;;25321:380;;;:::o;26145:266::-;26233:6;26228:3;26221:19;26285:6;26278:5;26271:4;26266:3;26262:14;26249:43;-1:-1:-1;26337:1:107;26312:16;;;26330:4;26308:27;;;26301:38;;;;26393:2;26372:15;;;-1:-1:-1;;26368:29:107;26359:39;;;26355:50;;26145:266::o;26416:673::-;26700:4;26729:3;-1:-1:-1;;;;;26763:6:107;26759:55;26748:9;26741:74;26824:53;26873:2;26862:9;26858:18;26850:6;-1:-1:-1;;;;;25858:2:107;25850:5;25844:12;25840:21;25835:3;25828:34;25923:2;25915:4;25908:5;25904:16;25898:23;25894:32;25887:4;25882:3;25878:14;25871:56;25988:8;25980:4;25973:5;25969:16;25963:23;25959:38;25952:4;25947:3;25943:14;25936:62;26061:4;26054:5;26050:16;26044:23;26041:1;26030:38;26023:4;26018:3;26014:14;26007:62;26130:2;26122:4;26115:5;26111:16;26105:23;26101:32;26094:4;26089:3;26085:14;26078:56;;25706:434;;;26824:53;26914:6;26908:3;26897:9;26893:19;26886:35;26958:6;26952:3;26941:9;26937:19;26930:35;27002:2;26996:3;26985:9;26981:19;26974:31;27022:61;27079:2;27068:9;27064:18;27056:6;27048;27022:61;:::i;27094:249::-;27163:6;27216:2;27204:9;27195:7;27191:23;27187:32;27184:52;;;27232:1;27229;27222:12;27184:52;27264:9;27258:16;27283:30;27307:5;27283:30;:::i;27962:168::-;28035:9;;;28066;;28083:15;;;28077:22;;28063:37;28053:71;;28104:18;;:::i;28545:127::-;28606:10;28601:3;28597:20;28594:1;28587:31;28637:4;28634:1;28627:15;28661:4;28658:1;28651:15;28677:135;28716:3;28737:17;;;28734:43;;28757:18;;:::i;:::-;-1:-1:-1;28804:1:107;28793:13;;28677:135::o;29069:709::-;29401:4;29430:3;-1:-1:-1;;;;;29464:6:107;29460:55;29449:9;29442:74;29525:53;29574:2;29563:9;29559:18;29551:6;-1:-1:-1;;;;;25858:2:107;25850:5;25844:12;25840:21;25835:3;25828:34;25923:2;25915:4;25908:5;25904:16;25898:23;25894:32;25887:4;25882:3;25878:14;25871:56;25988:8;25980:4;25973:5;25969:16;25963:23;25959:38;25952:4;25947:3;25943:14;25936:62;26061:4;26054:5;26050:16;26044:23;26041:1;26030:38;26023:4;26018:3;26014:14;26007:62;26130:2;26122:4;26115:5;26111:16;26105:23;26101:32;26094:4;26089:3;26085:14;26078:56;;25706:434;;;29525:53;28917:12;;28914:1;28903:27;;;29649:3;29634:19;;28891:40;28994:4;28983:16;;28977:23;28963:38;;28947:14;;;28940:62;29051:4;29040:16;;29034:23;29018:14;;;29011:47;29587:67;29691:2;29685:3;29674:9;29670:19;29663:31;29711:61;29768:2;29757:9;29753:18;29745:6;29737;29711:61;:::i;:::-;29703:69;29069:709;-1:-1:-1;;;;;;;;29069:709:107:o;29783:814::-;30176:4;30205:3;-1:-1:-1;;;;;30239:6:107;30235:55;30224:9;30217:74;30300:53;30349:2;30338:9;30334:18;30326:6;-1:-1:-1;;;;;25858:2:107;25850:5;25844:12;25840:21;25835:3;25828:34;25923:2;25915:4;25908:5;25904:16;25898:23;25894:32;25887:4;25882:3;25878:14;25871:56;25988:8;25980:4;25973:5;25969:16;25963:23;25959:38;25952:4;25947:3;25943:14;25936:62;26061:4;26054:5;26050:16;26044:23;26041:1;26030:38;26023:4;26018:3;26014:14;26007:62;26130:2;26122:4;26115:5;26111:16;26105:23;26101:32;26094:4;26089:3;26085:14;26078:56;;25706:434;;;30300:53;28917:12;;28914:1;28903:27;;;30424:3;30409:19;;28891:40;28994:4;28983:16;;28977:23;28963:38;;28947:14;;;28940:62;29051:4;29040:16;;29034:23;29018:14;;;29011:47;30362:67;30466:6;30460:3;30449:9;30445:19;30438:35;30510:2;30504:3;30493:9;30489:19;30482:31;30530:61;30587:2;30576:9;30572:18;30564:6;30556;30530:61;:::i;30946:631::-;31202:4;31231:3;-1:-1:-1;;;;;31334:2:107;31326:6;31322:15;31311:9;31304:34;31347:53;31396:2;31385:9;31381:18;31373:6;-1:-1:-1;;;;;25858:2:107;25850:5;25844:12;25840:21;25835:3;25828:34;25923:2;25915:4;25908:5;25904:16;25898:23;25894:32;25887:4;25882:3;25878:14;25871:56;25988:8;25980:4;25973:5;25969:16;25963:23;25959:38;25952:4;25947:3;25943:14;25936:62;26061:4;26054:5;26050:16;26044:23;26041:1;26030:38;26023:4;26018:3;26014:14;26007:62;26130:2;26122:4;26115:5;26111:16;26105:23;26101:32;26094:4;26089:3;26085:14;26078:56;;25706:434;;;31347:53;31437:15;;31431:3;31416:19;;31409:44;31484:3;31469:19;;31462:31;;;31510:61;31552:18;;;31544:6;31536;31510:61;:::i;31582:714::-;31862:4;31891:3;-1:-1:-1;;;;;31994:2:107;31986:6;31982:15;31971:9;31964:34;32007:53;32056:2;32045:9;32041:18;32033:6;-1:-1:-1;;;;;25858:2:107;25850:5;25844:12;25840:21;25835:3;25828:34;25923:2;25915:4;25908:5;25904:16;25898:23;25894:32;25887:4;25882:3;25878:14;25871:56;25988:8;25980:4;25973:5;25969:16;25963:23;25959:38;25952:4;25947:3;25943:14;25936:62;26061:4;26054:5;26050:16;26044:23;26041:1;26030:38;26023:4;26018:3;26014:14;26007:62;26130:2;26122:4;26115:5;26111:16;26105:23;26101:32;26094:4;26089:3;26085:14;26078:56;;25706:434;;;32007:53;32109:2;32101:6;32097:15;32091:3;32080:9;32076:19;32069:44;;32164:6;32161:1;32150:21;32144:3;32133:9;32129:19;32122:50;32209:2;32203:3;32192:9;32188:19;32181:31;32229:61;32286:2;32275:9;32271:18;32263:6;32255;32229:61;:::i;32713:213::-;32748:3;32796:5;32792:2;32781:21;32830:34;32826:39;32817:7;32814:52;32811:78;;32869:18;;:::i;:::-;32909:1;32905:15;;32713:213;-1:-1:-1;;32713:213:107:o;32931:244::-;33088:2;33077:9;33070:21;33051:4;33108:61;33165:2;33154:9;33150:18;33142:6;33134;33108:61;:::i;33180:702::-;33259:6;33312:2;33300:9;33291:7;33287:23;33283:32;33280:52;;;33328:1;33325;33318:12;33280:52;33361:9;33355:16;33394:18;33386:6;33383:30;33380:50;;;33426:1;33423;33416:12;33380:50;33449:22;;33502:4;33494:13;;33490:27;-1:-1:-1;33480:55:107;;33531:1;33528;33521:12;33480:55;33560:2;33554:9;33582:31;33610:2;33582:31;:::i;:::-;33642:2;33636:9;33654:31;33682:2;33674:6;33654:31;:::i;:::-;33709:2;33701:6;33694:18;33749:7;33744:2;33739;33735;33731:11;33727:20;33724:33;33721:53;;;33770:1;33767;33760:12;33721:53;33783:68;33848:2;33843;33835:6;33831:15;33826:2;33822;33818:11;33783:68;:::i;:::-;33870:6;33180:702;-1:-1:-1;;;;;;33180:702:107:o;34574:679::-;34886:4;34915:3;-1:-1:-1;;;;;34949:6:107;34945:55;34934:9;34927:74;35010:53;35059:2;35048:9;35044:18;35036:6;-1:-1:-1;;;;;25858:2:107;25850:5;25844:12;25840:21;25835:3;25828:34;25923:2;25915:4;25908:5;25904:16;25898:23;25894:32;25887:4;25882:3;25878:14;25871:56;25988:8;25980:4;25973:5;25969:16;25963:23;25959:38;25952:4;25947:3;25943:14;25936:62;26061:4;26054:5;26050:16;26044:23;26041:1;26030:38;26023:4;26018:3;26014:14;26007:62;26130:2;26122:4;26115:5;26111:16;26105:23;26101:32;26094:4;26089:3;26085:14;26078:56;;25706:434;;;35010:53;34387:12;;34380:20;34373:28;35124:3;35109:19;;34361:41;34451:4;34440:16;;34434:23;34418:14;;;34411:47;34511:4;34500:16;;34494:23;-1:-1:-1;;;;;34490:72:107;34474:14;;;34467:96;35072:57;34297:272;35258:249;35327:6;35380:2;35368:9;35359:7;35355:23;35351:32;35348:52;;;35396:1;35393;35386:12;35348:52;35428:9;35422:16;35447:30;35471:5;35447:30;:::i;35512:784::-;35885:4;35914:3;-1:-1:-1;;;;;35948:6:107;35944:55;35933:9;35926:74;36009:53;36058:2;36047:9;36043:18;36035:6;-1:-1:-1;;;;;25858:2:107;25850:5;25844:12;25840:21;25835:3;25828:34;25923:2;25915:4;25908:5;25904:16;25898:23;25894:32;25887:4;25882:3;25878:14;25871:56;25988:8;25980:4;25973:5;25969:16;25963:23;25959:38;25952:4;25947:3;25943:14;25936:62;26061:4;26054:5;26050:16;26044:23;26041:1;26030:38;26023:4;26018:3;26014:14;26007:62;26130:2;26122:4;26115:5;26111:16;26105:23;26101:32;26094:4;26089:3;26085:14;26078:56;;25706:434;;;36009:53;34387:12;;34380:20;34373:28;36123:3;36108:19;;34361:41;34451:4;34440:16;;34434:23;34418:14;;;34411:47;34511:4;34500:16;;34494:23;-1:-1:-1;;;;;34490:72:107;34474:14;;;34467:96;36071:57;34297:272;37359:216;37423:9;;;37451:11;;;37398:3;37481:9;;37509:10;;37505:19;;37534:10;;37526:19;;37502:44;37499:70;;;37549:18;;:::i;:::-;37499:70;;37359:216;;;;:::o;37580:249::-;37766:3;37751:19;;37779:44;37755:9;37805:6;-1:-1:-1;;;;;25858:2:107;25850:5;25844:12;25840:21;25835:3;25828:34;25923:2;25915:4;25908:5;25904:16;25898:23;25894:32;25887:4;25882:3;25878:14;25871:56;25988:8;25980:4;25973:5;25969:16;25963:23;25959:38;25952:4;25947:3;25943:14;25936:62;26061:4;26054:5;26050:16;26044:23;26041:1;26030:38;26023:4;26018:3;26014:14;26007:62;26130:2;26122:4;26115:5;26111:16;26105:23;26101:32;26094:4;26089:3;26085:14;26078:56;;25706:434;;;39060:125;39125:9;;;39146:10;;;39143:36;;;39159:18;;:::i;39190:465::-;39447:2;39436:9;39429:21;39410:4;39473:56;39525:2;39514:9;39510:18;39502:6;39473:56;:::i;:::-;39577:9;39569:6;39565:22;39560:2;39549:9;39545:18;39538:50;39605:44;39642:6;39634;39605:44;:::i;39660:197::-;-1:-1:-1;;;;;39782:10:107;;;39794;;;39778:27;;39817:11;;;39814:37;;;39831:18;;:::i;39862:200::-;-1:-1:-1;;;;;39998:10:107;;;39986;;;39982:27;;40021:12;;;40018:38;;;40036:18;;:::i;40067:245::-;40165:2;40135:17;;;40154;;;;40131:41;40246:34;40187:44;;-1:-1:-1;;40233:49:107;;40184:99;40181:125;;;40286:18;;:::i;40317:184::-;40387:6;40440:2;40428:9;40419:7;40415:23;40411:32;40408:52;;;40456:1;40453;40446:12;40408:52;-1:-1:-1;40479:16:107;;40317:184;-1:-1:-1;40317:184:107:o;42134:127::-;42195:10;42190:3;42186:20;42183:1;42176:31;42226:4;42223:1;42216:15;42250:4;42247:1;42240:15;42266:179;42297:1;42323:6;42356:2;42353:1;42349:10;42378:3;42368:37;;42385:18;;:::i;:::-;42423:10;;42419:20;;;;;42266:179;-1:-1:-1;;42266:179:107:o;42450:184::-;42484:3;42531:5;42528:1;42517:20;42565:7;42561:12;42552:7;42549:25;42546:51;;42577:18;;:::i;42639:200::-;42705:9;;;42678:4;42733:9;;42761:10;;42773:12;;;42757:29;42796:12;;;42788:21;;42754:56;42751:82;;;42813:18;;:::i;42844:120::-;42884:1;42910;42900:35;;42915:18;;:::i;:::-;-1:-1:-1;42949:9:107;;42844:120::o;42969:850::-;43291:4;-1:-1:-1;;;;;43401:2:107;43393:6;43389:15;43378:9;43371:34;43453:2;43445:6;43441:15;43436:2;43425:9;43421:18;43414:43;;43493:3;43488:2;43477:9;43473:18;43466:31;43520:57;43572:3;43561:9;43557:19;43549:6;43520:57;:::i;:::-;43625:9;43617:6;43613:22;43608:2;43597:9;43593:18;43586:50;43659:44;43696:6;43688;43659:44;:::i;:::-;43645:58;;43752:9;43744:6;43740:22;43734:3;43723:9;43719:19;43712:51;43780:33;43806:6;43798;43780:33;:::i;43824:179::-;43859:3;43901:1;43883:16;43880:23;43877:120;;;43947:1;43944;43941;43926:23;-1:-1:-1;43984:1:107;43978:8;43973:3;43969:18;43877:120;43824:179;:::o;44008:671::-;44047:3;44089:4;44071:16;44068:26;44065:39;;;44008:671;:::o;44065:39::-;44131:2;44125:9;-1:-1:-1;;44196:16:107;44192:25;;44189:1;44125:9;44168:50;44247:4;44241:11;44271:16;44306:18;44377:2;44370:4;44362:6;44358:17;44355:25;44350:2;44342:6;44339:14;44336:45;44333:58;;;44384:5;;;;;44008:671;:::o;44333:58::-;44421:6;44415:4;44411:17;44400:28;;44457:3;44451:10;44484:2;44476:6;44473:14;44470:27;;;44490:5;;;;;;44008:671;:::o;44470:27::-;44574:2;44555:16;44549:4;44545:27;44541:36;44534:4;44525:6;44520:3;44516:16;44512:27;44509:69;44506:82;;;44581:5;;;;;;44008:671;:::o;44506:82::-;44597:57;44648:4;44639:6;44631;44627:19;44623:30;44617:4;44597:57;:::i;:::-;-1:-1:-1;44670:3:107;;44008:671;-1:-1:-1;;;;;44008:671:107:o;45789:249::-;45889:2;45878:17;;;45859;;;;45855:41;-1:-1:-1;;45911:50:107;;45973:34;45963:45;;45908:101;45905:127;;;46012:18;;:::i;46043:216::-;46083:1;-1:-1:-1;;;;;46170:2:107;46167:1;46163:10;46192:3;46182:37;;46199:18;;:::i;:::-;46237:10;;46233:20;;;;;46043:216;-1:-1:-1;;46043:216:107:o;47073:584::-;47295:4;-1:-1:-1;;;;;47405:2:107;47397:6;47393:15;47382:9;47375:34;47457:2;47449:6;47445:15;47440:2;47429:9;47425:18;47418:43;;47497:6;47492:2;47481:9;47477:18;47470:34;47540:6;47535:2;47524:9;47520:18;47513:34;47584:3;47578;47567:9;47563:19;47556:32;47605:46;47646:3;47635:9;47631:19;47623:6;47605:46;:::i;47662:208::-;-1:-1:-1;;;;;47806:10:107;;;47794;;;47790:27;;47829:12;;;47826:38;;;47844:18;;:::i",
"linkReferences": {},
"immutableReferences": {
"398": [
{
"start": 9736,
"length": 32
}
],
"49": [
{
"start": 10566,
"length": 32
},
{
"start": 10665,
"length": 32
}
]
}
},
"methodIdentifiers": {
"MAX_TICK_SPACING()": "60460f06",
"MIN_PROTOCOL_FEE_DENOMINATOR()": "84e41c5e",
"MIN_TICK_SPACING()": "07eff0dd",
"balanceOf(address,uint256)": "00fdd58e",
"balanceOfBatch(address[],uint256[])": "4e1273f4",
"collectHookFees(address,address,uint256)": "effd18c0",
"collectProtocolFees(address,address,uint256)": "8161b874",
"currencyDelta(address,address)": "a54b2831",
"donate((address,address,uint24,int24,address),uint256,uint256,bytes)": "234266d7",
"extsload(bytes32)": "1e2eaeaf",
"extsload(bytes32,uint256)": "35fd631a",
"getLiquidity(bytes32)": "fa6793d5",
"getLiquidity(bytes32,address,int24,int24)": "33aa955b",
"getLock(uint256)": "d68f4dd1",
"getLockSentinel()": "174a9498",
"getPosition(bytes32,address,int24,int24)": "048d9c70",
"getSlot0(bytes32)": "c815641c",
"hookFeesAccrued(address,address)": "b4c41939",
"initialize((address,address,uint24,int24,address),uint160,bytes)": "695c5bf5",
"isApprovedForAll(address,address)": "e985e9c5",
"lock(bytes)": "81548319",
"mint(address,address,uint256)": "c6c3bbe6",
"modifyPosition((address,address,uint24,int24,address),(int24,int24,int256),bytes)": "61ae449a",
"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81",
"onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61",
"owner()": "8da5cb5b",
"pools(bytes32)": "b5217bb4",
"protocolFeeController()": "f02de3b2",
"protocolFeesAccrued(address)": "97e8cd4e",
"reservesOf(address)": "93c85a21",
"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6",
"safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a",
"setApprovalForAll(address,bool)": "a22cb465",
"setHookFees((address,address,uint24,int24,address))": "af440f82",
"setOwner(address)": "13af4035",
"setProtocolFeeController(address)": "2d771389",
"setProtocolFees((address,address,uint24,int24,address))": "282076cc",
"settle(address)": "6a256b29",
"supportsInterface(bytes4)": "01ffc9a7",
"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)": "f3cd914c",
"take(address,address,uint256)": "0b0d9c09",
"uri(uint256)": "0e89341c"
},
"rawMetadata": "{\"compiler\":{\"version\":\"0.8.22-ci.2023.8.13+commit.d7ae4d94\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"controllerGasLimit\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CannotUpdateEmptyPosition\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CurrenciesInitializedOutOfOrder\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CurrencyNotSettled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DelegateCallNotAllowed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC20TransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FeeTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hooks\",\"type\":\"address\"}],\"name\":\"HookAddressNotValid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidHookResponse\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSqrtRatio\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTick\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"locker\",\"type\":\"address\"}],\"name\":\"LockedBy\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MaxCurrenciesTouched\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NativeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoLiquidityToReceiveFees\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPoolManagerToken\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolAlreadyInitialized\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PoolNotInitialized\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceCurrentX96\",\"type\":\"uint160\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"PriceLimitAlreadyExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"name\":\"PriceLimitOutOfBounds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ProtocolFeeCannotBeFetched\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"SwapAmountCannotBeZero\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"name\":\"TickLiquidityOverflow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"}],\"name\":\"TickLowerOutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"}],\"name\":\"TickMisaligned\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TickSpacingTooLarge\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"TickSpacingTooSmall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"TickUpperOutOfBounds\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"TicksMisordered\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"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\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"hookFees\",\"type\":\"uint24\"}],\"name\":\"HookFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"name\":\"Initialize\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"}],\"name\":\"ModifyPosition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnerChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"protocolFeeController\",\"type\":\"address\"}],\"name\":\"ProtocolFeeControllerUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"protocolFees\",\"type\":\"uint24\"}],\"name\":\"ProtocolFeeUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount0\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"int128\",\"name\":\"amount1\",\"type\":\"int128\"},{\"indexed\":false,\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"indexed\":false,\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"}],\"name\":\"TransferBatch\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"TransferSingle\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"value\",\"type\":\"string\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"URI\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_TICK_SPACING\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_PROTOCOL_FEE_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_TICK_SPACING\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"\",\"type\":\"int24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"}],\"name\":\"balanceOfBatch\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"collectHookFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCollected\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"collectProtocolFees\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountCollected\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"locker\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"currencyDelta\",\"outputs\":[{\"internalType\":\"int256\",\"name\":\"currencyDelta\",\"type\":\"int256\"}],\"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\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"donate\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"startSlot\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"nSlots\",\"type\":\"uint256\"}],\"name\":\"extsload\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"getLiquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getLiquidity\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"getLock\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"locker\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLockSentinel\",\"outputs\":[{\"internalType\":\"LockSentinel\",\"name\":\"sentinel\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"}],\"name\":\"getPosition\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside0LastX128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthInside1LastX128\",\"type\":\"uint256\"}],\"internalType\":\"struct Position.Info\",\"name\":\"position\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"getSlot0\",\"outputs\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint24\",\"name\":\"protocolFees\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"hookFees\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"hookAddress\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"hookFeesAccrued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"initialize\",\"outputs\":[{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"lock\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"int24\",\"name\":\"tickLower\",\"type\":\"int24\"},{\"internalType\":\"int24\",\"name\":\"tickUpper\",\"type\":\"int24\"},{\"internalType\":\"int256\",\"name\":\"liquidityDelta\",\"type\":\"int256\"}],\"internalType\":\"struct IPoolManager.ModifyPositionParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"modifyPosition\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"values\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155BatchReceived\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"name\":\"onERC1155Received\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"PoolId\",\"name\":\"id\",\"type\":\"bytes32\"}],\"name\":\"pools\",\"outputs\":[{\"components\":[{\"internalType\":\"uint160\",\"name\":\"sqrtPriceX96\",\"type\":\"uint160\"},{\"internalType\":\"int24\",\"name\":\"tick\",\"type\":\"int24\"},{\"internalType\":\"uint24\",\"name\":\"protocolFees\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"hookFees\",\"type\":\"uint24\"}],\"internalType\":\"struct Pool.Slot0\",\"name\":\"slot0\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthGlobal0X128\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeGrowthGlobal1X128\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"liquidity\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"protocolFeeController\",\"outputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"protocolFeesAccrued\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"reservesOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256[]\",\"name\":\"ids\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeBatchTransferFrom\",\"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\":\"uint256\",\"name\":\"amount\",\"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\":[{\"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\"}],\"name\":\"setHookFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IProtocolFeeController\",\"name\":\"controller\",\"type\":\"address\"}],\"name\":\"setProtocolFeeController\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"}],\"name\":\"setProtocolFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"}],\"name\":\"settle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"paid\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"Currency\",\"name\":\"currency0\",\"type\":\"address\"},{\"internalType\":\"Currency\",\"name\":\"currency1\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"int24\",\"name\":\"tickSpacing\",\"type\":\"int24\"},{\"internalType\":\"contract IHooks\",\"name\":\"hooks\",\"type\":\"address\"}],\"internalType\":\"struct PoolKey\",\"name\":\"key\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"zeroForOne\",\"type\":\"bool\"},{\"internalType\":\"int256\",\"name\":\"amountSpecified\",\"type\":\"int256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"struct IPoolManager.SwapParams\",\"name\":\"params\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"hookData\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[{\"internalType\":\"BalanceDelta\",\"name\":\"delta\",\"type\":\"int256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"Currency\",\"name\":\"currency\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"take\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"uri\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"errors\":{\"HookAddressNotValid(address)\":[{\"params\":{\"hooks\":\"The address of the hooks contract\"}}],\"LockedBy(address)\":[{\"params\":{\"locker\":\"The current locker\"}}],\"PriceLimitAlreadyExceeded(uint160,uint160)\":[{\"params\":{\"sqrtPriceCurrentX96\":\"The invalid, already surpassed sqrtPriceLimitX96\",\"sqrtPriceLimitX96\":\"The surpassed price limit\"}}],\"PriceLimitOutOfBounds(uint160)\":[{\"params\":{\"sqrtPriceLimitX96\":\"The invalid, out-of-bounds sqrtPriceLimitX96\"}}],\"TickLowerOutOfBounds(int24)\":[{\"params\":{\"tickLower\":\"The invalid tickLower\"}}],\"TickMisaligned(int24,int24)\":[{\"params\":{\"tick\":\"the invalid tick\",\"tickSpacing\":\"The tick spacing of the pool\"}}],\"TickUpperOutOfBounds(int24)\":[{\"params\":{\"tickUpper\":\"The invalid tickUpper\"}}],\"TicksMisordered(int24,int24)\":[{\"params\":{\"tickLower\":\"The invalid tickLower\",\"tickUpper\":\"The invalid tickUpper\"}}]},\"events\":{\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to `approved`.\"},\"Initialize(bytes32,address,address,uint24,int24,address)\":{\"params\":{\"currency0\":\"The first currency of the pool by address sort order\",\"currency1\":\"The second currency of the pool by address sort order\",\"fee\":\"The fee collected upon every swap in the pool, denominated in hundredths of a bip\",\"hooks\":\"The hooks contract address for the pool, or address(0) if none\",\"id\":\"The abi encoded hash of the pool key struct for the new pool\",\"tickSpacing\":\"The minimum number of ticks between initialized ticks\"}},\"ModifyPosition(bytes32,address,int24,int24,int256)\":{\"params\":{\"id\":\"The abi encoded hash of the pool key struct for the pool that was modified\",\"liquidityDelta\":\"The amount of liquidity that was added or removed\",\"sender\":\"The address that modified the pool\",\"tickLower\":\"The lower tick of the position\",\"tickUpper\":\"The upper tick of the position\"}},\"OwnerChanged(address,address)\":{\"params\":{\"newOwner\":\"The owner after the owner was changed\",\"oldOwner\":\"The owner before the owner was changed\"}},\"Swap(bytes32,address,int128,int128,uint160,uint128,int24,uint24)\":{\"params\":{\"amount0\":\"The delta of the currency0 balance of the pool\",\"amount1\":\"The delta of the currency1 balance of the pool\",\"id\":\"The abi encoded hash of the pool key struct for the pool that was modified\",\"liquidity\":\"The liquidity of the pool after the swap\",\"sender\":\"The address that initiated the swap call, and that received the callback\",\"sqrtPriceX96\":\"The sqrt(price) of the pool after the swap, as a Q64.96\",\"tick\":\"The log base 1.0001 of the price of the pool after the swap\"}},\"TransferBatch(address,address,address,uint256[],uint256[])\":{\"details\":\"Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all transfers.\"},\"TransferSingle(address,address,address,uint256,uint256)\":{\"details\":\"Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\"},\"URI(string,uint256)\":{\"details\":\"Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI. If an {URI} event was emitted for `id`, the standard https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value returned by {IERC1155MetadataURI-uri}.\"}},\"kind\":\"dev\",\"methods\":{\"balanceOf(address,uint256)\":{\"details\":\"See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address.\"},\"balanceOfBatch(address[],uint256[])\":{\"details\":\"See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length.\"},\"extsload(bytes32)\":{\"params\":{\"slot\":\"Key of slot to sload\"},\"returns\":{\"value\":\"The value of the slot as bytes32\"}},\"isApprovedForAll(address,address)\":{\"details\":\"See {IERC1155-isApprovedForAll}.\"},\"lock(bytes)\":{\"params\":{\"data\":\"Any data to pass to the callback, via `ILockCallback(msg.sender).lockCallback(data)`\"},\"returns\":{\"result\":\"The data returned by the call to `ILockCallback(msg.sender).lockCallback(data)`\"}},\"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)\":{\"details\":\"See {IERC1155-safeBatchTransferFrom}.\"},\"safeTransferFrom(address,address,uint256,uint256,bytes)\":{\"details\":\"See {IERC1155-safeTransferFrom}.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"See {IERC1155-setApprovalForAll}.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"take(address,address,uint256)\":{\"details\":\"Can also be used as a mechanism for _free_ flash loans\"},\"uri(uint256)\":{\"details\":\"See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\\\{id\\\\}` substring with the actual token type ID.\"}},\"stateVariables\":{\"currencyDelta\":{\"details\":\"Represents the currencies due/owed to each locker. Must all net to zero when the last lock is released.\"}},\"version\":1},\"userdoc\":{\"errors\":{\"CannotUpdateEmptyPosition()\":[{\"notice\":\"Cannot update a position with no liquidity\"}],\"CurrenciesInitializedOutOfOrder()\":[{\"notice\":\"PoolKey must have currencies where address(currency0) < address(currency1)\"}],\"CurrencyNotSettled()\":[{\"notice\":\"Thrown when a currency is not netted out after a lock\"}],\"ERC20TransferFailed()\":[{\"notice\":\"Thrown when an ERC20 transfer fails\"}],\"FeeTooLarge()\":[{\"notice\":\"Thrown when the protocol fee denominator is less than 4. Also thrown when the static or dynamic fee on a pool is exceeds 100%.\"}],\"HookAddressNotValid(address)\":[{\"notice\":\"Thrown if the address will not lead to the specified hook calls being called\"}],\"InvalidHookResponse()\":[{\"notice\":\"Hook did not return its selector\"}],\"InvalidSqrtRatio()\":[{\"notice\":\"Thrown when the ratio passed to #getTickAtSqrtRatio does not correspond to a price between MIN_TICK and MAX_TICK\"}],\"InvalidTick()\":[{\"notice\":\"Thrown when the tick passed to #getSqrtRatioAtTick is not between MIN_TICK and MAX_TICK\"}],\"LockedBy(address)\":[{\"notice\":\"Thrown when a function is called by an address that is not the current locker\"}],\"MaxCurrenciesTouched()\":[{\"notice\":\"Thrown when currencies touched has exceeded max of 256\"}],\"NativeTransferFailed()\":[{\"notice\":\"Thrown when a native transfer fails\"}],\"NoLiquidityToReceiveFees()\":[{\"notice\":\"Thrown by donate if there is currently 0 liquidity, since the fees will not go to any liquidity providers\"}],\"NotPoolManagerToken()\":[{\"notice\":\"The ERC1155 being deposited is not the Uniswap ERC1155\"}],\"PoolAlreadyInitialized()\":[{\"notice\":\"Thrown when trying to initalize an already initialized pool\"}],\"PoolNotInitialized()\":[{\"notice\":\"Thrown when trying to interact with a non-initialized pool\"}],\"PriceLimitAlreadyExceeded(uint160,uint160)\":[{\"notice\":\"Thrown when sqrtPriceLimitX96 on a swap has already exceeded its limit\"}],\"PriceLimitOutOfBounds(uint160)\":[{\"notice\":\"Thrown when sqrtPriceLimitX96 lies outside of valid tick/price range\"}],\"ProtocolFeeCannotBeFetched()\":[{\"notice\":\"Thrown when not enough gas is provided to look up the protocol fee\"}],\"SwapAmountCannotBeZero()\":[{\"notice\":\"Thrown when trying to swap amount of 0\"}],\"TickLiquidityOverflow(int24)\":[{\"notice\":\"For the tick spacing, the tick has too much liquidity\"}],\"TickLowerOutOfBounds(int24)\":[{\"notice\":\"Thrown when tickLower is less than min tick\"}],\"TickMisaligned(int24,int24)\":[{\"notice\":\"Thrown when the tick is not enumerated by the tick spacing\"}],\"TickSpacingTooLarge()\":[{\"notice\":\"Pools are limited to type(int16).max tickSpacing in #initialize, to prevent overflow\"}],\"TickSpacingTooSmall()\":[{\"notice\":\"Pools must have a positive non-zero tickSpacing passed to #initialize\"}],\"TickUpperOutOfBounds(int24)\":[{\"notice\":\"Thrown when tickUpper exceeds max tick\"}],\"TicksMisordered(int24,int24)\":[{\"notice\":\"Thrown when tickLower is not below tickUpper\"}]},\"events\":{\"Initialize(bytes32,address,address,uint24,int24,address)\":{\"notice\":\"Emitted when a new pool is initialized\"},\"ModifyPosition(bytes32,address,int24,int24,int256)\":{\"notice\":\"Emitted when a liquidity position is modified\"},\"OwnerChanged(address,address)\":{\"notice\":\"Emitted when the owner of the factory is changed\"},\"Swap(bytes32,address,int128,int128,uint160,uint128,int24,uint24)\":{\"notice\":\"Emitted for swaps between currency0 and currency1\"}},\"kind\":\"user\",\"methods\":{\"MAX_TICK_SPACING()\":{\"notice\":\"Returns the constant representing the maximum tickSpacing for an initialized pool key\"},\"MIN_PROTOCOL_FEE_DENOMINATOR()\":{\"notice\":\"Returns the minimum denominator for the protocol fee, which restricts it to a maximum of 25%\"},\"MIN_TICK_SPACING()\":{\"notice\":\"Returns the constant representing the minimum tickSpacing for an initialized pool key\"},\"donate((address,address,uint24,int24,address),uint256,uint256,bytes)\":{\"notice\":\"Donate the given currency amounts to the pool with the given pool key\"},\"extsload(bytes32)\":{\"notice\":\"Called by external contracts to access granular pool state\"},\"getLiquidity(bytes32)\":{\"notice\":\"Get the current value of liquidity of the given pool\"},\"getLiquidity(bytes32,address,int24,int24)\":{\"notice\":\"Get the current value of liquidity for the specified pool and position\"},\"getLock(uint256)\":{\"notice\":\"Returns the locker in the ith position of the locker queue.\"},\"getLockSentinel()\":{\"notice\":\"Returns the sentinel node for the LockData structure.\"},\"getPosition(bytes32,address,int24,int24)\":{\"notice\":\"Get the position struct for a specified pool and position\"},\"getSlot0(bytes32)\":{\"notice\":\"Get the current value in slot0 of the given pool\"},\"hookFeesAccrued(address,address)\":{\"notice\":\"Given a hook and a currency address, returns the fees accrued\"},\"initialize((address,address,uint24,int24,address),uint160,bytes)\":{\"notice\":\"Initialize the state for a given pool ID\"},\"lock(bytes)\":{\"notice\":\"All operations go through this function\"},\"mint(address,address,uint256)\":{\"notice\":\"Called by the user to move value into ERC1155 balance\"},\"modifyPosition((address,address,uint24,int24,address),(int24,int24,int256),bytes)\":{\"notice\":\"Modify the position for the given pool\"},\"protocolFeesAccrued(address)\":{\"notice\":\"Given a currency address, returns the protocol fees accrued in that currency\"},\"reservesOf(address)\":{\"notice\":\"Returns the reserves for a given ERC20 currency\"},\"setHookFees((address,address,uint24,int24,address))\":{\"notice\":\"Sets the hook's swap and withdrawal fees for the given pool\"},\"setProtocolFees((address,address,uint24,int24,address))\":{\"notice\":\"Sets the protocol's swap and withdrawal fees for the given pool Protocol fees are always a portion of a fee that is owed. If that underlying fee is 0, no protocol fees will accrue even if it is set to > 0.\"},\"settle(address)\":{\"notice\":\"Called by the user to pay what is owed\"},\"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)\":{\"notice\":\"Swap against the given pool\"},\"take(address,address,uint256)\":{\"notice\":\"Called by the user to net out some value owed to the user\"}},\"notice\":\"Holds the state for all pools\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/PoolManager.sol\":\"PoolManager\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":800},\"remappings\":[\":@ensdomains/=node_modules/@ensdomains/\",\":@openzeppelin/=lib/openzeppelin-contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-gas-snapshot/=lib/forge-gas-snapshot/src/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"contracts/Fees.sol\":{\"keccak256\":\"0xec3ad6bfcf6dd2cd9625d240aee8bb239c193ef8c9889811f985576040268ebe\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://184105c4c21c968ff3cb037a664356cc490f45e73fc19f82bf4e3a8b38b15543\",\"dweb:/ipfs/QmYR1PXnnR1pze8xrQBAd4MFJEtghzWuKxyRUn2DJoUqS5\"]},\"contracts/NoDelegateCall.sol\":{\"keccak256\":\"0xf17b8cb46d679529ffd7b8f33e35190e9df7dc6b41da11dcf7b1ba134e8d0c40\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://aba476e6983e633bfce71cf4ae56b751c07910ead14bbace00f464dd771781f7\",\"dweb:/ipfs/QmbHT8SgG6Pjyz2BoYpme9M4mS4yqv7XirHDBaXQvyvVea\"]},\"contracts/Owned.sol\":{\"keccak256\":\"0x0109d375f0df894818365069e711e88bb8b6b315a867cac951f22bafeedacd64\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://70a4c8c612f849c2bf337ab69887609259f500c96d791496176533f5956ecaff\",\"dweb:/ipfs/QmUe6BLMxxdbr39r7YFZAeXyiCPRNnXjntekgHCzfHnYKd\"]},\"contracts/PoolManager.sol\":{\"keccak256\":\"0x7fcaf73b74c327214f17a098d097349c74928fc38b93a7b45d0a522206fb7a6c\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://cc4c370b9dc152f570e75e011994b6bfc1cd39ea31f99af5245fb44b2a07b941\",\"dweb:/ipfs/QmchGgrKD1v3mgQP3aEiBFXrd4rJmH5XRZ1f6Y1afwUKWv\"]},\"contracts/interfaces/IDynamicFeeManager.sol\":{\"keccak256\":\"0x025e7eb045536c46bb83e95cad52dea1c3ea9b9410c1f0588131b21e322b53d6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://dde2ca4c185f5a4dcc0c6e97b4402fa54372bfb6fbd9039f7be02ad3cd2e9ebd\",\"dweb:/ipfs/QmQueVoAB3eoLUdHhEkxmjxgMiyhhQVWsusn7YkWFNF9Y3\"]},\"contracts/interfaces/IFees.sol\":{\"keccak256\":\"0x2fb66160acff9b1a6031e3ada15e4271b25399d6b921dc17679cde1e50f566e2\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://7bb4c14e2f3bc0c92729b3fc24f57aaaaf9bd1930411aa937afd49e2c3811bfb\",\"dweb:/ipfs/QmP8kj9hvpDhWBrjuZUmxX7UAsbbkU6bceRKHdwg66MpPK\"]},\"contracts/interfaces/IHookFeeManager.sol\":{\"keccak256\":\"0x0cbf84e24794abd7c1659f74f88fb41b78dc7483d082fc409c570197c850a97d\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://3396e31cefccddf4f3897dea0c4abf839eee68420770bae58f6e871fda47af86\",\"dweb:/ipfs/QmdkKcfEnjs9gQ4uEBcF1US68CfqhEjVMESXQ2DuQHvFMJ\"]},\"contracts/interfaces/IHooks.sol\":{\"keccak256\":\"0x7263c9c8fef8b2346bebfd67956b287666a8c9e1f74131789650af4945ba4523\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://ef70e4a9ec5d8721fa844216d752d4135d88ad4562a00d125ae158ce40748569\",\"dweb:/ipfs/QmSSRNcCmcvTSmm87hgAMsK3zqfcPkgemqm4JzaQf92PgM\"]},\"contracts/interfaces/IPoolManager.sol\":{\"keccak256\":\"0xb110f845d51b3b22400a71f8877c411267409d0e0acb4399cf1a4baa1c4d8492\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://8e79a6541dff47947d24aab246254ec774fff2e0cbf8dd860b7869f9f4958711\",\"dweb:/ipfs/Qmd9b4tiFzeTyeUWeKdxiiUnsnNv6Cb8s1ruzVLgK7Z2WJ\"]},\"contracts/interfaces/IProtocolFeeController.sol\":{\"keccak256\":\"0x8cfe1e67530ab254d9f0333d391d5f80719921902e5a1f1d6d1f93eb76642953\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://da394d0796047f8476f79a9d60e8f8d48ea2de5140d7e947f9cc4d8378896997\",\"dweb:/ipfs/QmPM6bGy2ZDQTctyStFJQEmPCJ4yeuFQh7GAftHm6mRVKc\"]},\"contracts/interfaces/callback/ILockCallback.sol\":{\"keccak256\":\"0xbbe48da53b400e2ebe65e8b2d7fff212f4da3657bafec984c9144387c98f1816\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://364c1990569b9e2f1c2d24ddec70c0a88bd18c9b7262e835f10d6c82cca48a23\",\"dweb:/ipfs/QmNkooBi1MwGtwdZWTtVj3Yje1q1NSbAKvuhirtovid9fu\"]},\"contracts/interfaces/external/IERC20Minimal.sol\":{\"keccak256\":\"0x8dc5ee72426906aeb12f4ae6a2426df059491739bd5cbdb8ea4a3e26970436c6\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://f7e30dbbc972cb78d169c8845d6210d27490c8534e68a20d4f296b11ec727b92\",\"dweb:/ipfs/QmXBvaWaAnPW25YGVm2sMbf5mwrzLapUcqPnrNiiGGXxmA\"]},\"contracts/libraries/BitMath.sol\":{\"keccak256\":\"0x652cd36970d953b3067c766b3b0c0063d4c403eba7352df09ec10dcc868910d9\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://e357b092171edb755c8514b4b4ae758a8b43458c7a23409ebf5afd325fefa2be\",\"dweb:/ipfs/QmWKRWT2z15cVbVVDkjqdVnpf8Ck1jytcXbA7zCUevp7b6\"]},\"contracts/libraries/FeeLibrary.sol\":{\"keccak256\":\"0x9fc00b77978b617d1a9b5c9d024210b43ee5455682982703d3009bfafc1c12b4\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://777acadfdbd1b3c01aa780b2dff49771ae6189e421b7e23be38c2db75b9c1267\",\"dweb:/ipfs/QmUR443r39JFuYjLi6zCWnW7r15u1gbmkuEd6e43Br4gyL\"]},\"contracts/libraries/FixedPoint128.sol\":{\"keccak256\":\"0x1f015a7a107f4c471985a958f1bfbc1710948f9bcd3786a02310bc0ad5080c69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://a1cacac08675284f319d151f6bc5d1c66cf1d54c5dad1c620a2e1e1336cbb93a\",\"dweb:/ipfs/QmPf8vQ3mBqniKHwvS1DDEFrV5dJfZSL6mMi9JVy6omQaz\"]},\"contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x7731aeeba692b0ca5dac8f27803ec9e5ce98795a554c09ae05c220861bd0314e\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://963a8155e442d31c4541c387d333db0c02941ae3517e9173ad30ebcb4f6a14e9\",\"dweb:/ipfs/QmevAr8oG4WSoi5gBqQ53VzBuFbDKoZHfJwjuTmVhzm8Tc\"]},\"contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x6d8760794ed38264579c5da7b2afe8ff5543de999180850bc08687b77dce36ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e72da6f868ba5f5c829f78f649286c6b5922a8cda0317dfbb156b8a4d27fb24\",\"dweb:/ipfs/QmUQDZciNFhy4AFGXfYvoy22ihPc7ehvypeRVQwvVcD3vJ\"]},\"contracts/libraries/Hooks.sol\":{\"keccak256\":\"0x5015985a12cecb006731861d738d79d489991ef64cddf648d5c4224c775bf28e\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://c34ab145698f6c7ab48a1f0315b7782fb2179f1643d47cfa620f6509d23e8092\",\"dweb:/ipfs/QmRzyb1F9KcXTEqHeLLMc4PHZzbN4VFbxg8bRzEX33Hpfq\"]},\"contracts/libraries/LockDataLibrary.sol\":{\"keccak256\":\"0x56d00c580d8e3c48dbad28c59aa1245ef98d953dc380a7a4eadc1f7d883a29bc\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://73d04edef13331c408d526da2a1b41fc905bbc10c0ef4625df233be289608f4c\",\"dweb:/ipfs/QmcX7H3mQ5hMcKfRKBY2UwNkiBuMqKfgbusNzWw2DyrXje\"]},\"contracts/libraries/Pool.sol\":{\"keccak256\":\"0xe68c53367349bf7d5ec53f10abbe32effabe41c288eea6b42de67941104e4bc7\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://e69c6333c17577871f4995af3d3cdb278ad72b721a5c42d66a0b412e8b3559ed\",\"dweb:/ipfs/QmUtxoY88otDhFprbvST7LbcxacWrQrn4mZ8QfemBQDAxY\"]},\"contracts/libraries/Position.sol\":{\"keccak256\":\"0x1319e4c172e31427c3b3521dd3c9c9c3949da22e25c9919ae57c47a8c9328e43\",\"license\":\"BUSL-1.1\",\"urls\":[\"bzz-raw://1e0885e8e035681836fe02213e165d1ab48cf2488cf6ba8f01964b4b026d2b46\",\"dweb:/ipfs/QmR4W3DZYYvctASLFnm7Sf4wk2L77gwNRrTS2mBqtiUaud\"]},\"contracts/libraries/SafeCast.sol\":{\"keccak256\":\"0xb459cbf9f2cda4c38c11916e888cc2afbe4297c5ae6f50a0976eb83ed0dc9b25\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://5608698d33b18d3f49e3fa1fbdf6e7c6383378f7d53c914dcf14a0411cf7a79b\",\"dweb:/ipfs/QmbF4VWDcTPzH17aczU6eCUcqTp9Be7xiuBGB5TMWmtJAi\"]},\"contracts/libraries/SqrtPriceMath.sol\":{\"keccak256\":\"0x62cb03c7ce6ce037c82fa74e5aabb2431d6b4ddbca1458efdabf5d6af9ca6f90\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://206e025889f55aa8e5d9db2f846460394b54d6dc6d80a5e4ca1d4b70edd98188\",\"dweb:/ipfs/QmNSzKqtUDXHzgXXDjdNv3ZnHZE3LU4KhwNmkrcWtTRGqk\"]},\"contracts/libraries/SwapMath.sol\":{\"keccak256\":\"0xac5b75b36ff928e88cbec828bdc9db03e681cc3b337d5d7f6be9fd617b3fef7f\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://6aaea2ecabdb3fec93c7c6be19ea3a034cf396a59ab96f61c57b5214c04b5a6e\",\"dweb:/ipfs/QmYyd4ExT6xbvEHZTQBv9nZuvU6xjB6EN4uY8TmK8Tceqv\"]},\"contracts/libraries/TickBitmap.sol\":{\"keccak256\":\"0x7cccb8dff4c76da872a827f1549dc44cdff384d123e77a5361a02a31902bf15c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://88f850cd5bd2bbada4d9514f2516804392c7b23dc2cb541b74e9c88d0a351dcd\",\"dweb:/ipfs/QmZh9LvKUG23oFUZXAAa5gn77MguAbZ41VGjkES5U8N9Em\"]},\"contracts/libraries/TickMath.sol\":{\"keccak256\":\"0xadffea78a3eed37613b57766d87c0bdb9454d2df39de90d7a450e4a8b3207e56\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c5043430807061e5ccc82986c59b2e074457ff608111a8bd51b413ceaf661c78\",\"dweb:/ipfs/QmXjqKzCrngzidTRmuLUFvwNPqMKtd8xVFLVCycRfEQcWo\"]},\"contracts/libraries/UnsafeMath.sol\":{\"keccak256\":\"0x2a8cb75af05f8557b698b089a0ab19e24279fffb7e87cddf5794404c7eaf1c69\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://85f68e6d614205f3f0f55f6ac41805e3a7d523d95bda1c443f2e75444443ffe3\",\"dweb:/ipfs/QmdCheMqxWNx4CbxG5MH9BUQeSMeeXF6DHkf7Aax4duRUe\"]},\"contracts/types/BalanceDelta.sol\":{\"keccak256\":\"0xb88fc16f2ae715bd796e5cdb77c2297117f18ce2183288ae4680d7f20cce5f85\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://829baa2d4becbf8f0298fcaafb2305cf57bab5bcccdf8ac10d171bbb68c37e6f\",\"dweb:/ipfs/QmPs18e2YgwJECriyft46Rp7p9iECPEpkNXV1gom5NosfF\"]},\"contracts/types/Currency.sol\":{\"keccak256\":\"0x008a7aeff6cdb7709a8e5893c9e9895a8a7ad594a0605586174e576b9888ff80\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://c773b120bacb261695d4e00973ff25359dbf3aee071d19268833cc76e71f1aa2\",\"dweb:/ipfs/QmawinVYJJSWcQH4Lo5Hh7ond58RHAjeCL13FE47a5Egcw\"]},\"contracts/types/LockSentinel.sol\":{\"keccak256\":\"0xb10a648d7d56f778be5e2aa497cb55b375de851fb5c6ea6a68c9a898b831d60c\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://39c1f6e17e0d727bef600c6552b3db259219b4fa2c3854e6f27c884232304db6\",\"dweb:/ipfs/QmXyE5zYUs4JZy4RAJRKq6sAd3GwxB8YZ39g8FgANDTdFt\"]},\"contracts/types/PoolId.sol\":{\"keccak256\":\"0xd28e4ac2a0874b5372ab3873a263701ce625a840fc563c63d5ad8f7b3272f325\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0575161cdbe0c3ef8fa023a5f606563ec793bad863446822bdf310bce8dbcccd\",\"dweb:/ipfs/QmUM26Umcr3LEfM2sZ6eGtgBa2KmQde6Ea6898n8tt38mv\"]},\"contracts/types/PoolKey.sol\":{\"keccak256\":\"0x4928c59e15db5af3bff68f4d9243ebe11a1dc4a4cbfa57c564db376086a902ce\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://235245bf768c3b708be7837f6aa3bb6bcab7b25036df99e2cc257363350f6ea7\",\"dweb:/ipfs/QmWPurWV2vYoaVNxZyj4DkCqS8Aode5U9JE8WHmbyVR8jH\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol\":{\"keccak256\":\"0x04d6d1342ece664085921a4fabc928a7bcf1cf2873fa81780f61a54dc2b9b66e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6d2b052effa2e9a7479b0fea53b46f4cbbd91947848ef632aadad20ae2e9275\",\"dweb:/ipfs/QmcZp7f5cooGZrhHE8RC1yQR53RFZt19d5fyVqNfbHmPgY\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f920a631bf986c610fe573d3c70a2bb6f224f86f4a8550016470c7ee476c9ab5\",\"dweb:/ipfs/QmYzsyVMfnaREKHcHv5RPS8Xg5r1Q38E2SDsGBTnXeFWzb\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xc743d2235b8854045c308d2f8f1ed88efed6c2bebf2b7a4a51ea42480c82e566\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05e54e397a053f319187999ef4d65446a7f15f693ddd66dfaed4d856f67dac4e\",\"dweb:/ipfs/QmbGTFVdZxShg76UPcuLAXm6HBjZx3Vn6CL1eaBhV9rST1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol\":{\"keccak256\":\"0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797\",\"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x51b758a8815ecc9596c66c37d56b1d33883a444631a3f916b9fe65cb863ef7c4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://997ca03557985b3c6f9143a18b6c3a710b3bc1c7f189ee956d305a966ecfb922\",\"dweb:/ipfs/QmQaD3Wb62F88SHqmpLttvF6wKuPDQep2LLUcKPekeRzvz\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]}},\"version\":1}",
"metadata": {
"compiler": {
"version": "0.8.22-ci.2023.8.13+commit.d7ae4d94"
},
"language": "Solidity",
"output": {
"abi": [
{
"inputs": [
{
"internalType": "uint256",
"name": "controllerGasLimit",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"type": "error",
"name": "CannotUpdateEmptyPosition"
},
{
"inputs": [],
"type": "error",
"name": "CurrenciesInitializedOutOfOrder"
},
{
"inputs": [],
"type": "error",
"name": "CurrencyNotSettled"
},
{
"inputs": [],
"type": "error",
"name": "DelegateCallNotAllowed"
},
{
"inputs": [],
"type": "error",
"name": "ERC20TransferFailed"
},
{
"inputs": [],
"type": "error",
"name": "FeeTooLarge"
},
{
"inputs": [
{
"internalType": "address",
"name": "hooks",
"type": "address"
}
],
"type": "error",
"name": "HookAddressNotValid"
},
{
"inputs": [],
"type": "error",
"name": "InvalidCaller"
},
{
"inputs": [],
"type": "error",
"name": "InvalidHookResponse"
},
{
"inputs": [],
"type": "error",
"name": "InvalidSqrtRatio"
},
{
"inputs": [],
"type": "error",
"name": "InvalidTick"
},
{
"inputs": [
{
"internalType": "address",
"name": "locker",
"type": "address"
}
],
"type": "error",
"name": "LockedBy"
},
{
"inputs": [],
"type": "error",
"name": "MaxCurrenciesTouched"
},
{
"inputs": [],
"type": "error",
"name": "NativeTransferFailed"
},
{
"inputs": [],
"type": "error",
"name": "NoLiquidityToReceiveFees"
},
{
"inputs": [],
"type": "error",
"name": "NotPoolManagerToken"
},
{
"inputs": [],
"type": "error",
"name": "PoolAlreadyInitialized"
},
{
"inputs": [],
"type": "error",
"name": "PoolNotInitialized"
},
{
"inputs": [
{
"internalType": "uint160",
"name": "sqrtPriceCurrentX96",
"type": "uint160"
},
{
"internalType": "uint160",
"name": "sqrtPriceLimitX96",
"type": "uint160"
}
],
"type": "error",
"name": "PriceLimitAlreadyExceeded"
},
{
"inputs": [
{
"internalType": "uint160",
"name": "sqrtPriceLimitX96",
"type": "uint160"
}
],
"type": "error",
"name": "PriceLimitOutOfBounds"
},
{
"inputs": [],
"type": "error",
"name": "ProtocolFeeCannotBeFetched"
},
{
"inputs": [],
"type": "error",
"name": "SwapAmountCannotBeZero"
},
{
"inputs": [
{
"internalType": "int24",
"name": "tick",
"type": "int24"
}
],
"type": "error",
"name": "TickLiquidityOverflow"
},
{
"inputs": [
{
"internalType": "int24",
"name": "tickLower",
"type": "int24"
}
],
"type": "error",
"name": "TickLowerOutOfBounds"
},
{
"inputs": [
{
"internalType": "int24",
"name": "tick",
"type": "int24"
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
}
],
"type": "error",
"name": "TickMisaligned"
},
{
"inputs": [],
"type": "error",
"name": "TickSpacingTooLarge"
},
{
"inputs": [],
"type": "error",
"name": "TickSpacingTooSmall"
},
{
"inputs": [
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
}
],
"type": "error",
"name": "TickUpperOutOfBounds"
},
{
"inputs": [
{
"internalType": "int24",
"name": "tickLower",
"type": "int24"
},
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
}
],
"type": "error",
"name": "TicksMisordered"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"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": "PoolId",
"name": "id",
"type": "bytes32",
"indexed": true
},
{
"internalType": "uint24",
"name": "hookFees",
"type": "uint24",
"indexed": false
}
],
"type": "event",
"name": "HookFeeUpdated",
"anonymous": false
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32",
"indexed": true
},
{
"internalType": "Currency",
"name": "currency0",
"type": "address",
"indexed": true
},
{
"internalType": "Currency",
"name": "currency1",
"type": "address",
"indexed": true
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24",
"indexed": false
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24",
"indexed": false
},
{
"internalType": "contract IHooks",
"name": "hooks",
"type": "address",
"indexed": false
}
],
"type": "event",
"name": "Initialize",
"anonymous": false
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32",
"indexed": true
},
{
"internalType": "address",
"name": "sender",
"type": "address",
"indexed": true
},
{
"internalType": "int24",
"name": "tickLower",
"type": "int24",
"indexed": false
},
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24",
"indexed": false
},
{
"internalType": "int256",
"name": "liquidityDelta",
"type": "int256",
"indexed": false
}
],
"type": "event",
"name": "ModifyPosition",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "oldOwner",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "newOwner",
"type": "address",
"indexed": true
}
],
"type": "event",
"name": "OwnerChanged",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "protocolFeeController",
"type": "address",
"indexed": false
}
],
"type": "event",
"name": "ProtocolFeeControllerUpdated",
"anonymous": false
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32",
"indexed": true
},
{
"internalType": "uint24",
"name": "protocolFees",
"type": "uint24",
"indexed": false
}
],
"type": "event",
"name": "ProtocolFeeUpdated",
"anonymous": false
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32",
"indexed": true
},
{
"internalType": "address",
"name": "sender",
"type": "address",
"indexed": true
},
{
"internalType": "int128",
"name": "amount0",
"type": "int128",
"indexed": false
},
{
"internalType": "int128",
"name": "amount1",
"type": "int128",
"indexed": false
},
{
"internalType": "uint160",
"name": "sqrtPriceX96",
"type": "uint160",
"indexed": false
},
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128",
"indexed": false
},
{
"internalType": "int24",
"name": "tick",
"type": "int24",
"indexed": false
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24",
"indexed": false
}
],
"type": "event",
"name": "Swap",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "from",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "to",
"type": "address",
"indexed": true
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]",
"indexed": false
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]",
"indexed": false
}
],
"type": "event",
"name": "TransferBatch",
"anonymous": false
},
{
"inputs": [
{
"internalType": "address",
"name": "operator",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "from",
"type": "address",
"indexed": true
},
{
"internalType": "address",
"name": "to",
"type": "address",
"indexed": true
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256",
"indexed": false
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256",
"indexed": false
}
],
"type": "event",
"name": "TransferSingle",
"anonymous": false
},
{
"inputs": [
{
"internalType": "string",
"name": "value",
"type": "string",
"indexed": false
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256",
"indexed": true
}
],
"type": "event",
"name": "URI",
"anonymous": false
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "MAX_TICK_SPACING",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "MIN_PROTOCOL_FEE_DENOMINATOR",
"outputs": [
{
"internalType": "uint8",
"name": "",
"type": "uint8"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "MIN_TICK_SPACING",
"outputs": [
{
"internalType": "int24",
"name": "",
"type": "int24"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address[]",
"name": "accounts",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function",
"name": "balanceOfBatch",
"outputs": [
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "collectHookFees",
"outputs": [
{
"internalType": "uint256",
"name": "amountCollected",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "recipient",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "collectProtocolFees",
"outputs": [
{
"internalType": "uint256",
"name": "amountCollected",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "locker",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "currencyDelta",
"outputs": [
{
"internalType": "int256",
"name": "currencyDelta",
"type": "int256"
}
]
},
{
"inputs": [
{
"internalType": "struct PoolKey",
"name": "key",
"type": "tuple",
"components": [
{
"internalType": "Currency",
"name": "currency0",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency1",
"type": "address"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
},
{
"internalType": "contract IHooks",
"name": "hooks",
"type": "address"
}
]
},
{
"internalType": "uint256",
"name": "amount0",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount1",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "hookData",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "donate",
"outputs": [
{
"internalType": "BalanceDelta",
"name": "delta",
"type": "int256"
}
]
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "slot",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function",
"name": "extsload",
"outputs": [
{
"internalType": "bytes32",
"name": "value",
"type": "bytes32"
}
]
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "startSlot",
"type": "bytes32"
},
{
"internalType": "uint256",
"name": "nSlots",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"name": "extsload",
"outputs": [
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
]
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
},
{
"internalType": "address",
"name": "_owner",
"type": "address"
},
{
"internalType": "int24",
"name": "tickLower",
"type": "int24"
},
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
}
],
"stateMutability": "view",
"type": "function",
"name": "getLiquidity",
"outputs": [
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
}
]
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function",
"name": "getLiquidity",
"outputs": [
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
}
]
},
{
"inputs": [
{
"internalType": "uint256",
"name": "i",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"name": "getLock",
"outputs": [
{
"internalType": "address",
"name": "locker",
"type": "address"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "getLockSentinel",
"outputs": [
{
"internalType": "LockSentinel",
"name": "sentinel",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
},
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "int24",
"name": "tickLower",
"type": "int24"
},
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
}
],
"stateMutability": "view",
"type": "function",
"name": "getPosition",
"outputs": [
{
"internalType": "struct Position.Info",
"name": "position",
"type": "tuple",
"components": [
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
},
{
"internalType": "uint256",
"name": "feeGrowthInside0LastX128",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "feeGrowthInside1LastX128",
"type": "uint256"
}
]
}
]
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function",
"name": "getSlot0",
"outputs": [
{
"internalType": "uint160",
"name": "sqrtPriceX96",
"type": "uint160"
},
{
"internalType": "int24",
"name": "tick",
"type": "int24"
},
{
"internalType": "uint24",
"name": "protocolFees",
"type": "uint24"
},
{
"internalType": "uint24",
"name": "hookFees",
"type": "uint24"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "hookAddress",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "hookFeesAccrued",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "struct PoolKey",
"name": "key",
"type": "tuple",
"components": [
{
"internalType": "Currency",
"name": "currency0",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency1",
"type": "address"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
},
{
"internalType": "contract IHooks",
"name": "hooks",
"type": "address"
}
]
},
{
"internalType": "uint160",
"name": "sqrtPriceX96",
"type": "uint160"
},
{
"internalType": "bytes",
"name": "hookData",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "initialize",
"outputs": [
{
"internalType": "int24",
"name": "tick",
"type": "int24"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "address",
"name": "operator",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "isApprovedForAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "lock",
"outputs": [
{
"internalType": "bytes",
"name": "result",
"type": "bytes"
}
]
},
{
"inputs": [
{
"internalType": "Currency",
"name": "currency",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "mint"
},
{
"inputs": [
{
"internalType": "struct PoolKey",
"name": "key",
"type": "tuple",
"components": [
{
"internalType": "Currency",
"name": "currency0",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency1",
"type": "address"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
},
{
"internalType": "contract IHooks",
"name": "hooks",
"type": "address"
}
]
},
{
"internalType": "struct IPoolManager.ModifyPositionParams",
"name": "params",
"type": "tuple",
"components": [
{
"internalType": "int24",
"name": "tickLower",
"type": "int24"
},
{
"internalType": "int24",
"name": "tickUpper",
"type": "int24"
},
{
"internalType": "int256",
"name": "liquidityDelta",
"type": "int256"
}
]
},
{
"internalType": "bytes",
"name": "hookData",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "modifyPosition",
"outputs": [
{
"internalType": "BalanceDelta",
"name": "delta",
"type": "int256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "owner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
]
},
{
"inputs": [
{
"internalType": "PoolId",
"name": "id",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function",
"name": "pools",
"outputs": [
{
"internalType": "struct Pool.Slot0",
"name": "slot0",
"type": "tuple",
"components": [
{
"internalType": "uint160",
"name": "sqrtPriceX96",
"type": "uint160"
},
{
"internalType": "int24",
"name": "tick",
"type": "int24"
},
{
"internalType": "uint24",
"name": "protocolFees",
"type": "uint24"
},
{
"internalType": "uint24",
"name": "hookFees",
"type": "uint24"
}
]
},
{
"internalType": "uint256",
"name": "feeGrowthGlobal0X128",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "feeGrowthGlobal1X128",
"type": "uint256"
},
{
"internalType": "uint128",
"name": "liquidity",
"type": "uint128"
}
]
},
{
"inputs": [],
"stateMutability": "view",
"type": "function",
"name": "protocolFeeController",
"outputs": [
{
"internalType": "contract IProtocolFeeController",
"name": "",
"type": "address"
}
]
},
{
"inputs": [
{
"internalType": "Currency",
"name": "currency",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "protocolFeesAccrued",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "Currency",
"name": "currency",
"type": "address"
}
],
"stateMutability": "view",
"type": "function",
"name": "reservesOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "ids",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "amounts",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "safeBatchTransferFrom"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "id",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "amount",
"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": "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"
}
]
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setHookFees"
},
{
"inputs": [
{
"internalType": "address",
"name": "_owner",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setOwner"
},
{
"inputs": [
{
"internalType": "contract IProtocolFeeController",
"name": "controller",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setProtocolFeeController"
},
{
"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"
}
]
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "setProtocolFees"
},
{
"inputs": [
{
"internalType": "Currency",
"name": "currency",
"type": "address"
}
],
"stateMutability": "payable",
"type": "function",
"name": "settle",
"outputs": [
{
"internalType": "uint256",
"name": "paid",
"type": "uint256"
}
]
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"stateMutability": "view",
"type": "function",
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
]
},
{
"inputs": [
{
"internalType": "struct PoolKey",
"name": "key",
"type": "tuple",
"components": [
{
"internalType": "Currency",
"name": "currency0",
"type": "address"
},
{
"internalType": "Currency",
"name": "currency1",
"type": "address"
},
{
"internalType": "uint24",
"name": "fee",
"type": "uint24"
},
{
"internalType": "int24",
"name": "tickSpacing",
"type": "int24"
},
{
"internalType": "contract IHooks",
"name": "hooks",
"type": "address"
}
]
},
{
"internalType": "struct IPoolManager.SwapParams",
"name": "params",
"type": "tuple",
"components": [
{
"internalType": "bool",
"name": "zeroForOne",
"type": "bool"
},
{
"internalType": "int256",
"name": "amountSpecified",
"type": "int256"
},
{
"internalType": "uint160",
"name": "sqrtPriceLimitX96",
"type": "uint160"
}
]
},
{
"internalType": "bytes",
"name": "hookData",
"type": "bytes"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "swap",
"outputs": [
{
"internalType": "BalanceDelta",
"name": "delta",
"type": "int256"
}
]
},
{
"inputs": [
{
"internalType": "Currency",
"name": "currency",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "amount",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function",
"name": "take"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function",
"name": "uri",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
]
},
{
"inputs": [],
"stateMutability": "payable",
"type": "receive"
}
],
"devdoc": {
"kind": "dev",
"methods": {
"balanceOf(address,uint256)": {
"details": "See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address."
},
"balanceOfBatch(address[],uint256[])": {
"details": "See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length."
},
"extsload(bytes32)": {
"params": {
"slot": "Key of slot to sload"
},
"returns": {
"value": "The value of the slot as bytes32"
}
},
"isApprovedForAll(address,address)": {
"details": "See {IERC1155-isApprovedForAll}."
},
"lock(bytes)": {
"params": {
"data": "Any data to pass to the callback, via `ILockCallback(msg.sender).lockCallback(data)`"
},
"returns": {
"result": "The data returned by the call to `ILockCallback(msg.sender).lockCallback(data)`"
}
},
"safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": {
"details": "See {IERC1155-safeBatchTransferFrom}."
},
"safeTransferFrom(address,address,uint256,uint256,bytes)": {
"details": "See {IERC1155-safeTransferFrom}."
},
"setApprovalForAll(address,bool)": {
"details": "See {IERC1155-setApprovalForAll}."
},
"supportsInterface(bytes4)": {
"details": "See {IERC165-supportsInterface}."
},
"take(address,address,uint256)": {
"details": "Can also be used as a mechanism for _free_ flash loans"
},
"uri(uint256)": {
"details": "See {IERC1155MetadataURI-uri}. This implementation returns the same URI for *all* token types. It relies on the token type ID substitution mechanism https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP]. Clients calling this function must replace the `\\{id\\}` substring with the actual token type ID."
}
},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {
"MAX_TICK_SPACING()": {
"notice": "Returns the constant representing the maximum tickSpacing for an initialized pool key"
},
"MIN_PROTOCOL_FEE_DENOMINATOR()": {
"notice": "Returns the minimum denominator for the protocol fee, which restricts it to a maximum of 25%"
},
"MIN_TICK_SPACING()": {
"notice": "Returns the constant representing the minimum tickSpacing for an initialized pool key"
},
"donate((address,address,uint24,int24,address),uint256,uint256,bytes)": {
"notice": "Donate the given currency amounts to the pool with the given pool key"
},
"extsload(bytes32)": {
"notice": "Called by external contracts to access granular pool state"
},
"getLiquidity(bytes32)": {
"notice": "Get the current value of liquidity of the given pool"
},
"getLiquidity(bytes32,address,int24,int24)": {
"notice": "Get the current value of liquidity for the specified pool and position"
},
"getLock(uint256)": {
"notice": "Returns the locker in the ith position of the locker queue."
},
"getLockSentinel()": {
"notice": "Returns the sentinel node for the LockData structure."
},
"getPosition(bytes32,address,int24,int24)": {
"notice": "Get the position struct for a specified pool and position"
},
"getSlot0(bytes32)": {
"notice": "Get the current value in slot0 of the given pool"
},
"hookFeesAccrued(address,address)": {
"notice": "Given a hook and a currency address, returns the fees accrued"
},
"initialize((address,address,uint24,int24,address),uint160,bytes)": {
"notice": "Initialize the state for a given pool ID"
},
"lock(bytes)": {
"notice": "All operations go through this function"
},
"mint(address,address,uint256)": {
"notice": "Called by the user to move value into ERC1155 balance"
},
"modifyPosition((address,address,uint24,int24,address),(int24,int24,int256),bytes)": {
"notice": "Modify the position for the given pool"
},
"protocolFeesAccrued(address)": {
"notice": "Given a currency address, returns the protocol fees accrued in that currency"
},
"reservesOf(address)": {
"notice": "Returns the reserves for a given ERC20 currency"
},
"setHookFees((address,address,uint24,int24,address))": {
"notice": "Sets the hook's swap and withdrawal fees for the given pool"
},
"setProtocolFees((address,address,uint24,int24,address))": {
"notice": "Sets the protocol's swap and withdrawal fees for the given pool Protocol fees are always a portion of a fee that is owed. If that underlying fee is 0, no protocol fees will accrue even if it is set to > 0."
},
"settle(address)": {
"notice": "Called by the user to pay what is owed"
},
"swap((address,address,uint24,int24,address),(bool,int256,uint160),bytes)": {
"notice": "Swap against the given pool"
},
"take(address,address,uint256)": {
"notice": "Called by the user to net out some value owed to the user"
}
},
"version": 1
}
},
"settings": {
"remappings": [
"@ensdomains/=node_modules/@ensdomains/",
"@openzeppelin/=lib/openzeppelin-contracts/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"forge-gas-snapshot/=lib/forge-gas-snapshot/src/",
"forge-std/=lib/forge-std/src/",
"hardhat/=node_modules/hardhat/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/",
"solmate/=lib/solmate/src/"
],
"optimizer": {
"enabled": true,
"runs": 800
},
"metadata": {
"bytecodeHash": "ipfs"
},
"compilationTarget": {
"contracts/PoolManager.sol": "PoolManager"
},
"libraries": {}
},
"sources": {
"contracts/Fees.sol": {
"keccak256": "0xec3ad6bfcf6dd2cd9625d240aee8bb239c193ef8c9889811f985576040268ebe",
"urls": [
"bzz-raw://184105c4c21c968ff3cb037a664356cc490f45e73fc19f82bf4e3a8b38b15543",
"dweb:/ipfs/QmYR1PXnnR1pze8xrQBAd4MFJEtghzWuKxyRUn2DJoUqS5"
],
"license": "GPL-2.0-or-later"
},
"contracts/NoDelegateCall.sol": {
"keccak256": "0xf17b8cb46d679529ffd7b8f33e35190e9df7dc6b41da11dcf7b1ba134e8d0c40",
"urls": [
"bzz-raw://aba476e6983e633bfce71cf4ae56b751c07910ead14bbace00f464dd771781f7",
"dweb:/ipfs/QmbHT8SgG6Pjyz2BoYpme9M4mS4yqv7XirHDBaXQvyvVea"
],
"license": "BUSL-1.1"
},
"contracts/Owned.sol": {
"keccak256": "0x0109d375f0df894818365069e711e88bb8b6b315a867cac951f22bafeedacd64",
"urls": [
"bzz-raw://70a4c8c612f849c2bf337ab69887609259f500c96d791496176533f5956ecaff",
"dweb:/ipfs/QmUe6BLMxxdbr39r7YFZAeXyiCPRNnXjntekgHCzfHnYKd"
],
"license": "BUSL-1.1"
},
"contracts/PoolManager.sol": {
"keccak256": "0x7fcaf73b74c327214f17a098d097349c74928fc38b93a7b45d0a522206fb7a6c",
"urls": [
"bzz-raw://cc4c370b9dc152f570e75e011994b6bfc1cd39ea31f99af5245fb44b2a07b941",
"dweb:/ipfs/QmchGgrKD1v3mgQP3aEiBFXrd4rJmH5XRZ1f6Y1afwUKWv"
],
"license": "BUSL-1.1"
},
"contracts/interfaces/IDynamicFeeManager.sol": {
"keccak256": "0x025e7eb045536c46bb83e95cad52dea1c3ea9b9410c1f0588131b21e322b53d6",
"urls": [
"bzz-raw://dde2ca4c185f5a4dcc0c6e97b4402fa54372bfb6fbd9039f7be02ad3cd2e9ebd",
"dweb:/ipfs/QmQueVoAB3eoLUdHhEkxmjxgMiyhhQVWsusn7YkWFNF9Y3"
],
"license": "GPL-2.0-or-later"
},
"contracts/interfaces/IFees.sol": {
"keccak256": "0x2fb66160acff9b1a6031e3ada15e4271b25399d6b921dc17679cde1e50f566e2",
"urls": [
"bzz-raw://7bb4c14e2f3bc0c92729b3fc24f57aaaaf9bd1930411aa937afd49e2c3811bfb",
"dweb:/ipfs/QmP8kj9hvpDhWBrjuZUmxX7UAsbbkU6bceRKHdwg66MpPK"
],
"license": "GPL-2.0-or-later"
},
"contracts/interfaces/IHookFeeManager.sol": {
"keccak256": "0x0cbf84e24794abd7c1659f74f88fb41b78dc7483d082fc409c570197c850a97d",
"urls": [
"bzz-raw://3396e31cefccddf4f3897dea0c4abf839eee68420770bae58f6e871fda47af86",
"dweb:/ipfs/QmdkKcfEnjs9gQ4uEBcF1US68CfqhEjVMESXQ2DuQHvFMJ"
],
"license": "GPL-2.0-or-later"
},
"contracts/interfaces/IHooks.sol": {
"keccak256": "0x7263c9c8fef8b2346bebfd67956b287666a8c9e1f74131789650af4945ba4523",
"urls": [
"bzz-raw://ef70e4a9ec5d8721fa844216d752d4135d88ad4562a00d125ae158ce40748569",
"dweb:/ipfs/QmSSRNcCmcvTSmm87hgAMsK3zqfcPkgemqm4JzaQf92PgM"
],
"license": "GPL-2.0-or-later"
},
"contracts/interfaces/IPoolManager.sol": {
"keccak256": "0xb110f845d51b3b22400a71f8877c411267409d0e0acb4399cf1a4baa1c4d8492",
"urls": [
"bzz-raw://8e79a6541dff47947d24aab246254ec774fff2e0cbf8dd860b7869f9f4958711",
"dweb:/ipfs/Qmd9b4tiFzeTyeUWeKdxiiUnsnNv6Cb8s1ruzVLgK7Z2WJ"
],
"license": "GPL-2.0-or-later"
},
"contracts/interfaces/IProtocolFeeController.sol": {
"keccak256": "0x8cfe1e67530ab254d9f0333d391d5f80719921902e5a1f1d6d1f93eb76642953",
"urls": [
"bzz-raw://da394d0796047f8476f79a9d60e8f8d48ea2de5140d7e947f9cc4d8378896997",
"dweb:/ipfs/QmPM6bGy2ZDQTctyStFJQEmPCJ4yeuFQh7GAftHm6mRVKc"
],
"license": "GPL-2.0-or-later"
},
"contracts/interfaces/callback/ILockCallback.sol": {
"keccak256": "0xbbe48da53b400e2ebe65e8b2d7fff212f4da3657bafec984c9144387c98f1816",
"urls": [
"bzz-raw://364c1990569b9e2f1c2d24ddec70c0a88bd18c9b7262e835f10d6c82cca48a23",
"dweb:/ipfs/QmNkooBi1MwGtwdZWTtVj3Yje1q1NSbAKvuhirtovid9fu"
],
"license": "GPL-2.0-or-later"
},
"contracts/interfaces/external/IERC20Minimal.sol": {
"keccak256": "0x8dc5ee72426906aeb12f4ae6a2426df059491739bd5cbdb8ea4a3e26970436c6",
"urls": [
"bzz-raw://f7e30dbbc972cb78d169c8845d6210d27490c8534e68a20d4f296b11ec727b92",
"dweb:/ipfs/QmXBvaWaAnPW25YGVm2sMbf5mwrzLapUcqPnrNiiGGXxmA"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/BitMath.sol": {
"keccak256": "0x652cd36970d953b3067c766b3b0c0063d4c403eba7352df09ec10dcc868910d9",
"urls": [
"bzz-raw://e357b092171edb755c8514b4b4ae758a8b43458c7a23409ebf5afd325fefa2be",
"dweb:/ipfs/QmWKRWT2z15cVbVVDkjqdVnpf8Ck1jytcXbA7zCUevp7b6"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/FeeLibrary.sol": {
"keccak256": "0x9fc00b77978b617d1a9b5c9d024210b43ee5455682982703d3009bfafc1c12b4",
"urls": [
"bzz-raw://777acadfdbd1b3c01aa780b2dff49771ae6189e421b7e23be38c2db75b9c1267",
"dweb:/ipfs/QmUR443r39JFuYjLi6zCWnW7r15u1gbmkuEd6e43Br4gyL"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/FixedPoint128.sol": {
"keccak256": "0x1f015a7a107f4c471985a958f1bfbc1710948f9bcd3786a02310bc0ad5080c69",
"urls": [
"bzz-raw://a1cacac08675284f319d151f6bc5d1c66cf1d54c5dad1c620a2e1e1336cbb93a",
"dweb:/ipfs/QmPf8vQ3mBqniKHwvS1DDEFrV5dJfZSL6mMi9JVy6omQaz"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/FixedPoint96.sol": {
"keccak256": "0x7731aeeba692b0ca5dac8f27803ec9e5ce98795a554c09ae05c220861bd0314e",
"urls": [
"bzz-raw://963a8155e442d31c4541c387d333db0c02941ae3517e9173ad30ebcb4f6a14e9",
"dweb:/ipfs/QmevAr8oG4WSoi5gBqQ53VzBuFbDKoZHfJwjuTmVhzm8Tc"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/FullMath.sol": {
"keccak256": "0x6d8760794ed38264579c5da7b2afe8ff5543de999180850bc08687b77dce36ea",
"urls": [
"bzz-raw://0e72da6f868ba5f5c829f78f649286c6b5922a8cda0317dfbb156b8a4d27fb24",
"dweb:/ipfs/QmUQDZciNFhy4AFGXfYvoy22ihPc7ehvypeRVQwvVcD3vJ"
],
"license": "MIT"
},
"contracts/libraries/Hooks.sol": {
"keccak256": "0x5015985a12cecb006731861d738d79d489991ef64cddf648d5c4224c775bf28e",
"urls": [
"bzz-raw://c34ab145698f6c7ab48a1f0315b7782fb2179f1643d47cfa620f6509d23e8092",
"dweb:/ipfs/QmRzyb1F9KcXTEqHeLLMc4PHZzbN4VFbxg8bRzEX33Hpfq"
],
"license": "BUSL-1.1"
},
"contracts/libraries/LockDataLibrary.sol": {
"keccak256": "0x56d00c580d8e3c48dbad28c59aa1245ef98d953dc380a7a4eadc1f7d883a29bc",
"urls": [
"bzz-raw://73d04edef13331c408d526da2a1b41fc905bbc10c0ef4625df233be289608f4c",
"dweb:/ipfs/QmcX7H3mQ5hMcKfRKBY2UwNkiBuMqKfgbusNzWw2DyrXje"
],
"license": "BUSL-1.1"
},
"contracts/libraries/Pool.sol": {
"keccak256": "0xe68c53367349bf7d5ec53f10abbe32effabe41c288eea6b42de67941104e4bc7",
"urls": [
"bzz-raw://e69c6333c17577871f4995af3d3cdb278ad72b721a5c42d66a0b412e8b3559ed",
"dweb:/ipfs/QmUtxoY88otDhFprbvST7LbcxacWrQrn4mZ8QfemBQDAxY"
],
"license": "BUSL-1.1"
},
"contracts/libraries/Position.sol": {
"keccak256": "0x1319e4c172e31427c3b3521dd3c9c9c3949da22e25c9919ae57c47a8c9328e43",
"urls": [
"bzz-raw://1e0885e8e035681836fe02213e165d1ab48cf2488cf6ba8f01964b4b026d2b46",
"dweb:/ipfs/QmR4W3DZYYvctASLFnm7Sf4wk2L77gwNRrTS2mBqtiUaud"
],
"license": "BUSL-1.1"
},
"contracts/libraries/SafeCast.sol": {
"keccak256": "0xb459cbf9f2cda4c38c11916e888cc2afbe4297c5ae6f50a0976eb83ed0dc9b25",
"urls": [
"bzz-raw://5608698d33b18d3f49e3fa1fbdf6e7c6383378f7d53c914dcf14a0411cf7a79b",
"dweb:/ipfs/QmbF4VWDcTPzH17aczU6eCUcqTp9Be7xiuBGB5TMWmtJAi"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/SqrtPriceMath.sol": {
"keccak256": "0x62cb03c7ce6ce037c82fa74e5aabb2431d6b4ddbca1458efdabf5d6af9ca6f90",
"urls": [
"bzz-raw://206e025889f55aa8e5d9db2f846460394b54d6dc6d80a5e4ca1d4b70edd98188",
"dweb:/ipfs/QmNSzKqtUDXHzgXXDjdNv3ZnHZE3LU4KhwNmkrcWtTRGqk"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/SwapMath.sol": {
"keccak256": "0xac5b75b36ff928e88cbec828bdc9db03e681cc3b337d5d7f6be9fd617b3fef7f",
"urls": [
"bzz-raw://6aaea2ecabdb3fec93c7c6be19ea3a034cf396a59ab96f61c57b5214c04b5a6e",
"dweb:/ipfs/QmYyd4ExT6xbvEHZTQBv9nZuvU6xjB6EN4uY8TmK8Tceqv"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/TickBitmap.sol": {
"keccak256": "0x7cccb8dff4c76da872a827f1549dc44cdff384d123e77a5361a02a31902bf15c",
"urls": [
"bzz-raw://88f850cd5bd2bbada4d9514f2516804392c7b23dc2cb541b74e9c88d0a351dcd",
"dweb:/ipfs/QmZh9LvKUG23oFUZXAAa5gn77MguAbZ41VGjkES5U8N9Em"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/TickMath.sol": {
"keccak256": "0xadffea78a3eed37613b57766d87c0bdb9454d2df39de90d7a450e4a8b3207e56",
"urls": [
"bzz-raw://c5043430807061e5ccc82986c59b2e074457ff608111a8bd51b413ceaf661c78",
"dweb:/ipfs/QmXjqKzCrngzidTRmuLUFvwNPqMKtd8xVFLVCycRfEQcWo"
],
"license": "GPL-2.0-or-later"
},
"contracts/libraries/UnsafeMath.sol": {
"keccak256": "0x2a8cb75af05f8557b698b089a0ab19e24279fffb7e87cddf5794404c7eaf1c69",
"urls": [
"bzz-raw://85f68e6d614205f3f0f55f6ac41805e3a7d523d95bda1c443f2e75444443ffe3",
"dweb:/ipfs/QmdCheMqxWNx4CbxG5MH9BUQeSMeeXF6DHkf7Aax4duRUe"
],
"license": "GPL-2.0-or-later"
},
"contracts/types/BalanceDelta.sol": {
"keccak256": "0xb88fc16f2ae715bd796e5cdb77c2297117f18ce2183288ae4680d7f20cce5f85",
"urls": [
"bzz-raw://829baa2d4becbf8f0298fcaafb2305cf57bab5bcccdf8ac10d171bbb68c37e6f",
"dweb:/ipfs/QmPs18e2YgwJECriyft46Rp7p9iECPEpkNXV1gom5NosfF"
],
"license": "GPL-2.0-or-later"
},
"contracts/types/Currency.sol": {
"keccak256": "0x008a7aeff6cdb7709a8e5893c9e9895a8a7ad594a0605586174e576b9888ff80",
"urls": [
"bzz-raw://c773b120bacb261695d4e00973ff25359dbf3aee071d19268833cc76e71f1aa2",
"dweb:/ipfs/QmawinVYJJSWcQH4Lo5Hh7ond58RHAjeCL13FE47a5Egcw"
],
"license": "GPL-2.0-or-later"
},
"contracts/types/LockSentinel.sol": {
"keccak256": "0xb10a648d7d56f778be5e2aa497cb55b375de851fb5c6ea6a68c9a898b831d60c",
"urls": [
"bzz-raw://39c1f6e17e0d727bef600c6552b3db259219b4fa2c3854e6f27c884232304db6",
"dweb:/ipfs/QmXyE5zYUs4JZy4RAJRKq6sAd3GwxB8YZ39g8FgANDTdFt"
],
"license": "GPL-2.0-or-later"
},
"contracts/types/PoolId.sol": {
"keccak256": "0xd28e4ac2a0874b5372ab3873a263701ce625a840fc563c63d5ad8f7b3272f325",
"urls": [
"bzz-raw://0575161cdbe0c3ef8fa023a5f606563ec793bad863446822bdf310bce8dbcccd",
"dweb:/ipfs/QmUM26Umcr3LEfM2sZ6eGtgBa2KmQde6Ea6898n8tt38mv"
],
"license": "GPL-2.0-or-later"
},
"contracts/types/PoolKey.sol": {
"keccak256": "0x4928c59e15db5af3bff68f4d9243ebe11a1dc4a4cbfa57c564db376086a902ce",
"urls": [
"bzz-raw://235245bf768c3b708be7837f6aa3bb6bcab7b25036df99e2cc257363350f6ea7",
"dweb:/ipfs/QmWPurWV2vYoaVNxZyj4DkCqS8Aode5U9JE8WHmbyVR8jH"
],
"license": "GPL-2.0-or-later"
},
"lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol": {
"keccak256": "0x04d6d1342ece664085921a4fabc928a7bcf1cf2873fa81780f61a54dc2b9b66e",
"urls": [
"bzz-raw://c6d2b052effa2e9a7479b0fea53b46f4cbbd91947848ef632aadad20ae2e9275",
"dweb:/ipfs/QmcZp7f5cooGZrhHE8RC1yQR53RFZt19d5fyVqNfbHmPgY"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol": {
"keccak256": "0x8e93de94c9062ebc94fb7e2e3929b0781ac6a2b7772e2f7a59045861c93e5be9",
"urls": [
"bzz-raw://f920a631bf986c610fe573d3c70a2bb6f224f86f4a8550016470c7ee476c9ab5",
"dweb:/ipfs/QmYzsyVMfnaREKHcHv5RPS8Xg5r1Q38E2SDsGBTnXeFWzb"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol": {
"keccak256": "0xc743d2235b8854045c308d2f8f1ed88efed6c2bebf2b7a4a51ea42480c82e566",
"urls": [
"bzz-raw://05e54e397a053f319187999ef4d65446a7f15f693ddd66dfaed4d856f67dac4e",
"dweb:/ipfs/QmbGTFVdZxShg76UPcuLAXm6HBjZx3Vn6CL1eaBhV9rST1"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol": {
"keccak256": "0xa66d18b9a85458d28fc3304717964502ae36f7f8a2ff35bc83f6f85d74b03574",
"urls": [
"bzz-raw://e46c80ea068989111d6103e5521223f9ef337e93de76deed8b03f75c6f7b2797",
"dweb:/ipfs/QmNoSE6knNfFncdDDLTb3fGR6oSQty1srG96Vsx3E9wQdw"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/utils/Address.sol": {
"keccak256": "0x51b758a8815ecc9596c66c37d56b1d33883a444631a3f916b9fe65cb863ef7c4",
"urls": [
"bzz-raw://997ca03557985b3c6f9143a18b6c3a710b3bc1c7f189ee956d305a966ecfb922",
"dweb:/ipfs/QmQaD3Wb62F88SHqmpLttvF6wKuPDQep2LLUcKPekeRzvz"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/utils/Context.sol": {
"keccak256": "0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7",
"urls": [
"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92",
"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": {
"keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b",
"urls": [
"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d",
"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"
],
"license": "MIT"
},
"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": {
"keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1",
"urls": [
"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f",
"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"
],
"license": "MIT"
}
},
"version": 1
},
"ast": {
"absolutePath": "contracts/PoolManager.sol",
"id": 1999,
"exportedSymbols": {
"BalanceDelta": [
12833
],
"Currency": [
12941
],
"CurrencyLibrary": [
13189
],
"ERC1155": [
43320
],
"FeeLibrary": [
3047
],
"Fees": [
390
],
"Hooks": [
3640
],
"IDynamicFeeManager": [
2021
],
"IERC1155Receiver": [
43483
],
"IHookFeeManager": [
2077
],
"IHooks": [
2223
],
"ILockCallback": [
2611
],
"IPoolManager": [
2586
],
"LockDataLibrary": [
3818
],
"LockSentinel": [
13195
],
"NoDelegateCall": [
433
],
"Owned": [
496
],
"Pool": [
5759
],
"PoolId": [
13205
],
"PoolIdLibrary": [
13227
],
"PoolKey": [
13253
],
"PoolManager": [
1998
],
"Position": [
5927
],
"SafeCast": [
6034
]
},
"nodeType": "SourceUnit",
"src": "37:15762:3",
"nodes": [
{
"id": 498,
"nodeType": "PragmaDirective",
"src": "37:24:3",
"nodes": [],
"literals": [
"solidity",
"^",
"0.8",
".20"
]
},
{
"id": 500,
"nodeType": "ImportDirective",
"src": "63:44:3",
"nodes": [],
"absolutePath": "contracts/libraries/Hooks.sol",
"file": "./libraries/Hooks.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 3641,
"symbolAliases": [
{
"foreign": {
"id": 499,
"name": "Hooks",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3640,
"src": "71:5:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 502,
"nodeType": "ImportDirective",
"src": "108:42:3",
"nodes": [],
"absolutePath": "contracts/libraries/Pool.sol",
"file": "./libraries/Pool.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 5760,
"symbolAliases": [
{
"foreign": {
"id": 501,
"name": "Pool",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5759,
"src": "116:4:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 504,
"nodeType": "ImportDirective",
"src": "151:50:3",
"nodes": [],
"absolutePath": "contracts/libraries/SafeCast.sol",
"file": "./libraries/SafeCast.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 6035,
"symbolAliases": [
{
"foreign": {
"id": 503,
"name": "SafeCast",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 6034,
"src": "159:8:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 506,
"nodeType": "ImportDirective",
"src": "202:50:3",
"nodes": [],
"absolutePath": "contracts/libraries/Position.sol",
"file": "./libraries/Position.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 5928,
"symbolAliases": [
{
"foreign": {
"id": 505,
"name": "Position",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 5927,
"src": "210:8:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 508,
"nodeType": "ImportDirective",
"src": "253:54:3",
"nodes": [],
"absolutePath": "contracts/libraries/FeeLibrary.sol",
"file": "./libraries/FeeLibrary.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 3048,
"symbolAliases": [
{
"foreign": {
"id": 507,
"name": "FeeLibrary",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3047,
"src": "261:10:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 511,
"nodeType": "ImportDirective",
"src": "308:63:3",
"nodes": [],
"absolutePath": "contracts/types/Currency.sol",
"file": "./types/Currency.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 13190,
"symbolAliases": [
{
"foreign": {
"id": 509,
"name": "Currency",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12941,
"src": "316:8:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 510,
"name": "CurrencyLibrary",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13189,
"src": "326:15:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 513,
"nodeType": "ImportDirective",
"src": "372:44:3",
"nodes": [],
"absolutePath": "contracts/types/PoolKey.sol",
"file": "./types/PoolKey.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 13254,
"symbolAliases": [
{
"foreign": {
"id": 512,
"name": "PoolKey",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13253,
"src": "380:7:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 515,
"nodeType": "ImportDirective",
"src": "417:64:3",
"nodes": [],
"absolutePath": "contracts/libraries/LockDataLibrary.sol",
"file": "./libraries/LockDataLibrary.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 3819,
"symbolAliases": [
{
"foreign": {
"id": 514,
"name": "LockDataLibrary",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3818,
"src": "425:15:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 517,
"nodeType": "ImportDirective",
"src": "482:52:3",
"nodes": [],
"absolutePath": "contracts/NoDelegateCall.sol",
"file": "./NoDelegateCall.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 434,
"symbolAliases": [
{
"foreign": {
"id": 516,
"name": "NoDelegateCall",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 433,
"src": "490:14:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 519,
"nodeType": "ImportDirective",
"src": "535:34:3",
"nodes": [],
"absolutePath": "contracts/Owned.sol",
"file": "./Owned.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 497,
"symbolAliases": [
{
"foreign": {
"id": 518,
"name": "Owned",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 496,
"src": "543:5:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 521,
"nodeType": "ImportDirective",
"src": "570:47:3",
"nodes": [],
"absolutePath": "contracts/interfaces/IHooks.sol",
"file": "./interfaces/IHooks.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 2224,
"symbolAliases": [
{
"foreign": {
"id": 520,
"name": "IHooks",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2223,
"src": "578:6:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 523,
"nodeType": "ImportDirective",
"src": "618:71:3",
"nodes": [],
"absolutePath": "contracts/interfaces/IDynamicFeeManager.sol",
"file": "./interfaces/IDynamicFeeManager.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 2022,
"symbolAliases": [
{
"foreign": {
"id": 522,
"name": "IDynamicFeeManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2021,
"src": "626:18:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 525,
"nodeType": "ImportDirective",
"src": "690:65:3",
"nodes": [],
"absolutePath": "contracts/interfaces/IHookFeeManager.sol",
"file": "./interfaces/IHookFeeManager.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 2078,
"symbolAliases": [
{
"foreign": {
"id": 524,
"name": "IHookFeeManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2077,
"src": "698:15:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 527,
"nodeType": "ImportDirective",
"src": "756:59:3",
"nodes": [],
"absolutePath": "contracts/interfaces/IPoolManager.sol",
"file": "./interfaces/IPoolManager.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 2587,
"symbolAliases": [
{
"foreign": {
"id": 526,
"name": "IPoolManager",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2586,
"src": "764:12:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 529,
"nodeType": "ImportDirective",
"src": "816:70:3",
"nodes": [],
"absolutePath": "contracts/interfaces/callback/ILockCallback.sol",
"file": "./interfaces/callback/ILockCallback.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 2612,
"symbolAliases": [
{
"foreign": {
"id": 528,
"name": "ILockCallback",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2611,
"src": "824:13:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 531,
"nodeType": "ImportDirective",
"src": "887:32:3",
"nodes": [],
"absolutePath": "contracts/Fees.sol",
"file": "./Fees.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 391,
"symbolAliases": [
{
"foreign": {
"id": 530,
"name": "Fees",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 390,
"src": "895:4:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 533,
"nodeType": "ImportDirective",
"src": "920:74:3",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol",
"file": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 43321,
"symbolAliases": [
{
"foreign": {
"id": 532,
"name": "ERC1155",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43320,
"src": "928:7:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 535,
"nodeType": "ImportDirective",
"src": "995:92:3",
"nodes": [],
"absolutePath": "lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol",
"file": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 43484,
"symbolAliases": [
{
"foreign": {
"id": 534,
"name": "IERC1155Receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43483,
"src": "1003:16:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 538,
"nodeType": "ImportDirective",
"src": "1088:57:3",
"nodes": [],
"absolutePath": "contracts/types/PoolId.sol",
"file": "./types/PoolId.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 13228,
"symbolAliases": [
{
"foreign": {
"id": 536,
"name": "PoolId",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13205,
"src": "1096:6:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
},
{
"foreign": {
"id": 537,
"name": "PoolIdLibrary",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13227,
"src": "1104:13:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 540,
"nodeType": "ImportDirective",
"src": "1146:54:3",
"nodes": [],
"absolutePath": "contracts/types/BalanceDelta.sol",
"file": "./types/BalanceDelta.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 12936,
"symbolAliases": [
{
"foreign": {
"id": 539,
"name": "BalanceDelta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 12833,
"src": "1154:12:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 542,
"nodeType": "ImportDirective",
"src": "1201:54:3",
"nodes": [],
"absolutePath": "contracts/types/LockSentinel.sol",
"file": "./types/LockSentinel.sol",
"nameLocation": "-1:-1:-1",
"scope": 1999,
"sourceUnit": 13200,
"symbolAliases": [
{
"foreign": {
"id": 541,
"name": "LockSentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 13195,
"src": "1209:12:3",
"typeDescriptions": {}
},
"nameLocation": "-1:-1:-1"
}
],
"unitAlias": ""
},
{
"id": 1998,
"nodeType": "ContractDefinition",
"src": "1299:14499:3",
"nodes": [
{
"id": 557,
"nodeType": "UsingForDirective",
"src": "1391:32:3",
"nodes": [],
"global": false,
"libraryName": {
"id": 554,
"name": "PoolIdLibrary",
"nameLocations": [
"1397:13:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13227,
"src": "1397:13:3"
},
"typeName": {
"id": 556,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 555,
"name": "PoolKey",
"nameLocations": [
"1415:7:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13253,
"src": "1415:7:3"
},
"referencedDeclaration": 13253,
"src": "1415:7:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_storage_ptr",
"typeString": "struct PoolKey"
}
}
},
{
"id": 559,
"nodeType": "UsingForDirective",
"src": "1428:21:3",
"nodes": [],
"global": false,
"libraryName": {
"id": 558,
"name": "SafeCast",
"nameLocations": [
"1434:8:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 6034,
"src": "1434:8:3"
}
},
{
"id": 561,
"nodeType": "UsingForDirective",
"src": "1454:17:3",
"nodes": [],
"global": false,
"libraryName": {
"id": 560,
"name": "Pool",
"nameLocations": [
"1460:4:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 5759,
"src": "1460:4:3"
}
},
{
"id": 565,
"nodeType": "UsingForDirective",
"src": "1476:23:3",
"nodes": [],
"global": false,
"libraryName": {
"id": 562,
"name": "Hooks",
"nameLocations": [
"1482:5:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 3640,
"src": "1482:5:3"
},
"typeName": {
"id": 564,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 563,
"name": "IHooks",
"nameLocations": [
"1492:6:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 2223,
"src": "1492:6:3"
},
"referencedDeclaration": 2223,
"src": "1492:6:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IHooks_$2223",
"typeString": "contract IHooks"
}
}
},
{
"id": 571,
"nodeType": "UsingForDirective",
"src": "1504:53:3",
"nodes": [],
"global": false,
"libraryName": {
"id": 566,
"name": "Position",
"nameLocations": [
"1510:8:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 5927,
"src": "1510:8:3"
},
"typeName": {
"id": 570,
"keyName": "",
"keyNameLocation": "-1:-1:-1",
"keyType": {
"id": 567,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1531:7:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "1523:33:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$5776_storage_$",
"typeString": "mapping(bytes32 => struct Position.Info)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 569,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 568,
"name": "Position.Info",
"nameLocations": [
"1542:8:3",
"1551:4:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 5776,
"src": "1542:13:3"
},
"referencedDeclaration": 5776,
"src": "1542:13:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Info_$5776_storage_ptr",
"typeString": "struct Position.Info"
}
}
}
},
{
"id": 575,
"nodeType": "UsingForDirective",
"src": "1562:35:3",
"nodes": [],
"global": false,
"libraryName": {
"id": 572,
"name": "CurrencyLibrary",
"nameLocations": [
"1568:15:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13189,
"src": "1568:15:3"
},
"typeName": {
"id": 574,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 573,
"name": "Currency",
"nameLocations": [
"1588:8:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 12941,
"src": "1588:8:3"
},
"referencedDeclaration": 12941,
"src": "1588:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
}
},
{
"id": 578,
"nodeType": "UsingForDirective",
"src": "1602:28:3",
"nodes": [],
"global": false,
"libraryName": {
"id": 576,
"name": "FeeLibrary",
"nameLocations": [
"1608:10:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 3047,
"src": "1608:10:3"
},
"typeName": {
"id": 577,
"name": "uint24",
"nodeType": "ElementaryTypeName",
"src": "1623:6:3",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
}
},
{
"id": 587,
"nodeType": "VariableDeclaration",
"src": "1669:65:3",
"nodes": [],
"baseFunctions": [
2345
],
"constant": true,
"documentation": {
"id": 579,
"nodeType": "StructuredDocumentation",
"src": "1636:28:3",
"text": "@inheritdoc IPoolManager"
},
"functionSelector": "60460f06",
"mutability": "constant",
"name": "MAX_TICK_SPACING",
"nameLocation": "1700:16:3",
"overrides": {
"id": 581,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1691:8:3"
},
"scope": 1998,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 580,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "1669:5:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"value": {
"expression": {
"arguments": [
{
"id": 584,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1724:5:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_int16_$",
"typeString": "type(int16)"
},
"typeName": {
"id": 583,
"name": "int16",
"nodeType": "ElementaryTypeName",
"src": "1724:5:3",
"typeDescriptions": {}
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_type$_t_int16_$",
"typeString": "type(int16)"
}
],
"id": 582,
"name": "type",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -27,
"src": "1719:4:3",
"typeDescriptions": {
"typeIdentifier": "t_function_metatype_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 585,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "1719:11:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_magic_meta_type_t_int16",
"typeString": "type(int16)"
}
},
"id": 586,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "1731:3:3",
"memberName": "max",
"nodeType": "MemberAccess",
"src": "1719:15:3",
"typeDescriptions": {
"typeIdentifier": "t_int16",
"typeString": "int16"
}
},
"visibility": "public"
},
{
"id": 592,
"nodeType": "VariableDeclaration",
"src": "1774:51:3",
"nodes": [],
"baseFunctions": [
2351
],
"constant": true,
"documentation": {
"id": 588,
"nodeType": "StructuredDocumentation",
"src": "1741:28:3",
"text": "@inheritdoc IPoolManager"
},
"functionSelector": "07eff0dd",
"mutability": "constant",
"name": "MIN_TICK_SPACING",
"nameLocation": "1805:16:3",
"overrides": {
"id": 590,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "1796:8:3"
},
"scope": 1998,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 589,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "1774:5:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"value": {
"hexValue": "31",
"id": 591,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1824:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"visibility": "public"
},
{
"id": 600,
"nodeType": "VariableDeclaration",
"src": "1957:98:3",
"nodes": [],
"baseFunctions": [
2454
],
"constant": false,
"documentation": {
"id": 593,
"nodeType": "StructuredDocumentation",
"src": "1832:120:3",
"text": "@dev Represents the currencies due/owed to each locker.\n Must all net to zero when the last lock is released."
},
"functionSelector": "a54b2831",
"mutability": "mutable",
"name": "currencyDelta",
"nameLocation": "2042:13:3",
"scope": 1998,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_userDefinedValueType$_Currency_$12941_$_t_int256_$_$",
"typeString": "mapping(address => mapping(Currency => int256))"
},
"typeName": {
"id": 599,
"keyName": "locker",
"keyNameLocation": "1973:6:3",
"keyType": {
"id": 594,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1965:7:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1957:77:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_userDefinedValueType$_Currency_$12941_$_t_int256_$_$",
"typeString": "mapping(address => mapping(Currency => int256))"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 598,
"keyName": "currency",
"keyNameLocation": "2000:8:3",
"keyType": {
"id": 596,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 595,
"name": "Currency",
"nameLocations": [
"1991:8:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 12941,
"src": "1991:8:3"
},
"referencedDeclaration": 12941,
"src": "1991:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
"nodeType": "Mapping",
"src": "1983:50:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Currency_$12941_$_t_int256_$",
"typeString": "mapping(Currency => int256)"
},
"valueName": "currencyDelta",
"valueNameLocation": "2019:13:3",
"valueType": {
"id": 597,
"name": "int256",
"nodeType": "ElementaryTypeName",
"src": "2012:6:3",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
}
}
},
"visibility": "public"
},
{
"id": 607,
"nodeType": "VariableDeclaration",
"src": "2095:64:3",
"nodes": [],
"baseFunctions": [
2415
],
"constant": false,
"documentation": {
"id": 601,
"nodeType": "StructuredDocumentation",
"src": "2062:28:3",
"text": "@inheritdoc IPoolManager"
},
"functionSelector": "93c85a21",
"mutability": "mutable",
"name": "reservesOf",
"nameLocation": "2149:10:3",
"overrides": {
"id": 606,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2140:8:3"
},
"scope": 1998,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Currency_$12941_$_t_uint256_$",
"typeString": "mapping(Currency => uint256)"
},
"typeName": {
"id": 605,
"keyName": "currency",
"keyNameLocation": "2112:8:3",
"keyType": {
"id": 603,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 602,
"name": "Currency",
"nameLocations": [
"2103:8:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 12941,
"src": "2103:8:3"
},
"referencedDeclaration": 12941,
"src": "2103:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
"nodeType": "Mapping",
"src": "2095:37:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Currency_$12941_$_t_uint256_$",
"typeString": "mapping(Currency => uint256)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 604,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2124:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"visibility": "public"
},
{
"id": 613,
"nodeType": "VariableDeclaration",
"src": "2166:45:3",
"nodes": [],
"constant": false,
"functionSelector": "b5217bb4",
"mutability": "mutable",
"name": "pools",
"nameLocation": "2206:5:3",
"scope": 1998,
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_PoolId_$13205_$_t_struct$_State_$3951_storage_$",
"typeString": "mapping(PoolId => struct Pool.State)"
},
"typeName": {
"id": 612,
"keyName": "id",
"keyNameLocation": "2181:2:3",
"keyType": {
"id": 609,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 608,
"name": "PoolId",
"nameLocations": [
"2174:6:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13205,
"src": "2174:6:3"
},
"referencedDeclaration": 13205,
"src": "2174:6:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"nodeType": "Mapping",
"src": "2166:32:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_PoolId_$13205_$_t_struct$_State_$3951_storage_$",
"typeString": "mapping(PoolId => struct Pool.State)"
},
"valueName": "",
"valueNameLocation": "-1:-1:-1",
"valueType": {
"id": 611,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 610,
"name": "Pool.State",
"nameLocations": [
"2187:4:3",
"2192:5:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 3951,
"src": "2187:10:3"
},
"referencedDeclaration": 3951,
"src": "2187:10:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$3951_storage_ptr",
"typeString": "struct Pool.State"
}
}
},
"visibility": "public"
},
{
"id": 625,
"nodeType": "FunctionDefinition",
"src": "2218:79:3",
"nodes": [],
"body": {
"id": 624,
"nodeType": "Block",
"src": "2295:2:3",
"nodes": [],
"statements": []
},
"implemented": true,
"kind": "constructor",
"modifiers": [
{
"arguments": [
{
"id": 618,
"name": "controllerGasLimit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 615,
"src": "2263:18:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 619,
"kind": "baseConstructorSpecifier",
"modifierName": {
"id": 617,
"name": "Fees",
"nameLocations": [
"2258:4:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 390,
"src": "2258:4:3"
},
"nodeType": "ModifierInvocation",
"src": "2258:24:3"
},
{
"arguments": [
{
"hexValue": "",
"id": 621,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2291:2:3",
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
"typeString": "literal_string \"\""
},
"value": ""
}
],
"id": 622,
"kind": "baseConstructorSpecifier",
"modifierName": {
"id": 620,
"name": "ERC1155",
"nameLocations": [
"2283:7:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 43320,
"src": "2283:7:3"
},
"nodeType": "ModifierInvocation",
"src": "2283:11:3"
}
],
"name": "",
"nameLocation": "-1:-1:-1",
"parameters": {
"id": 616,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 615,
"mutability": "mutable",
"name": "controllerGasLimit",
"nameLocation": "2238:18:3",
"nodeType": "VariableDeclaration",
"scope": 625,
"src": "2230:26:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 614,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2230:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "2229:28:3"
},
"returnParameters": {
"id": 623,
"nodeType": "ParameterList",
"parameters": [],
"src": "2295:0:3"
},
"scope": 1998,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"id": 641,
"nodeType": "FunctionDefinition",
"src": "2303:121:3",
"nodes": [],
"body": {
"id": 640,
"nodeType": "Block",
"src": "2383:41:3",
"nodes": [],
"statements": [
{
"expression": {
"baseExpression": {
"id": 634,
"name": "pools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 613,
"src": "2400:5:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_PoolId_$13205_$_t_struct$_State_$3951_storage_$",
"typeString": "mapping(PoolId => struct Pool.State storage ref)"
}
},
"id": 638,
"indexExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 635,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 628,
"src": "2406:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 636,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2410:4:3",
"memberName": "toId",
"nodeType": "MemberAccess",
"referencedDeclaration": 13226,
"src": "2406:8:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_PoolKey_$13253_memory_ptr_$returns$_t_userDefinedValueType$_PoolId_$13205_$attached_to$_t_struct$_PoolKey_$13253_memory_ptr_$",
"typeString": "function (struct PoolKey memory) pure returns (PoolId)"
}
},
"id": 637,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "2406:10:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2400:17:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$3951_storage",
"typeString": "struct Pool.State storage ref"
}
},
"functionReturnParameters": 633,
"id": 639,
"nodeType": "Return",
"src": "2393:24:3"
}
]
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_getPool",
"nameLocation": "2312:8:3",
"parameters": {
"id": 629,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 628,
"mutability": "mutable",
"name": "key",
"nameLocation": "2336:3:3",
"nodeType": "VariableDeclaration",
"scope": 641,
"src": "2321:18:3",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey"
},
"typeName": {
"id": 627,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 626,
"name": "PoolKey",
"nameLocations": [
"2321:7:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13253,
"src": "2321:7:3"
},
"referencedDeclaration": 13253,
"src": "2321:7:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_storage_ptr",
"typeString": "struct PoolKey"
}
},
"visibility": "internal"
}
],
"src": "2320:20:3"
},
"returnParameters": {
"id": 633,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 632,
"mutability": "mutable",
"name": "",
"nameLocation": "-1:-1:-1",
"nodeType": "VariableDeclaration",
"scope": 641,
"src": "2363:18:3",
"stateVariable": false,
"storageLocation": "storage",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$3951_storage_ptr",
"typeString": "struct Pool.State"
},
"typeName": {
"id": 631,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 630,
"name": "Pool.State",
"nameLocations": [
"2363:4:3",
"2368:5:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 3951,
"src": "2363:10:3"
},
"referencedDeclaration": 3951,
"src": "2363:10:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$3951_storage_ptr",
"typeString": "struct Pool.State"
}
},
"visibility": "internal"
}
],
"src": "2362:20:3"
},
"scope": 1998,
"stateMutability": "view",
"virtual": false,
"visibility": "private"
},
{
"id": 678,
"nodeType": "FunctionDefinition",
"src": "2463:313:3",
"nodes": [],
"body": {
"id": 677,
"nodeType": "Block",
"src": "2632:144:3",
"nodes": [],
"statements": [
{
"assignments": [
661
],
"declarations": [
{
"constant": false,
"id": 661,
"mutability": "mutable",
"name": "slot0",
"nameLocation": "2660:5:3",
"nodeType": "VariableDeclaration",
"scope": 677,
"src": "2642:23:3",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Slot0_$3917_memory_ptr",
"typeString": "struct Pool.Slot0"
},
"typeName": {
"id": 660,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 659,
"name": "Pool.Slot0",
"nameLocations": [
"2642:4:3",
"2647:5:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 3917,
"src": "2642:10:3"
},
"referencedDeclaration": 3917,
"src": "2642:10:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Slot0_$3917_storage_ptr",
"typeString": "struct Pool.Slot0"
}
},
"visibility": "internal"
}
],
"id": 666,
"initialValue": {
"expression": {
"baseExpression": {
"id": 662,
"name": "pools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 613,
"src": "2668:5:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_PoolId_$13205_$_t_struct$_State_$3951_storage_$",
"typeString": "mapping(PoolId => struct Pool.State storage ref)"
}
},
"id": 664,
"indexExpression": {
"id": 663,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 645,
"src": "2674:2:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2668:9:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$3951_storage",
"typeString": "struct Pool.State storage ref"
}
},
"id": 665,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2678:5:3",
"memberName": "slot0",
"nodeType": "MemberAccess",
"referencedDeclaration": 3930,
"src": "2668:15:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Slot0_$3917_storage",
"typeString": "struct Pool.Slot0 storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2642:41:3"
},
{
"expression": {
"components": [
{
"expression": {
"id": 667,
"name": "slot0",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 661,
"src": "2702:5:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Slot0_$3917_memory_ptr",
"typeString": "struct Pool.Slot0 memory"
}
},
"id": 668,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2708:12:3",
"memberName": "sqrtPriceX96",
"nodeType": "MemberAccess",
"referencedDeclaration": 3910,
"src": "2702:18:3",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
}
},
{
"expression": {
"id": 669,
"name": "slot0",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 661,
"src": "2722:5:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Slot0_$3917_memory_ptr",
"typeString": "struct Pool.Slot0 memory"
}
},
"id": 670,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2728:4:3",
"memberName": "tick",
"nodeType": "MemberAccess",
"referencedDeclaration": 3912,
"src": "2722:10:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
{
"expression": {
"id": 671,
"name": "slot0",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 661,
"src": "2734:5:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Slot0_$3917_memory_ptr",
"typeString": "struct Pool.Slot0 memory"
}
},
"id": 672,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2740:12:3",
"memberName": "protocolFees",
"nodeType": "MemberAccess",
"referencedDeclaration": 3914,
"src": "2734:18:3",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
{
"expression": {
"id": 673,
"name": "slot0",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 661,
"src": "2754:5:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Slot0_$3917_memory_ptr",
"typeString": "struct Pool.Slot0 memory"
}
},
"id": 674,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2760:8:3",
"memberName": "hookFees",
"nodeType": "MemberAccess",
"referencedDeclaration": 3916,
"src": "2754:14:3",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
}
],
"id": 675,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "2701:68:3",
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint160_$_t_int24_$_t_uint24_$_t_uint24_$",
"typeString": "tuple(uint160,int24,uint24,uint24)"
}
},
"functionReturnParameters": 656,
"id": 676,
"nodeType": "Return",
"src": "2694:75:3"
}
]
},
"baseFunctions": [
2366
],
"documentation": {
"id": 642,
"nodeType": "StructuredDocumentation",
"src": "2430:28:3",
"text": "@inheritdoc IPoolManager"
},
"functionSelector": "c815641c",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getSlot0",
"nameLocation": "2472:8:3",
"overrides": {
"id": 647,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2530:8:3"
},
"parameters": {
"id": 646,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 645,
"mutability": "mutable",
"name": "id",
"nameLocation": "2488:2:3",
"nodeType": "VariableDeclaration",
"scope": 678,
"src": "2481:9:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
},
"typeName": {
"id": 644,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 643,
"name": "PoolId",
"nameLocations": [
"2481:6:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13205,
"src": "2481:6:3"
},
"referencedDeclaration": 13205,
"src": "2481:6:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"visibility": "internal"
}
],
"src": "2480:11:3"
},
"returnParameters": {
"id": 656,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 649,
"mutability": "mutable",
"name": "sqrtPriceX96",
"nameLocation": "2564:12:3",
"nodeType": "VariableDeclaration",
"scope": 678,
"src": "2556:20:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
},
"typeName": {
"id": 648,
"name": "uint160",
"nodeType": "ElementaryTypeName",
"src": "2556:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 651,
"mutability": "mutable",
"name": "tick",
"nameLocation": "2584:4:3",
"nodeType": "VariableDeclaration",
"scope": 678,
"src": "2578:10:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 650,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "2578:5:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 653,
"mutability": "mutable",
"name": "protocolFees",
"nameLocation": "2597:12:3",
"nodeType": "VariableDeclaration",
"scope": 678,
"src": "2590:19:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
},
"typeName": {
"id": 652,
"name": "uint24",
"nodeType": "ElementaryTypeName",
"src": "2590:6:3",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 655,
"mutability": "mutable",
"name": "hookFees",
"nameLocation": "2618:8:3",
"nodeType": "VariableDeclaration",
"scope": 678,
"src": "2611:15:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
},
"typeName": {
"id": 654,
"name": "uint24",
"nodeType": "ElementaryTypeName",
"src": "2611:6:3",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
"visibility": "internal"
}
],
"src": "2555:72:3"
},
"scope": 1998,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 694,
"nodeType": "FunctionDefinition",
"src": "2815:127:3",
"nodes": [],
"body": {
"id": 693,
"nodeType": "Block",
"src": "2899:43:3",
"nodes": [],
"statements": [
{
"expression": {
"expression": {
"baseExpression": {
"id": 688,
"name": "pools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 613,
"src": "2916:5:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_PoolId_$13205_$_t_struct$_State_$3951_storage_$",
"typeString": "mapping(PoolId => struct Pool.State storage ref)"
}
},
"id": 690,
"indexExpression": {
"id": 689,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 682,
"src": "2922:2:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2916:9:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$3951_storage",
"typeString": "struct Pool.State storage ref"
}
},
"id": 691,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "2926:9:3",
"memberName": "liquidity",
"nodeType": "MemberAccess",
"referencedDeclaration": 3936,
"src": "2916:19:3",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"functionReturnParameters": 687,
"id": 692,
"nodeType": "Return",
"src": "2909:26:3"
}
]
},
"baseFunctions": [
2375
],
"documentation": {
"id": 679,
"nodeType": "StructuredDocumentation",
"src": "2782:28:3",
"text": "@inheritdoc IPoolManager"
},
"functionSelector": "fa6793d5",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidity",
"nameLocation": "2824:12:3",
"overrides": {
"id": 684,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "2862:8:3"
},
"parameters": {
"id": 683,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 682,
"mutability": "mutable",
"name": "id",
"nameLocation": "2844:2:3",
"nodeType": "VariableDeclaration",
"scope": 694,
"src": "2837:9:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
},
"typeName": {
"id": 681,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 680,
"name": "PoolId",
"nameLocations": [
"2837:6:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13205,
"src": "2837:6:3"
},
"referencedDeclaration": 13205,
"src": "2837:6:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"visibility": "internal"
}
],
"src": "2836:11:3"
},
"returnParameters": {
"id": 687,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 686,
"mutability": "mutable",
"name": "liquidity",
"nameLocation": "2888:9:3",
"nodeType": "VariableDeclaration",
"scope": 694,
"src": "2880:17:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"typeName": {
"id": 685,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "2880:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"visibility": "internal"
}
],
"src": "2879:19:3"
},
"scope": 1998,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 722,
"nodeType": "FunctionDefinition",
"src": "2981:257:3",
"nodes": [],
"body": {
"id": 721,
"nodeType": "Block",
"src": "3151:87:3",
"nodes": [],
"statements": [
{
"expression": {
"expression": {
"arguments": [
{
"id": 715,
"name": "_owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 700,
"src": "3192:6:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 716,
"name": "tickLower",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 702,
"src": "3200:9:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
{
"id": 717,
"name": "tickUpper",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 704,
"src": "3211:9:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_int24",
"typeString": "int24"
},
{
"typeIdentifier": "t_int24",
"typeString": "int24"
}
],
"expression": {
"expression": {
"baseExpression": {
"id": 710,
"name": "pools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 613,
"src": "3168:5:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_PoolId_$13205_$_t_struct$_State_$3951_storage_$",
"typeString": "mapping(PoolId => struct Pool.State storage ref)"
}
},
"id": 712,
"indexExpression": {
"id": 711,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 698,
"src": "3174:2:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3168:9:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$3951_storage",
"typeString": "struct Pool.State storage ref"
}
},
"id": 713,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3178:9:3",
"memberName": "positions",
"nodeType": "MemberAccess",
"referencedDeclaration": 3950,
"src": "3168:19:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$5776_storage_$",
"typeString": "mapping(bytes32 => struct Position.Info storage ref)"
}
},
"id": 714,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3188:3:3",
"memberName": "get",
"nodeType": "MemberAccess",
"referencedDeclaration": 5808,
"src": "3168:23:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_mapping$_t_bytes32_$_t_struct$_Info_$5776_storage_$_$_t_address_$_t_int24_$_t_int24_$returns$_t_struct$_Info_$5776_storage_ptr_$attached_to$_t_mapping$_t_bytes32_$_t_struct$_Info_$5776_storage_$_$",
"typeString": "function (mapping(bytes32 => struct Position.Info storage ref),address,int24,int24) view returns (struct Position.Info storage pointer)"
}
},
"id": 718,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3168:53:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_Info_$5776_storage_ptr",
"typeString": "struct Position.Info storage pointer"
}
},
"id": 719,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3222:9:3",
"memberName": "liquidity",
"nodeType": "MemberAccess",
"referencedDeclaration": 5771,
"src": "3168:63:3",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"functionReturnParameters": 709,
"id": 720,
"nodeType": "Return",
"src": "3161:70:3"
}
]
},
"baseFunctions": [
2390
],
"documentation": {
"id": 695,
"nodeType": "StructuredDocumentation",
"src": "2948:28:3",
"text": "@inheritdoc IPoolManager"
},
"functionSelector": "33aa955b",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLiquidity",
"nameLocation": "2990:12:3",
"overrides": {
"id": 706,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3102:8:3"
},
"parameters": {
"id": 705,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 698,
"mutability": "mutable",
"name": "id",
"nameLocation": "3010:2:3",
"nodeType": "VariableDeclaration",
"scope": 722,
"src": "3003:9:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
},
"typeName": {
"id": 697,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 696,
"name": "PoolId",
"nameLocations": [
"3003:6:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13205,
"src": "3003:6:3"
},
"referencedDeclaration": 13205,
"src": "3003:6:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 700,
"mutability": "mutable",
"name": "_owner",
"nameLocation": "3022:6:3",
"nodeType": "VariableDeclaration",
"scope": 722,
"src": "3014:14:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 699,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3014:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 702,
"mutability": "mutable",
"name": "tickLower",
"nameLocation": "3036:9:3",
"nodeType": "VariableDeclaration",
"scope": 722,
"src": "3030:15:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 701,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "3030:5:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 704,
"mutability": "mutable",
"name": "tickUpper",
"nameLocation": "3053:9:3",
"nodeType": "VariableDeclaration",
"scope": 722,
"src": "3047:15:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 703,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "3047:5:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
}
],
"src": "3002:61:3"
},
"returnParameters": {
"id": 709,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 708,
"mutability": "mutable",
"name": "liquidity",
"nameLocation": "3136:9:3",
"nodeType": "VariableDeclaration",
"scope": 722,
"src": "3128:17:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"typeName": {
"id": 707,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "3128:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"visibility": "internal"
}
],
"src": "3127:19:3"
},
"scope": 1998,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 749,
"nodeType": "FunctionDefinition",
"src": "3244:256:3",
"nodes": [],
"body": {
"id": 748,
"nodeType": "Block",
"src": "3424:76:3",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 743,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 727,
"src": "3465:5:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 744,
"name": "tickLower",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 729,
"src": "3472:9:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
{
"id": 745,
"name": "tickUpper",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 731,
"src": "3483:9:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_int24",
"typeString": "int24"
},
{
"typeIdentifier": "t_int24",
"typeString": "int24"
}
],
"expression": {
"expression": {
"baseExpression": {
"id": 738,
"name": "pools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 613,
"src": "3441:5:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_PoolId_$13205_$_t_struct$_State_$3951_storage_$",
"typeString": "mapping(PoolId => struct Pool.State storage ref)"
}
},
"id": 740,
"indexExpression": {
"id": 739,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 725,
"src": "3447:2:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3441:9:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$3951_storage",
"typeString": "struct Pool.State storage ref"
}
},
"id": 741,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3451:9:3",
"memberName": "positions",
"nodeType": "MemberAccess",
"referencedDeclaration": 3950,
"src": "3441:19:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Info_$5776_storage_$",
"typeString": "mapping(bytes32 => struct Position.Info storage ref)"
}
},
"id": 742,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3461:3:3",
"memberName": "get",
"nodeType": "MemberAccess",
"referencedDeclaration": 5808,
"src": "3441:23:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_mapping$_t_bytes32_$_t_struct$_Info_$5776_storage_$_$_t_address_$_t_int24_$_t_int24_$returns$_t_struct$_Info_$5776_storage_ptr_$attached_to$_t_mapping$_t_bytes32_$_t_struct$_Info_$5776_storage_$_$",
"typeString": "function (mapping(bytes32 => struct Position.Info storage ref),address,int24,int24) view returns (struct Position.Info storage pointer)"
}
},
"id": 746,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3441:52:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_Info_$5776_storage_ptr",
"typeString": "struct Position.Info storage pointer"
}
},
"functionReturnParameters": 737,
"id": 747,
"nodeType": "Return",
"src": "3434:59:3"
}
]
},
"baseFunctions": [
2406
],
"functionSelector": "048d9c70",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getPosition",
"nameLocation": "3253:11:3",
"overrides": {
"id": 733,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3363:8:3"
},
"parameters": {
"id": 732,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 725,
"mutability": "mutable",
"name": "id",
"nameLocation": "3272:2:3",
"nodeType": "VariableDeclaration",
"scope": 749,
"src": "3265:9:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
},
"typeName": {
"id": 724,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 723,
"name": "PoolId",
"nameLocations": [
"3265:6:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13205,
"src": "3265:6:3"
},
"referencedDeclaration": 13205,
"src": "3265:6:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 727,
"mutability": "mutable",
"name": "owner",
"nameLocation": "3284:5:3",
"nodeType": "VariableDeclaration",
"scope": 749,
"src": "3276:13:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 726,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3276:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 729,
"mutability": "mutable",
"name": "tickLower",
"nameLocation": "3297:9:3",
"nodeType": "VariableDeclaration",
"scope": 749,
"src": "3291:15:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 728,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "3291:5:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 731,
"mutability": "mutable",
"name": "tickUpper",
"nameLocation": "3314:9:3",
"nodeType": "VariableDeclaration",
"scope": 749,
"src": "3308:15:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 730,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "3308:5:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
}
],
"src": "3264:60:3"
},
"returnParameters": {
"id": 737,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 736,
"mutability": "mutable",
"name": "position",
"nameLocation": "3410:8:3",
"nodeType": "VariableDeclaration",
"scope": 749,
"src": "3389:29:3",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Info_$5776_memory_ptr",
"typeString": "struct Position.Info"
},
"typeName": {
"id": 735,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 734,
"name": "Position.Info",
"nameLocations": [
"3389:8:3",
"3398:4:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 5776,
"src": "3389:13:3"
},
"referencedDeclaration": 5776,
"src": "3389:13:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Info_$5776_storage_ptr",
"typeString": "struct Position.Info"
}
},
"visibility": "internal"
}
],
"src": "3388:31:3"
},
"scope": 1998,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 764,
"nodeType": "FunctionDefinition",
"src": "3539:126:3",
"nodes": [],
"body": {
"id": 763,
"nodeType": "Block",
"src": "3615:50:3",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"id": 760,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 752,
"src": "3656:1:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"id": 758,
"name": "LockDataLibrary",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3818,
"src": "3632:15:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_LockDataLibrary_$3818_$",
"typeString": "type(library LockDataLibrary)"
}
},
"id": 759,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3648:7:3",
"memberName": "getLock",
"nodeType": "MemberAccess",
"referencedDeclaration": 3780,
"src": "3632:23:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$",
"typeString": "function (uint256) view returns (address)"
}
},
"id": 761,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3632:26:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"functionReturnParameters": 757,
"id": 762,
"nodeType": "Return",
"src": "3625:33:3"
}
]
},
"baseFunctions": [
2423
],
"documentation": {
"id": 750,
"nodeType": "StructuredDocumentation",
"src": "3506:28:3",
"text": "@inheritdoc IPoolManager"
},
"functionSelector": "d68f4dd1",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getLock",
"nameLocation": "3548:7:3",
"overrides": {
"id": 754,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3581:8:3"
},
"parameters": {
"id": 753,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 752,
"mutability": "mutable",
"name": "i",
"nameLocation": "3564:1:3",
"nodeType": "VariableDeclaration",
"scope": 764,
"src": "3556:9:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 751,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3556:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"visibility": "internal"
}
],
"src": "3555:11:3"
},
"returnParameters": {
"id": 757,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 756,
"mutability": "mutable",
"name": "locker",
"nameLocation": "3607:6:3",
"nodeType": "VariableDeclaration",
"scope": 764,
"src": "3599:14:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 755,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "3599:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"src": "3598:16:3"
},
"scope": 1998,
"stateMutability": "view",
"virtual": false,
"visibility": "external"
},
{
"id": 927,
"nodeType": "FunctionDefinition",
"src": "3704:1557:3",
"nodes": [],
"body": {
"id": 926,
"nodeType": "Block",
"src": "3858:1403:3",
"nodes": [],
"statements": [
{
"condition": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"expression": {
"id": 778,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "3872:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 779,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3876:3:3",
"memberName": "fee",
"nodeType": "MemberAccess",
"referencedDeclaration": 13245,
"src": "3872:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
"id": 780,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "3880:19:3",
"memberName": "isStaticFeeTooLarge",
"nodeType": "MemberAccess",
"referencedDeclaration": 3034,
"src": "3872:27:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_uint24_$returns$_t_bool_$attached_to$_t_uint24_$",
"typeString": "function (uint24) pure returns (bool)"
}
},
"id": 781,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3872:29:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 785,
"nodeType": "IfStatement",
"src": "3868:55:3",
"trueBody": {
"errorCall": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 782,
"name": "FeeTooLarge",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2028,
"src": "3910:11:3",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 783,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "3910:13:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 784,
"nodeType": "RevertStatement",
"src": "3903:20:3"
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 789,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 786,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4041:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 787,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4045:11:3",
"memberName": "tickSpacing",
"nodeType": "MemberAccess",
"referencedDeclaration": 13248,
"src": "4041:15:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"id": 788,
"name": "MAX_TICK_SPACING",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 587,
"src": "4059:16:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"src": "4041:34:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 793,
"nodeType": "IfStatement",
"src": "4037:68:3",
"trueBody": {
"errorCall": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 790,
"name": "TickSpacingTooLarge",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2266,
"src": "4084:19:3",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 791,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4084:21:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 792,
"nodeType": "RevertStatement",
"src": "4077:28:3"
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"id": 797,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 794,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4119:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 795,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4123:11:3",
"memberName": "tickSpacing",
"nodeType": "MemberAccess",
"referencedDeclaration": 13248,
"src": "4119:15:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"id": 796,
"name": "MIN_TICK_SPACING",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 592,
"src": "4137:16:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"src": "4119:34:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 801,
"nodeType": "IfStatement",
"src": "4115:68:3",
"trueBody": {
"errorCall": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 798,
"name": "TickSpacingTooSmall",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2269,
"src": "4162:19:3",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 799,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4162:21:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 800,
"nodeType": "RevertStatement",
"src": "4155:28:3"
}
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
},
"function": 12991,
"id": 806,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"expression": {
"id": 802,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4197:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 803,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4201:9:3",
"memberName": "currency0",
"nodeType": "MemberAccess",
"referencedDeclaration": 13238,
"src": "4197:13:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"expression": {
"id": 804,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4213:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 805,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4217:9:3",
"memberName": "currency1",
"nodeType": "MemberAccess",
"referencedDeclaration": 13242,
"src": "4213:13:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
"src": "4197:29:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 810,
"nodeType": "IfStatement",
"src": "4193:75:3",
"trueBody": {
"errorCall": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 807,
"name": "CurrenciesInitializedOutOfOrder",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2272,
"src": "4235:31:3",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 808,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4235:33:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 809,
"nodeType": "RevertStatement",
"src": "4228:40:3"
}
},
{
"condition": {
"id": 817,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "4282:38:3",
"subExpression": {
"arguments": [
{
"expression": {
"id": 814,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4312:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 815,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4316:3:3",
"memberName": "fee",
"nodeType": "MemberAccess",
"referencedDeclaration": 13245,
"src": "4312:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
],
"expression": {
"expression": {
"id": 811,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4283:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 812,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4287:5:3",
"memberName": "hooks",
"nodeType": "MemberAccess",
"referencedDeclaration": 13252,
"src": "4283:9:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IHooks_$2223",
"typeString": "contract IHooks"
}
},
"id": 813,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4293:18:3",
"memberName": "isValidHookAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 3447,
"src": "4283:28:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_contract$_IHooks_$2223_$_t_uint24_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$2223_$",
"typeString": "function (contract IHooks,uint24) pure returns (bool)"
}
},
"id": 816,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4283:37:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 828,
"nodeType": "IfStatement",
"src": "4278:96:3",
"trueBody": {
"errorCall": {
"arguments": [
{
"arguments": [
{
"expression": {
"id": 823,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4363:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 824,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4367:5:3",
"memberName": "hooks",
"nodeType": "MemberAccess",
"referencedDeclaration": 13252,
"src": "4363:9:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IHooks_$2223",
"typeString": "contract IHooks"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_IHooks_$2223",
"typeString": "contract IHooks"
}
],
"id": 822,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4355:7:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 821,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4355:7:3",
"typeDescriptions": {}
}
},
"id": 825,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4355:18:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 818,
"name": "Hooks",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3640,
"src": "4329:5:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Hooks_$3640_$",
"typeString": "type(library Hooks)"
}
},
"id": 820,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4335:19:3",
"memberName": "HookAddressNotValid",
"nodeType": "MemberAccess",
"referencedDeclaration": 3310,
"src": "4329:25:3",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$_t_address_$returns$__$",
"typeString": "function (address) pure"
}
},
"id": 826,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4329:45:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 827,
"nodeType": "RevertStatement",
"src": "4322:52:3"
}
},
{
"condition": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"expression": {
"id": 829,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4389:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 830,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4393:5:3",
"memberName": "hooks",
"nodeType": "MemberAccess",
"referencedDeclaration": 13252,
"src": "4389:9:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IHooks_$2223",
"typeString": "contract IHooks"
}
},
"id": 831,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4399:26:3",
"memberName": "shouldCallBeforeInitialize",
"nodeType": "MemberAccess",
"referencedDeclaration": 3471,
"src": "4389:36:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_contract$_IHooks_$2223_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$2223_$",
"typeString": "function (contract IHooks) pure returns (bool)"
}
},
"id": 832,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4389:38:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 854,
"nodeType": "IfStatement",
"src": "4385:256:3",
"trueBody": {
"id": 853,
"nodeType": "Block",
"src": "4429:212:3",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 845,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"expression": {
"id": 836,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "4474:3:3",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 837,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4478:6:3",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "4474:10:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 838,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4486:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
{
"id": 839,
"name": "sqrtPriceX96",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 770,
"src": "4491:12:3",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
}
},
{
"id": 840,
"name": "hookData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 772,
"src": "4505:8:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
},
{
"typeIdentifier": "t_uint160",
"typeString": "uint160"
},
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
],
"expression": {
"expression": {
"id": 833,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4447:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 834,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4451:5:3",
"memberName": "hooks",
"nodeType": "MemberAccess",
"referencedDeclaration": 13252,
"src": "4447:9:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IHooks_$2223",
"typeString": "contract IHooks"
}
},
"id": 835,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4457:16:3",
"memberName": "beforeInitialize",
"nodeType": "MemberAccess",
"referencedDeclaration": 2101,
"src": "4447:26:3",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_struct$_PoolKey_$13253_memory_ptr_$_t_uint160_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
"typeString": "function (address,struct PoolKey memory,uint160,bytes memory) external returns (bytes4)"
}
},
"id": 841,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4447:67:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"expression": {
"expression": {
"id": 842,
"name": "IHooks",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2223,
"src": "4518:6:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IHooks_$2223_$",
"typeString": "type(contract IHooks)"
}
},
"id": 843,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "4525:16:3",
"memberName": "beforeInitialize",
"nodeType": "MemberAccess",
"referencedDeclaration": 2101,
"src": "4518:23:3",
"typeDescriptions": {
"typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$13253_calldata_ptr_$_t_uint160_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
"typeString": "function IHooks.beforeInitialize(address,struct PoolKey calldata,uint160,bytes calldata) returns (bytes4)"
}
},
"id": 844,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "4542:8:3",
"memberName": "selector",
"nodeType": "MemberAccess",
"src": "4518:32:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "4447:103:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 852,
"nodeType": "IfStatement",
"src": "4443:188:3",
"trueBody": {
"id": 851,
"nodeType": "Block",
"src": "4564:67:3",
"statements": [
{
"errorCall": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 846,
"name": "Hooks",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3640,
"src": "4589:5:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Hooks_$3640_$",
"typeString": "type(library Hooks)"
}
},
"id": 848,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4595:19:3",
"memberName": "InvalidHookResponse",
"nodeType": "MemberAccess",
"referencedDeclaration": 3313,
"src": "4589:25:3",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 849,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4589:27:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 850,
"nodeType": "RevertStatement",
"src": "4582:34:3"
}
]
}
}
]
}
},
{
"assignments": [
857
],
"declarations": [
{
"constant": false,
"id": 857,
"mutability": "mutable",
"name": "id",
"nameLocation": "4658:2:3",
"nodeType": "VariableDeclaration",
"scope": 926,
"src": "4651:9:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
},
"typeName": {
"id": 856,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 855,
"name": "PoolId",
"nameLocations": [
"4651:6:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13205,
"src": "4651:6:3"
},
"referencedDeclaration": 13205,
"src": "4651:6:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"visibility": "internal"
}
],
"id": 861,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 858,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4663:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 859,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4667:4:3",
"memberName": "toId",
"nodeType": "MemberAccess",
"referencedDeclaration": 13226,
"src": "4663:8:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_struct$_PoolKey_$13253_memory_ptr_$returns$_t_userDefinedValueType$_PoolId_$13205_$attached_to$_t_struct$_PoolKey_$13253_memory_ptr_$",
"typeString": "function (struct PoolKey memory) pure returns (PoolId)"
}
},
"id": 860,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4663:10:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4651:22:3"
},
{
"assignments": [
863
],
"declarations": [
{
"constant": false,
"id": 863,
"mutability": "mutable",
"name": "protocolFees",
"nameLocation": "4690:12:3",
"nodeType": "VariableDeclaration",
"scope": 926,
"src": "4683:19:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
},
"typeName": {
"id": 862,
"name": "uint24",
"nodeType": "ElementaryTypeName",
"src": "4683:6:3",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
"visibility": "internal"
}
],
"id": 867,
"initialValue": {
"arguments": [
{
"id": 865,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4724:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
],
"id": 864,
"name": "_fetchProtocolFees",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 137,
"src": "4705:18:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_struct$_PoolKey_$13253_memory_ptr_$returns$_t_uint24_$",
"typeString": "function (struct PoolKey memory) view returns (uint24)"
}
},
"id": 866,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4705:23:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4683:45:3"
},
{
"assignments": [
869
],
"declarations": [
{
"constant": false,
"id": 869,
"mutability": "mutable",
"name": "hookFees",
"nameLocation": "4745:8:3",
"nodeType": "VariableDeclaration",
"scope": 926,
"src": "4738:15:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
},
"typeName": {
"id": 868,
"name": "uint24",
"nodeType": "ElementaryTypeName",
"src": "4738:6:3",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
"visibility": "internal"
}
],
"id": 873,
"initialValue": {
"arguments": [
{
"id": 871,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4771:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
],
"id": 870,
"name": "_fetchHookFees",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 209,
"src": "4756:14:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_struct$_PoolKey_$13253_memory_ptr_$returns$_t_uint24_$",
"typeString": "function (struct PoolKey memory) view returns (uint24)"
}
},
"id": 872,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4756:19:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4738:37:3"
},
{
"expression": {
"id": 883,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 874,
"name": "tick",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 776,
"src": "4785:4:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 879,
"name": "sqrtPriceX96",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 770,
"src": "4813:12:3",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
}
},
{
"id": 880,
"name": "protocolFees",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 863,
"src": "4827:12:3",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
{
"id": 881,
"name": "hookFees",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 869,
"src": "4841:8:3",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint160",
"typeString": "uint160"
},
{
"typeIdentifier": "t_uint24",
"typeString": "uint24"
},
{
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
],
"expression": {
"baseExpression": {
"id": 875,
"name": "pools",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 613,
"src": "4792:5:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_PoolId_$13205_$_t_struct$_State_$3951_storage_$",
"typeString": "mapping(PoolId => struct Pool.State storage ref)"
}
},
"id": 877,
"indexExpression": {
"id": 876,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 857,
"src": "4798:2:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4792:9:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_State_$3951_storage",
"typeString": "struct Pool.State storage ref"
}
},
"id": 878,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4802:10:3",
"memberName": "initialize",
"nodeType": "MemberAccess",
"referencedDeclaration": 4029,
"src": "4792:20:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_State_$3951_storage_ptr_$_t_uint160_$_t_uint24_$_t_uint24_$returns$_t_int24_$attached_to$_t_struct$_State_$3951_storage_ptr_$",
"typeString": "function (struct Pool.State storage pointer,uint160,uint24,uint24) returns (int24)"
}
},
"id": 882,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4792:58:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"src": "4785:65:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"id": 884,
"nodeType": "ExpressionStatement",
"src": "4785:65:3"
},
{
"condition": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"expression": {
"id": 885,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4865:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 886,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4869:5:3",
"memberName": "hooks",
"nodeType": "MemberAccess",
"referencedDeclaration": 13252,
"src": "4865:9:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IHooks_$2223",
"typeString": "contract IHooks"
}
},
"id": 887,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4875:25:3",
"memberName": "shouldCallAfterInitialize",
"nodeType": "MemberAccess",
"referencedDeclaration": 3495,
"src": "4865:35:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_contract$_IHooks_$2223_$returns$_t_bool_$attached_to$_t_contract$_IHooks_$2223_$",
"typeString": "function (contract IHooks) pure returns (bool)"
}
},
"id": 888,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4865:37:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 911,
"nodeType": "IfStatement",
"src": "4861:297:3",
"trueBody": {
"id": 910,
"nodeType": "Block",
"src": "4904:254:3",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
},
"id": 902,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [
{
"expression": {
"id": 892,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "4965:3:3",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 893,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4969:6:3",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "4965:10:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"id": 894,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4977:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
{
"id": 895,
"name": "sqrtPriceX96",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 770,
"src": "4982:12:3",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
}
},
{
"id": 896,
"name": "tick",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 776,
"src": "4996:4:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
{
"id": 897,
"name": "hookData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 772,
"src": "5002:8:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
},
{
"typeIdentifier": "t_uint160",
"typeString": "uint160"
},
{
"typeIdentifier": "t_int24",
"typeString": "int24"
},
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
],
"expression": {
"expression": {
"id": 889,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "4939:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 890,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4943:5:3",
"memberName": "hooks",
"nodeType": "MemberAccess",
"referencedDeclaration": 13252,
"src": "4939:9:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IHooks_$2223",
"typeString": "contract IHooks"
}
},
"id": 891,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "4949:15:3",
"memberName": "afterInitialize",
"nodeType": "MemberAccess",
"referencedDeclaration": 2118,
"src": "4939:25:3",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_struct$_PoolKey_$13253_memory_ptr_$_t_uint160_$_t_int24_$_t_bytes_memory_ptr_$returns$_t_bytes4_$",
"typeString": "function (address,struct PoolKey memory,uint160,int24,bytes memory) external returns (bytes4)"
}
},
"id": 898,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "4939:72:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"expression": {
"expression": {
"id": 899,
"name": "IHooks",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2223,
"src": "5035:6:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IHooks_$2223_$",
"typeString": "type(contract IHooks)"
}
},
"id": 900,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "5042:15:3",
"memberName": "afterInitialize",
"nodeType": "MemberAccess",
"referencedDeclaration": 2118,
"src": "5035:22:3",
"typeDescriptions": {
"typeIdentifier": "t_function_declaration_nonpayable$_t_address_$_t_struct$_PoolKey_$13253_calldata_ptr_$_t_uint160_$_t_int24_$_t_bytes_calldata_ptr_$returns$_t_bytes4_$",
"typeString": "function IHooks.afterInitialize(address,struct PoolKey calldata,uint160,int24,bytes calldata) returns (bytes4)"
}
},
"id": 901,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberLocation": "5058:8:3",
"memberName": "selector",
"nodeType": "MemberAccess",
"src": "5035:31:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes4",
"typeString": "bytes4"
}
},
"src": "4939:127:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 909,
"nodeType": "IfStatement",
"src": "4918:230:3",
"trueBody": {
"id": 908,
"nodeType": "Block",
"src": "5081:67:3",
"statements": [
{
"errorCall": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 903,
"name": "Hooks",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3640,
"src": "5106:5:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Hooks_$3640_$",
"typeString": "type(library Hooks)"
}
},
"id": 905,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5112:19:3",
"memberName": "InvalidHookResponse",
"nodeType": "MemberAccess",
"referencedDeclaration": 3313,
"src": "5106:25:3",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 906,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5106:27:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 907,
"nodeType": "RevertStatement",
"src": "5099:34:3"
}
]
}
}
]
}
},
{
"eventCall": {
"arguments": [
{
"id": 913,
"name": "id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 857,
"src": "5184:2:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
}
},
{
"expression": {
"id": 914,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "5188:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 915,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5192:9:3",
"memberName": "currency0",
"nodeType": "MemberAccess",
"referencedDeclaration": 13238,
"src": "5188:13:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
{
"expression": {
"id": 916,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "5203:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 917,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5207:9:3",
"memberName": "currency1",
"nodeType": "MemberAccess",
"referencedDeclaration": 13242,
"src": "5203:13:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
{
"expression": {
"id": 918,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "5218:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 919,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5222:3:3",
"memberName": "fee",
"nodeType": "MemberAccess",
"referencedDeclaration": 13245,
"src": "5218:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint24",
"typeString": "uint24"
}
},
{
"expression": {
"id": 920,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "5227:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 921,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5231:11:3",
"memberName": "tickSpacing",
"nodeType": "MemberAccess",
"referencedDeclaration": 13248,
"src": "5227:15:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
{
"expression": {
"id": 922,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 768,
"src": "5244:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 923,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5248:5:3",
"memberName": "hooks",
"nodeType": "MemberAccess",
"referencedDeclaration": 13252,
"src": "5244:9:3",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IHooks_$2223",
"typeString": "contract IHooks"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_PoolId_$13205",
"typeString": "PoolId"
},
{
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
},
{
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
},
{
"typeIdentifier": "t_uint24",
"typeString": "uint24"
},
{
"typeIdentifier": "t_int24",
"typeString": "int24"
},
{
"typeIdentifier": "t_contract$_IHooks_$2223",
"typeString": "contract IHooks"
}
],
"id": 912,
"name": "Initialize",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2291,
"src": "5173:10:3",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_userDefinedValueType$_PoolId_$13205_$_t_userDefinedValueType$_Currency_$12941_$_t_userDefinedValueType$_Currency_$12941_$_t_uint24_$_t_int24_$_t_contract$_IHooks_$2223_$returns$__$",
"typeString": "function (PoolId,Currency,Currency,uint24,int24,contract IHooks)"
}
},
"id": 924,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5173:81:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 925,
"nodeType": "EmitStatement",
"src": "5168:86:3"
}
]
},
"baseFunctions": [
2443
],
"documentation": {
"id": 765,
"nodeType": "StructuredDocumentation",
"src": "3671:28:3",
"text": "@inheritdoc IPoolManager"
},
"functionSelector": "695c5bf5",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "initialize",
"nameLocation": "3713:10:3",
"overrides": {
"id": 774,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "3816:8:3"
},
"parameters": {
"id": 773,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 768,
"mutability": "mutable",
"name": "key",
"nameLocation": "3739:3:3",
"nodeType": "VariableDeclaration",
"scope": 927,
"src": "3724:18:3",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey"
},
"typeName": {
"id": 767,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 766,
"name": "PoolKey",
"nameLocations": [
"3724:7:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13253,
"src": "3724:7:3"
},
"referencedDeclaration": 13253,
"src": "3724:7:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_storage_ptr",
"typeString": "struct PoolKey"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 770,
"mutability": "mutable",
"name": "sqrtPriceX96",
"nameLocation": "3752:12:3",
"nodeType": "VariableDeclaration",
"scope": 927,
"src": "3744:20:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
},
"typeName": {
"id": 769,
"name": "uint160",
"nodeType": "ElementaryTypeName",
"src": "3744:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint160",
"typeString": "uint160"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 772,
"mutability": "mutable",
"name": "hookData",
"nameLocation": "3781:8:3",
"nodeType": "VariableDeclaration",
"scope": 927,
"src": "3766:23:3",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 771,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3766:5:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "3723:67:3"
},
"returnParameters": {
"id": 777,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 776,
"mutability": "mutable",
"name": "tick",
"nameLocation": "3848:4:3",
"nodeType": "VariableDeclaration",
"scope": 927,
"src": "3842:10:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
},
"typeName": {
"id": 775,
"name": "int24",
"nodeType": "ElementaryTypeName",
"src": "3842:5:3",
"typeDescriptions": {
"typeIdentifier": "t_int24",
"typeString": "int24"
}
},
"visibility": "internal"
}
],
"src": "3841:12:3"
},
"scope": 1998,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 996,
"nodeType": "FunctionDefinition",
"src": "5300:626:3",
"nodes": [],
"body": {
"id": 995,
"nodeType": "Block",
"src": "5383:543:3",
"nodes": [],
"statements": [
{
"assignments": [
938
],
"declarations": [
{
"constant": false,
"id": 938,
"mutability": "mutable",
"name": "sentinel",
"nameLocation": "5406:8:3",
"nodeType": "VariableDeclaration",
"scope": 995,
"src": "5393:21:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
},
"typeName": {
"id": 937,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 936,
"name": "LockSentinel",
"nameLocations": [
"5393:12:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13195,
"src": "5393:12:3"
},
"referencedDeclaration": 13195,
"src": "5393:12:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"visibility": "internal"
}
],
"id": 942,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 939,
"name": "LockDataLibrary",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3818,
"src": "5417:15:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_LockDataLibrary_$3818_$",
"typeString": "type(library LockDataLibrary)"
}
},
"id": 940,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5433:15:3",
"memberName": "getLockSentinel",
"nodeType": "MemberAccess",
"referencedDeclaration": 3817,
"src": "5417:31:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function () view returns (LockSentinel)"
}
},
"id": 941,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5417:33:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5393:57:3"
},
{
"expression": {
"arguments": [
{
"expression": {
"id": 946,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "5474:3:3",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 947,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5478:6:3",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "5474:10:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"id": 943,
"name": "sentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "5460:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 945,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5469:4:3",
"memberName": "push",
"nodeType": "MemberAccess",
"referencedDeclaration": 3702,
"src": "5460:13:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_userDefinedValueType$_LockSentinel_$13195_$_t_address_$returns$__$attached_to$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function (LockSentinel,address)"
}
},
"id": 948,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5460:25:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 949,
"nodeType": "ExpressionStatement",
"src": "5460:25:3"
},
{
"expression": {
"id": 958,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 950,
"name": "result",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 934,
"src": "5603:6:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [
{
"id": 956,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 930,
"src": "5651:4:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
],
"expression": {
"arguments": [
{
"expression": {
"id": 952,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "5626:3:3",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 953,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5630:6:3",
"memberName": "sender",
"nodeType": "MemberAccess",
"src": "5626:10:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 951,
"name": "ILockCallback",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2611,
"src": "5612:13:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ILockCallback_$2611_$",
"typeString": "type(contract ILockCallback)"
}
},
"id": 954,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5612:25:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ILockCallback_$2611",
"typeString": "contract ILockCallback"
}
},
"id": 955,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5638:12:3",
"memberName": "lockAcquired",
"nodeType": "MemberAccess",
"referencedDeclaration": 2610,
"src": "5612:38:3",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (bytes memory) external returns (bytes memory)"
}
},
"id": 957,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5612:44:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"src": "5603:53:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 959,
"nodeType": "ExpressionStatement",
"src": "5603:53:3"
},
{
"expression": {
"id": 964,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"id": 960,
"name": "sentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "5667:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 961,
"name": "LockDataLibrary",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3818,
"src": "5678:15:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_LockDataLibrary_$3818_$",
"typeString": "type(library LockDataLibrary)"
}
},
"id": 962,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5694:15:3",
"memberName": "getLockSentinel",
"nodeType": "MemberAccess",
"referencedDeclaration": 3817,
"src": "5678:31:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function () view returns (LockSentinel)"
}
},
"id": 963,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5678:33:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"src": "5667:44:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 965,
"nodeType": "ExpressionStatement",
"src": "5667:44:3"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 970,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 966,
"name": "sentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "5725:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 967,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5734:6:3",
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": 3738,
"src": "5725:15:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_LockSentinel_$13195_$returns$_t_uint128_$attached_to$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function (LockSentinel) pure returns (uint128)"
}
},
"id": 968,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5725:17:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "31",
"id": 969,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5746:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "5725:22:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 993,
"nodeType": "Block",
"src": "5881:39:3",
"statements": [
{
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 988,
"name": "sentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "5895:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 990,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5904:3:3",
"memberName": "pop",
"nodeType": "MemberAccess",
"referencedDeclaration": 3728,
"src": "5895:12:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_userDefinedValueType$_LockSentinel_$13195_$returns$__$attached_to$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function (LockSentinel)"
}
},
"id": 991,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5895:14:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 992,
"nodeType": "ExpressionStatement",
"src": "5895:14:3"
}
]
},
"id": 994,
"nodeType": "IfStatement",
"src": "5721:199:3",
"trueBody": {
"id": 987,
"nodeType": "Block",
"src": "5749:126:3",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 975,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 971,
"name": "sentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "5767:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 972,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5776:17:3",
"memberName": "nonzeroDeltaCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 3748,
"src": "5767:26:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_LockSentinel_$13195_$returns$_t_uint128_$attached_to$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function (LockSentinel) pure returns (uint128)"
}
},
"id": 973,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5767:28:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"hexValue": "30",
"id": 974,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5799:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "5767:33:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 979,
"nodeType": "IfStatement",
"src": "5763:66:3",
"trueBody": {
"errorCall": {
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 976,
"name": "CurrencyNotSettled",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2255,
"src": "5809:18:3",
"typeDescriptions": {
"typeIdentifier": "t_function_error_pure$__$returns$__$",
"typeString": "function () pure"
}
},
"id": 977,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5809:20:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 978,
"nodeType": "RevertStatement",
"src": "5802:27:3"
}
},
{
"expression": {
"arguments": [
{
"hexValue": "30",
"id": 983,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5859:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
{
"hexValue": "30",
"id": 984,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5862:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"expression": {
"id": 980,
"name": "sentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "5843:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 982,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "5852:6:3",
"memberName": "update",
"nodeType": "MemberAccess",
"referencedDeclaration": 3764,
"src": "5843:15:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_userDefinedValueType$_LockSentinel_$13195_$_t_uint128_$_t_uint128_$returns$__$attached_to$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function (LockSentinel,uint128,uint128)"
}
},
"id": 985,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "5843:21:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 986,
"nodeType": "ExpressionStatement",
"src": "5843:21:3"
}
]
}
}
]
},
"baseFunctions": [
2462
],
"documentation": {
"id": 928,
"nodeType": "StructuredDocumentation",
"src": "5267:28:3",
"text": "@inheritdoc IPoolManager"
},
"functionSelector": "81548319",
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "lock",
"nameLocation": "5309:4:3",
"overrides": {
"id": 932,
"nodeType": "OverrideSpecifier",
"overrides": [],
"src": "5344:8:3"
},
"parameters": {
"id": 931,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 930,
"mutability": "mutable",
"name": "data",
"nameLocation": "5329:4:3",
"nodeType": "VariableDeclaration",
"scope": 996,
"src": "5314:19:3",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 929,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5314:5:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5313:21:3"
},
"returnParameters": {
"id": 935,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 934,
"mutability": "mutable",
"name": "result",
"nameLocation": "5375:6:3",
"nodeType": "VariableDeclaration",
"scope": 996,
"src": "5362:19:3",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 933,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5362:5:3",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"visibility": "internal"
}
],
"src": "5361:21:3"
},
"scope": 1998,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
},
{
"id": 1084,
"nodeType": "FunctionDefinition",
"src": "5932:699:3",
"nodes": [],
"body": {
"id": 1083,
"nodeType": "Block",
"src": "5997:634:3",
"nodes": [],
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_int128",
"typeString": "int128"
},
"id": 1006,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1004,
"name": "delta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1001,
"src": "6011:5:3",
"typeDescriptions": {
"typeIdentifier": "t_int128",
"typeString": "int128"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 1005,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6020:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "6011:10:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1008,
"nodeType": "IfStatement",
"src": "6007:23:3",
"trueBody": {
"functionReturnParameters": 1003,
"id": 1007,
"nodeType": "Return",
"src": "6023:7:3"
}
},
{
"assignments": [
1011
],
"declarations": [
{
"constant": false,
"id": 1011,
"mutability": "mutable",
"name": "sentinel",
"nameLocation": "6053:8:3",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "6040:21:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
},
"typeName": {
"id": 1010,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 1009,
"name": "LockSentinel",
"nameLocations": [
"6040:12:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13195,
"src": "6040:12:3"
},
"referencedDeclaration": 13195,
"src": "6040:12:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"visibility": "internal"
}
],
"id": 1015,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 1012,
"name": "LockDataLibrary",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3818,
"src": "6064:15:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_LockDataLibrary_$3818_$",
"typeString": "type(library LockDataLibrary)"
}
},
"id": 1013,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6080:15:3",
"memberName": "getLockSentinel",
"nodeType": "MemberAccess",
"referencedDeclaration": 3817,
"src": "6064:31:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function () view returns (LockSentinel)"
}
},
"id": 1014,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6064:33:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6040:57:3"
},
{
"assignments": [
1017
],
"declarations": [
{
"constant": false,
"id": 1017,
"mutability": "mutable",
"name": "locker",
"nameLocation": "6115:6:3",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "6107:14:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1016,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6107:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 1021,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 1018,
"name": "sentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1011,
"src": "6124:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 1019,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6133:13:3",
"memberName": "getActiveLock",
"nodeType": "MemberAccess",
"referencedDeclaration": 3805,
"src": "6124:22:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_LockSentinel_$13195_$returns$_t_address_$attached_to$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function (LockSentinel) view returns (address)"
}
},
"id": 1020,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6124:24:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6107:41:3"
},
{
"assignments": [
1023
],
"declarations": [
{
"constant": false,
"id": 1023,
"mutability": "mutable",
"name": "current",
"nameLocation": "6165:7:3",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "6158:14:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
},
"typeName": {
"id": 1022,
"name": "int256",
"nodeType": "ElementaryTypeName",
"src": "6158:6:3",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"visibility": "internal"
}
],
"id": 1029,
"initialValue": {
"baseExpression": {
"baseExpression": {
"id": 1024,
"name": "currencyDelta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 600,
"src": "6175:13:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_userDefinedValueType$_Currency_$12941_$_t_int256_$_$",
"typeString": "mapping(address => mapping(Currency => int256))"
}
},
"id": 1026,
"indexExpression": {
"id": 1025,
"name": "locker",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1017,
"src": "6189:6:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6175:21:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Currency_$12941_$_t_int256_$",
"typeString": "mapping(Currency => int256)"
}
},
"id": 1028,
"indexExpression": {
"id": 1027,
"name": "currency",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 999,
"src": "6197:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6175:31:3",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6158:48:3"
},
{
"assignments": [
1031
],
"declarations": [
{
"constant": false,
"id": 1031,
"mutability": "mutable",
"name": "next",
"nameLocation": "6223:4:3",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "6216:11:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
},
"typeName": {
"id": 1030,
"name": "int256",
"nodeType": "ElementaryTypeName",
"src": "6216:6:3",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"visibility": "internal"
}
],
"id": 1035,
"initialValue": {
"commonType": {
"typeIdentifier": "t_int256",
"typeString": "int256"
},
"id": 1034,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1032,
"name": "current",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1023,
"src": "6230:7:3",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"id": 1033,
"name": "delta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1001,
"src": "6240:5:3",
"typeDescriptions": {
"typeIdentifier": "t_int128",
"typeString": "int128"
}
},
"src": "6230:15:3",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6216:29:3"
},
{
"assignments": [
1037
],
"declarations": [
{
"constant": false,
"id": 1037,
"mutability": "mutable",
"name": "nonzeroDeltaCount",
"nameLocation": "6264:17:3",
"nodeType": "VariableDeclaration",
"scope": 1083,
"src": "6256:25:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"typeName": {
"id": 1036,
"name": "uint128",
"nodeType": "ElementaryTypeName",
"src": "6256:7:3",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"visibility": "internal"
}
],
"id": 1041,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 1038,
"name": "sentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1011,
"src": "6284:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 1039,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6293:17:3",
"memberName": "nonzeroDeltaCount",
"nodeType": "MemberAccess",
"referencedDeclaration": 3748,
"src": "6284:26:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_LockSentinel_$13195_$returns$_t_uint128_$attached_to$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function (LockSentinel) pure returns (uint128)"
}
},
"id": 1040,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6284:28:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6256:56:3"
},
{
"id": 1074,
"nodeType": "UncheckedBlock",
"src": "6323:253:3",
"statements": [
{
"condition": {
"commonType": {
"typeIdentifier": "t_int256",
"typeString": "int256"
},
"id": 1044,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1042,
"name": "next",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "6351:4:3",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 1043,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6359:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "6351:9:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"condition": {
"commonType": {
"typeIdentifier": "t_int256",
"typeString": "int256"
},
"id": 1059,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1057,
"name": "current",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1023,
"src": "6462:7:3",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"hexValue": "30",
"id": 1058,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6473:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "6462:12:3",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1072,
"nodeType": "IfStatement",
"src": "6458:108:3",
"trueBody": {
"id": 1071,
"nodeType": "Block",
"src": "6476:90:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 1063,
"name": "sentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1011,
"src": "6510:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 1064,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6519:6:3",
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": 3738,
"src": "6510:15:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_LockSentinel_$13195_$returns$_t_uint128_$attached_to$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function (LockSentinel) pure returns (uint128)"
}
},
"id": 1065,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6510:17:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
{
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 1068,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1066,
"name": "nonzeroDeltaCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1037,
"src": "6529:17:3",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"hexValue": "31",
"id": 1067,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6549:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "6529:21:3",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
],
"expression": {
"id": 1060,
"name": "sentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1011,
"src": "6494:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 1062,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6503:6:3",
"memberName": "update",
"nodeType": "MemberAccess",
"referencedDeclaration": 3764,
"src": "6494:15:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_userDefinedValueType$_LockSentinel_$13195_$_t_uint128_$_t_uint128_$returns$__$attached_to$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function (LockSentinel,uint128,uint128)"
}
},
"id": 1069,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6494:57:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1070,
"nodeType": "ExpressionStatement",
"src": "6494:57:3"
}
]
}
},
"id": 1073,
"nodeType": "IfStatement",
"src": "6347:219:3",
"trueBody": {
"id": 1056,
"nodeType": "Block",
"src": "6362:90:3",
"statements": [
{
"expression": {
"arguments": [
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 1048,
"name": "sentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1011,
"src": "6396:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 1049,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6405:6:3",
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": 3738,
"src": "6396:15:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_LockSentinel_$13195_$returns$_t_uint128_$attached_to$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function (LockSentinel) pure returns (uint128)"
}
},
"id": 1050,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6396:17:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
{
"commonType": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
"id": 1053,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"id": 1051,
"name": "nonzeroDeltaCount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1037,
"src": "6415:17:3",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"hexValue": "31",
"id": 1052,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6435:1:3",
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "6415:21:3",
"typeDescriptions": {
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
},
{
"typeIdentifier": "t_uint128",
"typeString": "uint128"
}
],
"expression": {
"id": 1045,
"name": "sentinel",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1011,
"src": "6380:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 1047,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6389:6:3",
"memberName": "update",
"nodeType": "MemberAccess",
"referencedDeclaration": 3764,
"src": "6380:15:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_userDefinedValueType$_LockSentinel_$13195_$_t_uint128_$_t_uint128_$returns$__$attached_to$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function (LockSentinel,uint128,uint128)"
}
},
"id": 1054,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6380:57:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1055,
"nodeType": "ExpressionStatement",
"src": "6380:57:3"
}
]
}
}
]
},
{
"expression": {
"id": 1081,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"baseExpression": {
"baseExpression": {
"id": 1075,
"name": "currencyDelta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 600,
"src": "6586:13:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_userDefinedValueType$_Currency_$12941_$_t_int256_$_$",
"typeString": "mapping(address => mapping(Currency => int256))"
}
},
"id": 1078,
"indexExpression": {
"id": 1076,
"name": "locker",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1017,
"src": "6600:6:3",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6586:21:3",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_userDefinedValueType$_Currency_$12941_$_t_int256_$",
"typeString": "mapping(Currency => int256)"
}
},
"id": 1079,
"indexExpression": {
"id": 1077,
"name": "currency",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 999,
"src": "6608:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "6586:31:3",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"id": 1080,
"name": "next",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1031,
"src": "6620:4:3",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"src": "6586:38:3",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"id": 1082,
"nodeType": "ExpressionStatement",
"src": "6586:38:3"
}
]
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_accountDelta",
"nameLocation": "5941:13:3",
"parameters": {
"id": 1002,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 999,
"mutability": "mutable",
"name": "currency",
"nameLocation": "5964:8:3",
"nodeType": "VariableDeclaration",
"scope": 1084,
"src": "5955:17:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
},
"typeName": {
"id": 998,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 997,
"name": "Currency",
"nameLocations": [
"5955:8:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 12941,
"src": "5955:8:3"
},
"referencedDeclaration": 12941,
"src": "5955:8:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 1001,
"mutability": "mutable",
"name": "delta",
"nameLocation": "5981:5:3",
"nodeType": "VariableDeclaration",
"scope": 1084,
"src": "5974:12:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_int128",
"typeString": "int128"
},
"typeName": {
"id": 1000,
"name": "int128",
"nodeType": "ElementaryTypeName",
"src": "5974:6:3",
"typeDescriptions": {
"typeIdentifier": "t_int128",
"typeString": "int128"
}
},
"visibility": "internal"
}
],
"src": "5954:33:3"
},
"returnParameters": {
"id": 1003,
"nodeType": "ParameterList",
"parameters": [],
"src": "5997:0:3"
},
"scope": 1998,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"id": 1111,
"nodeType": "FunctionDefinition",
"src": "6719:200:3",
"nodes": [],
"body": {
"id": 1110,
"nodeType": "Block",
"src": "6802:117:3",
"nodes": [],
"statements": [
{
"expression": {
"arguments": [
{
"expression": {
"id": 1095,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1088,
"src": "6826:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 1096,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6830:9:3",
"memberName": "currency0",
"nodeType": "MemberAccess",
"referencedDeclaration": 13238,
"src": "6826:13:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 1097,
"name": "delta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1091,
"src": "6841:5:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"id": 1098,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6847:7:3",
"memberName": "amount0",
"nodeType": "MemberAccess",
"referencedDeclaration": 12924,
"src": "6841:13:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_BalanceDelta_$12833_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BalanceDelta_$12833_$",
"typeString": "function (BalanceDelta) pure returns (int128)"
}
},
"id": 1099,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6841:15:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_int128",
"typeString": "int128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
},
{
"typeIdentifier": "t_int128",
"typeString": "int128"
}
],
"id": 1094,
"name": "_accountDelta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1084,
"src": "6812:13:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$12941_$_t_int128_$returns$__$",
"typeString": "function (Currency,int128)"
}
},
"id": 1100,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6812:45:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1101,
"nodeType": "ExpressionStatement",
"src": "6812:45:3"
},
{
"expression": {
"arguments": [
{
"expression": {
"id": 1103,
"name": "key",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1088,
"src": "6881:3:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey memory"
}
},
"id": 1104,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6885:9:3",
"memberName": "currency1",
"nodeType": "MemberAccess",
"referencedDeclaration": 13242,
"src": "6881:13:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
}
},
{
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 1105,
"name": "delta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1091,
"src": "6896:5:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"id": 1106,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6902:7:3",
"memberName": "amount1",
"nodeType": "MemberAccess",
"referencedDeclaration": 12934,
"src": "6896:13:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_userDefinedValueType$_BalanceDelta_$12833_$returns$_t_int128_$attached_to$_t_userDefinedValueType$_BalanceDelta_$12833_$",
"typeString": "function (BalanceDelta) pure returns (int128)"
}
},
"id": 1107,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6896:15:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_int128",
"typeString": "int128"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_userDefinedValueType$_Currency_$12941",
"typeString": "Currency"
},
{
"typeIdentifier": "t_int128",
"typeString": "int128"
}
],
"id": 1102,
"name": "_accountDelta",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1084,
"src": "6867:13:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_userDefinedValueType$_Currency_$12941_$_t_int128_$returns$__$",
"typeString": "function (Currency,int128)"
}
},
"id": 1108,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6867:45:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1109,
"nodeType": "ExpressionStatement",
"src": "6867:45:3"
}
]
},
"documentation": {
"id": 1085,
"nodeType": "StructuredDocumentation",
"src": "6637:77:3",
"text": "@dev Accumulates a balance change to a map of currency to balance changes"
},
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "_accountPoolBalanceDelta",
"nameLocation": "6728:24:3",
"parameters": {
"id": 1092,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1088,
"mutability": "mutable",
"name": "key",
"nameLocation": "6768:3:3",
"nodeType": "VariableDeclaration",
"scope": 1111,
"src": "6753:18:3",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_memory_ptr",
"typeString": "struct PoolKey"
},
"typeName": {
"id": 1087,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 1086,
"name": "PoolKey",
"nameLocations": [
"6753:7:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 13253,
"src": "6753:7:3"
},
"referencedDeclaration": 13253,
"src": "6753:7:3",
"typeDescriptions": {
"typeIdentifier": "t_struct$_PoolKey_$13253_storage_ptr",
"typeString": "struct PoolKey"
}
},
"visibility": "internal"
},
{
"constant": false,
"id": 1091,
"mutability": "mutable",
"name": "delta",
"nameLocation": "6786:5:3",
"nodeType": "VariableDeclaration",
"scope": 1111,
"src": "6773:18:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
},
"typeName": {
"id": 1090,
"nodeType": "UserDefinedTypeName",
"pathNode": {
"id": 1089,
"name": "BalanceDelta",
"nameLocations": [
"6773:12:3"
],
"nodeType": "IdentifierPath",
"referencedDeclaration": 12833,
"src": "6773:12:3"
},
"referencedDeclaration": 12833,
"src": "6773:12:3",
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_BalanceDelta_$12833",
"typeString": "BalanceDelta"
}
},
"visibility": "internal"
}
],
"src": "6752:40:3"
},
"returnParameters": {
"id": 1093,
"nodeType": "ParameterList",
"parameters": [],
"src": "6802:0:3"
},
"scope": 1998,
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "internal"
},
{
"id": 1132,
"nodeType": "ModifierDefinition",
"src": "6925:177:3",
"nodes": [],
"body": {
"id": 1131,
"nodeType": "Block",
"src": "6949:153:3",
"nodes": [],
"statements": [
{
"assignments": [
1114
],
"declarations": [
{
"constant": false,
"id": 1114,
"mutability": "mutable",
"name": "locker",
"nameLocation": "6967:6:3",
"nodeType": "VariableDeclaration",
"scope": 1131,
"src": "6959:14:3",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1113,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6959:7:3",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"visibility": "internal"
}
],
"id": 1120,
"initialValue": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"id": 1115,
"name": "LockDataLibrary",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3818,
"src": "6976:15:3",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_LockDataLibrary_$3818_$",
"typeString": "type(library LockDataLibrary)"
}
},
"id": 1116,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "6992:15:3",
"memberName": "getLockSentinel",
"nodeType": "MemberAccess",
"referencedDeclaration": 3817,
"src": "6976:31:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$__$returns$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function () view returns (LockSentinel)"
}
},
"id": 1117,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6976:33:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_userDefinedValueType$_LockSentinel_$13195",
"typeString": "LockSentinel"
}
},
"id": 1118,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberLocation": "7010:13:3",
"memberName": "getActiveLock",
"nodeType": "MemberAccess",
"referencedDeclaration": 3805,
"src": "6976:47:3",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_userDefinedValueType$_LockSentinel_$13195_$returns$_t_address_$attached_to$_t_userDefinedValueType$_LockSentinel_$13195_$",
"typeString": "function (LockSentinel) view returns (address)"
}
},
"id": 1119,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"nameLocations": [],
"names": [],
"nodeType": "FunctionCall",
"src": "6976:49:3",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6959:66:3"
},
{
"condition": {
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 1124,
"isConstant": false,
"isLValue": false,
"isPure": false,
View raw

(Sorry about that, but we can’t show files that are this big right now.)

View raw

(Sorry about that, but we can’t show files that are this big right now.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment