@josojo/tokenized-events
Version:
tokenized events for pm markets
774 lines • 1.59 MB
JSON
{
"contractName": "Math",
"abi": [
{
"constant": true,
"inputs": [],
"name": "LN2",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x02780677"
},
{
"constant": true,
"inputs": [],
"name": "LOG2_E",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x24902e24"
},
{
"constant": true,
"inputs": [],
"name": "ONE",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xc2ee3a08"
},
{
"constant": true,
"inputs": [
{
"name": "x",
"type": "int256"
}
],
"name": "exp",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xe46751e3"
},
{
"constant": true,
"inputs": [
{
"name": "x",
"type": "int256"
},
{
"name": "estimationMode",
"type": "Math.EstimationMode"
}
],
"name": "pow2",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x84059dd0"
},
{
"constant": true,
"inputs": [
{
"name": "x",
"type": "int256"
}
],
"name": "pow2Bounds",
"outputs": [
{
"name": "lower",
"type": "uint256"
},
{
"name": "upper",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xc1266227"
},
{
"constant": true,
"inputs": [
{
"name": "x",
"type": "uint256"
}
],
"name": "ln",
"outputs": [
{
"name": "",
"type": "int256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x24d4e90a"
},
{
"constant": true,
"inputs": [
{
"name": "x",
"type": "uint256"
},
{
"name": "estimationMode",
"type": "Math.EstimationMode"
}
],
"name": "log2",
"outputs": [
{
"name": "",
"type": "int256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x20ddd255"
},
{
"constant": true,
"inputs": [
{
"name": "x",
"type": "uint256"
}
],
"name": "log2Bounds",
"outputs": [
{
"name": "lower",
"type": "int256"
},
{
"name": "upper",
"type": "int256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x1427f168"
},
{
"constant": true,
"inputs": [
{
"name": "x",
"type": "uint256"
}
],
"name": "floorLog2",
"outputs": [
{
"name": "lo",
"type": "int256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x45b8bafc"
},
{
"constant": true,
"inputs": [
{
"name": "nums",
"type": "int256[]"
}
],
"name": "max",
"outputs": [
{
"name": "max",
"type": "int256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xccc13814"
},
{
"constant": true,
"inputs": [
{
"name": "a",
"type": "int256"
},
{
"name": "b",
"type": "int256"
}
],
"name": "safeToAdd",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xdc08a80b"
},
{
"constant": true,
"inputs": [
{
"name": "a",
"type": "uint256"
},
{
"name": "b",
"type": "uint256"
}
],
"name": "safeToAdd",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x4e30a66c"
},
{
"constant": true,
"inputs": [
{
"name": "a",
"type": "int256"
},
{
"name": "b",
"type": "int256"
}
],
"name": "safeToSub",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x90304341"
},
{
"constant": true,
"inputs": [
{
"name": "a",
"type": "uint256"
},
{
"name": "b",
"type": "uint256"
}
],
"name": "safeToSub",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xe31c71c4"
},
{
"constant": true,
"inputs": [
{
"name": "a",
"type": "int256"
},
{
"name": "b",
"type": "int256"
}
],
"name": "safeToMul",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x1f47ba29"
},
{
"constant": true,
"inputs": [
{
"name": "a",
"type": "uint256"
},
{
"name": "b",
"type": "uint256"
}
],
"name": "safeToMul",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xcb10fa76"
},
{
"constant": true,
"inputs": [
{
"name": "a",
"type": "uint256"
},
{
"name": "b",
"type": "uint256"
}
],
"name": "add",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x771602f7"
},
{
"constant": true,
"inputs": [
{
"name": "a",
"type": "int256"
},
{
"name": "b",
"type": "int256"
}
],
"name": "add",
"outputs": [
{
"name": "",
"type": "int256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xa5f3c23b"
},
{
"constant": true,
"inputs": [
{
"name": "a",
"type": "uint256"
},
{
"name": "b",
"type": "uint256"
}
],
"name": "sub",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xb67d77c5"
},
{
"constant": true,
"inputs": [
{
"name": "a",
"type": "int256"
},
{
"name": "b",
"type": "int256"
}
],
"name": "sub",
"outputs": [
{
"name": "",
"type": "int256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xadefc37b"
},
{
"constant": true,
"inputs": [
{
"name": "a",
"type": "uint256"
},
{
"name": "b",
"type": "uint256"
}
],
"name": "mul",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xc8a4ac9c"
},
{
"constant": true,
"inputs": [
{
"name": "a",
"type": "int256"
},
{
"name": "b",
"type": "int256"
}
],
"name": "mul",
"outputs": [
{
"name": "",
"type": "int256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xbbe93d91"
}
],
"bytecode": "0x610b62610030600b82828239805160001a6073146000811461002057610022565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600436106101495763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302780677811461014e5780631427f168146101685780631f47ba291461018c57806320ddd255146101ae57806324902e24146101bf57806324d4e90a146101c757806345b8bafc146101d25780634e30a66c146101dd578063771602f7146101eb57806384059dd0146101f9578063903043411461020a578063a5f3c23b14610218578063adefc37b14610226578063b67d77c514610234578063bbe93d9114610242578063c126622714610250578063c2ee3a081461025b578063c8a4ac9c14610263578063cb10fa7614610271578063ccc138141461027f578063dc08a80b146102c7578063e31c71c4146102d5578063e46751e3146102e3575b600080fd5b6101566102ee565b60408051918252519081900360200190f35b6101736004356102fa565b6040805192835260208301919091528051918290030190f35b61019a6004356024356103b3565b604080519115158252519081900360200190f35b61015660043560ff602435166103d5565b610156610447565b610156600435610454565b61015660043561048a565b61019a6004356024356104f6565b6101566004356024356104fd565b61015660043560ff60243516610519565b61019a600435602435610587565b6101566004356024356105b3565b6101566004356024356105bf565b6101566004356024356105dc565b6101566004356024356105e8565b610173600435610604565b6101566109ec565b6101566004356024356109f4565b61019a6004356024356109fc565b6040805160206004803580820135838102808601850190965280855261015695369593946024949385019291829185019084908082843750949750610a1d9650505050505050565b61019a600435602435610aa8565b61019a600435602435610ad4565b610156600435610ad9565b67b17217f7d1cf79ac81565b600080808080851161030b57600080fd5b6103148561048a565b935060008412156103305783600003859060020a02915061033a565b600284900a850491505b604060020a84029350600190505b604081136103a657604060020a821415610361576103a6565b604060020a82800204915068020000000000000000821061039e5780604060020a600082121561038d57fe5b600291820a90049490940193820491505b600101610348565b6004840192505050915091565b60008115806103ce575082828385028115156103cb57fe5b05145b9392505050565b60008060006103e3856102fa565b909250905060008460028111156103f657fe5b14156104045781925061043f565b600184600281111561041257fe5b14156104205780925061043f565b600284600281111561042e57fe5b141561014957816002818303050192505b505092915050565b680171547652b82fe17781565b6000806000610462846102fa565b9092509050680171547652b82fe1776002838303058301604060020a020592505b5050919050565b603f1960c160405b81836001011215610483576000811280156104b95750604060020a81600003859060020a02105b806104d95750600081121580156104d95750604060020a600282900a8504105b156104e6578091506104ea565b8092505b50600281830105610492565b8101101590565b600061050983836104f6565b151561051457600080fd5b500190565b600080600061052785610604565b9092509050600084600281111561053a57fe5b14156105485781925061043f565b600184600281111561055657fe5b14156105645780925061043f565b600284600281111561057257fe5b1415610149578160028183030401925061043f565b600080821215801561059b57508282840313155b806103ce57506000821280156103ce57505081031390565b60006105098383610aa8565b60006105cb8383610587565b15156105d657600080fd5b50900390565b60006105cb8383610ad4565b60006105f483836103b3565b15156105ff57600080fd5b500290565b6000808080808068bfffffffffffffffff87131561062157600080fd5b683fffffffffffffffff198712156106405760009550600194506109e3565b6000871261065f57604060020a87059350604060020a87079250610679565b6001604060020a8882010503935083604060020a02870392505b600083121561068457fe5b505067b17217f7d1cf79ab81027001000000000000000000000000000000000181604060020a818002600467f5fdeffc162c7543929091059182020592909201919050604060020a838202601067e35846b82505fc59929091059182020592909201919050604060020a8382026040679d955b7dd273b94e929091059182020592909201919050604060020a83820261020067aec3ff3c53398883929091059182020592909201919050604060020a83820261100067a184897c363c3b7a929091059182020592909201919050604060020a8382026201000067ffe5fe2c45863435929091059182020592909201919050604060020a8382026208000067b160111d2e411fec929091059182020592909201919050604060020a8382026280000067da929e9caf3e1ed2929091059182020592909201919050604060020a838202630800000067f267a8ac5c764fb7929091059182020592909201919050604060020a838202638000000067f465639a8dd92607929091059182020592909201919050604060020a83820264080000000067e1deb287e14c2f15929091059182020592909201919050604060020a83820264800000000067c0b0c98b3687cb14929091059182020592909201919050604060020a838202650800000000006798a4b26ac3c54b9f929091059182020592909201919050604060020a838202660100000000000067e1b7421d82010f33929091059182020592909201919050604060020a8382026610000000000000679c744d73cfc59c91929091059182020592909201919050604060020a83820267020000000000000067cc2225a0e12d3eab929091059182020592909201919050604060020a838202603f19959095019467400000000000000091900567fb8bb5eda1b4aeb9020591909101905068080000000000000000600084126109aa57836101000382600082121561094357fe5b9060020a90056000141561099d578382600082121561095e57fe5b9060020a0295508381600082121561097257fe5b9060020a02905061098386826104f6565b15610992578086019450610998565b60001994505b6109e3565b60001995508594506109e3565b836000038160008212156109ba57fe5b9060020a90056001019050836000038260008212156109d557fe5b9060020a9004955080860194505b50505050915091565b604060020a81565b60006105f483835b60008115806103ce57508282838502811515610a1457fe5b04149392505050565b60008060008351111515610a3057600080fd5b507f8000000000000000000000000000000000000000000000000000000000000000905060005b8251811015610aa257818382815181101515610a6f57fe5b906020019060200201511315610a9a578281815181101515610a8d57fe5b9060200190602002015191505b600101610a57565b50919050565b6000808212158015610abc57508282840112155b806103ce57506000821280156103ce57505081011290565b111590565b6000808068851591f9dd5b9b40d7841315610af357600080fd5b682c5c85fdf473de6af2198413610b0d5760009250610483565b610b2667b17217f7d1cf79ac604060020a860205610604565b60029082900304019493505050505600a165627a7a723058209a60dba21a7fd4d8fce0eff6079dbb12d25ec2c1be12a8d5bf4464b58e18d7880029",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106101495763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166302780677811461014e5780631427f168146101685780631f47ba291461018c57806320ddd255146101ae57806324902e24146101bf57806324d4e90a146101c757806345b8bafc146101d25780634e30a66c146101dd578063771602f7146101eb57806384059dd0146101f9578063903043411461020a578063a5f3c23b14610218578063adefc37b14610226578063b67d77c514610234578063bbe93d9114610242578063c126622714610250578063c2ee3a081461025b578063c8a4ac9c14610263578063cb10fa7614610271578063ccc138141461027f578063dc08a80b146102c7578063e31c71c4146102d5578063e46751e3146102e3575b600080fd5b6101566102ee565b60408051918252519081900360200190f35b6101736004356102fa565b6040805192835260208301919091528051918290030190f35b61019a6004356024356103b3565b604080519115158252519081900360200190f35b61015660043560ff602435166103d5565b610156610447565b610156600435610454565b61015660043561048a565b61019a6004356024356104f6565b6101566004356024356104fd565b61015660043560ff60243516610519565b61019a600435602435610587565b6101566004356024356105b3565b6101566004356024356105bf565b6101566004356024356105dc565b6101566004356024356105e8565b610173600435610604565b6101566109ec565b6101566004356024356109f4565b61019a6004356024356109fc565b6040805160206004803580820135838102808601850190965280855261015695369593946024949385019291829185019084908082843750949750610a1d9650505050505050565b61019a600435602435610aa8565b61019a600435602435610ad4565b610156600435610ad9565b67b17217f7d1cf79ac81565b600080808080851161030b57600080fd5b6103148561048a565b935060008412156103305783600003859060020a02915061033a565b600284900a850491505b604060020a84029350600190505b604081136103a657604060020a821415610361576103a6565b604060020a82800204915068020000000000000000821061039e5780604060020a600082121561038d57fe5b600291820a90049490940193820491505b600101610348565b6004840192505050915091565b60008115806103ce575082828385028115156103cb57fe5b05145b9392505050565b60008060006103e3856102fa565b909250905060008460028111156103f657fe5b14156104045781925061043f565b600184600281111561041257fe5b14156104205780925061043f565b600284600281111561042e57fe5b141561014957816002818303050192505b505092915050565b680171547652b82fe17781565b6000806000610462846102fa565b9092509050680171547652b82fe1776002838303058301604060020a020592505b5050919050565b603f1960c160405b81836001011215610483576000811280156104b95750604060020a81600003859060020a02105b806104d95750600081121580156104d95750604060020a600282900a8504105b156104e6578091506104ea565b8092505b50600281830105610492565b8101101590565b600061050983836104f6565b151561051457600080fd5b500190565b600080600061052785610604565b9092509050600084600281111561053a57fe5b14156105485781925061043f565b600184600281111561055657fe5b14156105645780925061043f565b600284600281111561057257fe5b1415610149578160028183030401925061043f565b600080821215801561059b57508282840313155b806103ce57506000821280156103ce57505081031390565b60006105098383610aa8565b60006105cb8383610587565b15156105d657600080fd5b50900390565b60006105cb8383610ad4565b60006105f483836103b3565b15156105ff57600080fd5b500290565b6000808080808068bfffffffffffffffff87131561062157600080fd5b683fffffffffffffffff198712156106405760009550600194506109e3565b6000871261065f57604060020a87059350604060020a87079250610679565b6001604060020a8882010503935083604060020a02870392505b600083121561068457fe5b505067b17217f7d1cf79ab81027001000000000000000000000000000000000181604060020a818002600467f5fdeffc162c7543929091059182020592909201919050604060020a838202601067e35846b82505fc59929091059182020592909201919050604060020a8382026040679d955b7dd273b94e929091059182020592909201919050604060020a83820261020067aec3ff3c53398883929091059182020592909201919050604060020a83820261100067a184897c363c3b7a929091059182020592909201919050604060020a8382026201000067ffe5fe2c45863435929091059182020592909201919050604060020a8382026208000067b160111d2e411fec929091059182020592909201919050604060020a8382026280000067da929e9caf3e1ed2929091059182020592909201919050604060020a838202630800000067f267a8ac5c764fb7929091059182020592909201919050604060020a838202638000000067f465639a8dd92607929091059182020592909201919050604060020a83820264080000000067e1deb287e14c2f15929091059182020592909201919050604060020a83820264800000000067c0b0c98b3687cb14929091059182020592909201919050604060020a838202650800000000006798a4b26ac3c54b9f929091059182020592909201919050604060020a838202660100000000000067e1b7421d82010f33929091059182020592909201919050604060020a8382026610000000000000679c744d73cfc59c91929091059182020592909201919050604060020a83820267020000000000000067cc2225a0e12d3eab929091059182020592909201919050604060020a838202603f19959095019467400000000000000091900567fb8bb5eda1b4aeb9020591909101905068080000000000000000600084126109aa57836101000382600082121561094357fe5b9060020a90056000141561099d578382600082121561095e57fe5b9060020a0295508381600082121561097257fe5b9060020a02905061098386826104f6565b15610992578086019450610998565b60001994505b6109e3565b60001995508594506109e3565b836000038160008212156109ba57fe5b9060020a90056001019050836000038260008212156109d557fe5b9060020a9004955080860194505b50505050915091565b604060020a81565b60006105f483835b60008115806103ce57508282838502811515610a1457fe5b04149392505050565b60008060008351111515610a3057600080fd5b507f8000000000000000000000000000000000000000000000000000000000000000905060005b8251811015610aa257818382815181101515610a6f57fe5b906020019060200201511315610a9a578281815181101515610a8d57fe5b9060200190602002015191505b600101610a57565b50919050565b6000808212158015610abc57508282840112155b806103ce57506000821280156103ce57505081011290565b111590565b6000808068851591f9dd5b9b40d7841315610af357600080fd5b682c5c85fdf473de6af2198413610b0d5760009250610483565b610b2667b17217f7d1cf79ac604060020a860205610604565b60029082900304019493505050505600a165627a7a723058209a60dba21a7fd4d8fce0eff6079dbb12d25ec2c1be12a8d5bf4464b58e18d7880029",
"sourceMap": "202:12366:11:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24",
"deployedSourceMap": "202:12366:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;416:45;;;;;;;;;;;;;;;;;;;;7191:748;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11556:144;;;;;;;;;;;;;;;;;;;;;;;;;;6448:482;;;;;;;;;;467:49;;;;6001:200;;;;;;8053:492;;;;;;9098:128;;;;;;;;9975:151;;;;;;;;1476:482;;;;;;;;;;11219:162;;;;;;;;11836:148;;;;;;;;12126;;;;;;;;10268:151;;;;;;;;12418:148;;;;;;;;2200:3698;;;;;;363:47;;;;10563:151;;;;;;;;9697:142;;;;;;;;8667:260;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8667:260:11;;-1:-1:-1;8667:260:11;;-1:-1:-1;;;;;;;8667:260:11;10885:162;;;;;;;;9398:124;;;;;;;;670:575;;;;;;416:45;443:18;416:45;:::o;7191:748::-;7268:9;;;;7312:5;;;7304:14;;;;;;7369:12;7379:1;7369:9;:12::i;:::-;7361:20;;7420:1;7412:5;:9;7408:95;;;7450:5;7449:6;;7439:1;:17;;;;7435:21;;7408:95;;;7487:16;;;;;;;-1:-1:-1;7408:95:11;-1:-1:-1;;;7514:17:11;;;;7667:1;7659:9;;7654:243;7675:2;7670:7;;7654:243;;-1:-1:-1;;;7701:1:11;:8;7698:51;;;7729:5;;7698:51;-1:-1:-1;;;7766:5:11;;;:11;;-1:-1:-1;7799:7:11;7794:12;;7791:96;;7846:1;-1:-1:-1;;;7839:8:11;;;;;;;;;;;;;;7826:22;;;;;7866:6;;;;7791:96;7679:3;;7654:243;;;7930:1;7922:9;;;-1:-1:-1;7191:748:11;;;;;:::o;11556:144::-;11638:4;11666:6;;;11665:28;;;11691:1;11686;11682;11678;:5;:9;;;;;;;;:14;11665:28;11658:35;11556:144;-1:-1:-1;;;11556:144:11:o;6448:482::-;6550:3;6574:5;6581;6590:13;6601:1;6590:10;:13::i;:::-;6569:34;;-1:-1:-1;6569:34:11;-1:-1:-1;6634:25:11;6616:14;:43;;;;;;;;;6613:85;;;6682:5;6675:12;;;;6613:85;6728:25;6710:14;:43;;;;;;;;;6707:85;;;6776:5;6769:12;;;;6707:85;6822:23;6804:14;:41;;;;;;;;;6801:105;;;6890:5;6886:1;6869:13;;;6868:19;:27;6861:34;;6448:482;;;;;;;:::o;467:49::-;497:19;467:49;:::o;6001:200::-;6070:3;6094:5;6101;6110:13;6121:1;6110:10;:13::i;:::-;6089:34;;-1:-1:-1;6089:34:11;-1:-1:-1;497:19:11;6159:1;6142:13;;;6141:19;:27;;-1:-1:-1;;;6140:40:11;:54;6133:61;;6001:200;;;;;;:::o;8053:492::-;-1:-1:-1;;8178:3:11;8294:14;8318:221;8335:2;8325;8330:1;8325:6;8324:13;8318:221;;;8363:1;8357:3;:7;:32;;;;;-1:-1:-1;;;8379:3:11;8378:4;;8368:1;:15;;;;:21;8357:32;:68;;;;8400:1;8393:3;:8;;:32;;;;-1:-1:-1;;;;8405:14:11;;;;;;:20;8393:32;8353:141;;;8448:3;8443:8;;8353:141;;;8491:3;8486:8;;8353:141;-1:-1:-1;8514:14:11;8515:7;;;8514:14;8318:221;;9098:128;9209:5;;-1:-1:-1;9209:10:11;;9098:128::o;9975:151::-;10053:4;10081:15;10091:1;10094;10081:9;:15::i;:::-;10073:24;;;;;;;;-1:-1:-1;10114:5:11;;9975:151::o;1476:482::-;1577:4;1602:5;1609;1618:13;1629:1;1618:10;:13::i;:::-;1597:34;;-1:-1:-1;1597:34:11;-1:-1:-1;1662:25:11;1644:14;:43;;;;;;;;;1641:85;;;1710:5;1703:12;;;;1641:85;1756:25;1738:14;:43;;;;;;;;;1735:85;;;1804:5;1797:12;;;;1735:85;1850:23;1832:14;:41;;;;;;;;;1829:105;;;1918:5;1914:1;1897:13;;;1896:19;:27;1889:34;;;;11219:162;11301:4;11334:1;11329;:6;;:20;;;;;11348:1;11343;11339;:5;:10;;11329:20;11328:46;;;;11359:1;11355;:5;:18;;;;-1:-1:-1;;11364:5:11;;:9;;11219:162::o;11836:148::-;11912:3;11939:15;11949:1;11952;11939:9;:15::i;12126:148::-;12202:3;12229:15;12239:1;12242;12229:9;:15::i;:::-;12221:24;;;;;;;;-1:-1:-1;12262:5:11;;;12126:148::o;10268:151::-;10346:4;10374:15;10384:1;10387;10374:9;:15::i;12418:148::-;12494:3;12521:15;12531:1;12534;12521:9;:15::i;:::-;12513:24;;;;;;;;-1:-1:-1;12554:5:11;;12418:148::o;2200:3698::-;2276:10;;;;;;2449:22;2444:27;;;2436:36;;;;;;-1:-1:-1;;2599:1:11;:27;2595:58;;;2648:1;;-1:-1:-1;2651:1:11;;-1:-1:-1;2640:13:11;;2595:58;2871:1;2866:6;;2862:194;;-1:-1:-1;;;2896:1:11;:12;;-1:-1:-1;;;;2926:1:11;:12;2922:16;;2862:194;;;3004:1;-1:-1:-1;;;2986:3:11;;;2985:16;:20;2977:28;;3039:5;-1:-1:-1;;;3028:16:11;3023:1;:22;3019:26;;2862:194;3077:1;3072:6;;;3065:14;;;;-1:-1:-1;;3616:18:11;:25;;3560:14;3606:35;3595:1;-1:-1:-1;;;3658:8:11;;;3697:38;:18;3658:19;;;;3697:25;;;:38;3687:48;;;;;3658:19;-1:-1:-1;;;;3752:8:11;;;3791:38;:18;3752:19;;;;3791:25;;;:38;3781:48;;;;;3752:19;-1:-1:-1;;;;3846:8:11;;;3885:38;:18;3846:19;;;;3885:25;;;:38;3875:48;;;;;3846:19;-1:-1:-1;;;;3940:8:11;;;3979:38;:18;3940:19;;;;3979:25;;;:38;3969:48;;;;;3940:19;-1:-1:-1;;;;4034:8:11;;;4073:38;:18;4034:19;;;;4073:25;;;:38;4063:48;;;;;4034:19;-1:-1:-1;;;;4128:8:11;;;4167:38;:18;4128:19;;;;4167:25;;;:38;4157:48;;;;;4128:19;-1:-1:-1;;;;4222:8:11;;;4261:38;:18;4222:19;;;;4261:25;;;:38;4251:48;;;;;4222:19;-1:-1:-1;;;;4316:8:11;;;4355:38;:18;4316:19;;;;4355:25;;;:38;4345:48;;;;;4316:19;-1:-1:-1;;;;4410:8:11;;;4449:38;:18;4410:19;;;;4449:25;;;:38;4439:48;;;;;4410:19;-1:-1:-1;;;;4504:8:11;;;4543:38;:18;4504:19;;;;4543:25;;;:38;4533:48;;;;;4504:19;-1:-1:-1;;;;4598:8:11;;;4637:38;:18;4598:19;;;;4637:25;;;:38;4627:48;;;;;4598:19;-1:-1:-1;;;;4692:8:11;;;4731:39;:18;4692:19;;;;4731:25;;;:39;4721:49;;;;;4692:19;-1:-1:-1;;;;4787:8:11;;;4826:39;:18;4787:19;;;;4826:25;;;:39;4816:49;;;;;4787:19;-1:-1:-1;;;;4882:8:11;;;4921:39;:18;4882:19;;;;4921:25;;;:39;4911:49;;;;;4882:19;-1:-1:-1;;;;4977:8:11;;;5016:39;:18;4977:19;;;;5016:25;;;:39;5006:49;;;;;4977:19;-1:-1:-1;;;;5072:8:11;;;5111:39;:18;5072:19;;;;5111:25;;;:39;5101:49;;;;;5072:19;-1:-1:-1;;;;5167:8:11;;;-1:-1:-1;;5306:11:11;;;;;5203:39;5167:19;;;5203:18;:25;:39;5252:14;;;;;-1:-1:-1;5287:7:11;5340:1;5331:10;;5327:432;;5376:5;5372:3;:9;5361:6;:21;;;;;;;;;;;;;5386:1;5361:26;5357:391;;;5431:5;5420:6;5415:21;;;;;;;;;;;;5407:29;;5463:5;5454:14;;;;;;;;;;;;;;;5513:28;5523:5;5535:4;5513:9;:28::i;:::-;5509:139;;;5584:4;5571:5;:18;5563:26;;5509:139;;;-1:-1:-1;;5632:16:11;;5509:139;5666:7;;5357:391;-1:-1:-1;;5729:8:11;-1:-1:-1;5729:8:11;;-1:-1:-1;5721:27:11;;5357:391;5786:5;5785:6;;5776:4;:16;;;;;;;;;;;;;5796:1;5775:22;5768:29;;5833:5;5832:6;;5820;5815:24;;;;;;;;;;;;;5807:32;;5870:4;5857:5;:18;5849:26;;2200:3698;;;;;;;;:::o;363:47::-;-1:-1:-1;;;363:47:11;:::o;10563:151::-;10641:4;10669:15;10679:1;10682;9697:142;9781:4;9808:6;;;:24;;;9831:1;9826;9822;9818;:5;:9;;;;;;;;:14;;9697:142;-1:-1:-1;;;9697:142:11:o;8667:260::-;8741:7;8826:6;8786:1;8772:4;:11;:15;8764:24;;;;;;;;-1:-1:-1;8804:7:11;;-1:-1:-1;8835:1:11;8821:99;8842:4;:11;8838:1;:15;8821:99;;;8886:3;8876:4;8881:1;8876:7;;;;;;;;;;;;;;;;;;:13;8872:48;;;8913:4;8918:1;8913:7;;;;;;;;;;;;;;;;;;8907:13;;8872:48;8855:3;;8821:99;;;8667:260;;;;:::o;10885:162::-;10967:4;11000:1;10995;:6;;:20;;;;;11014:1;11009;11005;:5;:10;;10995:20;10994:46;;;;11025:1;11021;:5;:18;;;;-1:-1:-1;;11030:5:11;;:9;;10885:162::o;9398:124::-;-1:-1:-1;9509:6:11;;9398:124::o;670:575::-;739:4;;;891:22;886:27;;;878:36;;;;;;-1:-1:-1;;1038:27:11;;1034:53;;1086:1;1079:8;;;;1034:53;1159:35;443:18;-1:-1:-1;;;1170:12:11;;:23;1159:10;:35::i;:::-;1229:1;1212:13;;;;1211:19;:27;;;-1:-1:-1;;;;670:575:11:o",
"source": "pragma solidity ^0.4.15;\n\n\n/// @title Math library - Allows calculation of logarithmic and exponential functions\n/// @author Alan Lu - <alan.lu@gnosis.pm>\n/// @author Stefan George - <stefan@gnosis.pm>\nlibrary Math {\n\n enum EstimationMode { LowerBound, UpperBound, Midpoint }\n\n /*\n * Constants\n */\n // This is equal to 1 in our calculations\n uint public constant ONE = 0x10000000000000000;\n uint public constant LN2 = 0xb17217f7d1cf79ac;\n uint public constant LOG2_E = 0x171547652b82fe177;\n\n /*\n * Public functions\n */\n /// @dev Returns natural exponential function value of given x\n /// @param x x\n /// @return e**x\n function exp(int x)\n public\n constant\n returns (uint)\n {\n // revert if x is > MAX_POWER, where\n // MAX_POWER = int(mp.floor(mp.log(mpf(2**256 - 1) / ONE) * ONE))\n require(x <= 2454971259878909886679);\n // return 0 if exp(x) is tiny, using\n // MIN_POWER = int(mp.floor(mp.log(mpf(1) / ONE) * ONE))\n if (x <= -818323753292969962227)\n return 0;\n\n // Transform so that e^x -> 2^x\n var (lower, upper) = pow2Bounds(x * int(ONE) / int(LN2));\n return (upper - lower) / 2 + lower;\n }\n\n /// @dev Returns estimate of 2**x given x\n /// @param x exponent in fixed point\n /// @param estimationMode whether to return a lower bound, upper bound, or a midpoint\n /// @return estimate of 2**x in fixed point\n function pow2(int x, EstimationMode estimationMode)\n public\n constant\n returns (uint)\n {\n var (lower, upper) = pow2Bounds(x);\n if(estimationMode == EstimationMode.LowerBound) {\n return lower;\n }\n if(estimationMode == EstimationMode.UpperBound) {\n return upper;\n }\n if(estimationMode == EstimationMode.Midpoint) {\n return (upper - lower) / 2 + lower;\n }\n revert();\n }\n\n /// @dev Returns bounds for value of 2**x given x\n /// @param x exponent in fixed point\n /// @return {\n /// \"lower\": \"lower bound of 2**x in fixed point\",\n /// \"upper\": \"upper bound of 2**x in fixed point\"\n /// }\n function pow2Bounds(int x)\n public\n constant\n returns (uint lower, uint upper)\n {\n // revert if x is > MAX_POWER, where\n // MAX_POWER = int(mp.floor(mp.log(mpf(2**256 - 1) / ONE, 2) * ONE))\n require(x <= 3541774862152233910271);\n // return 0 if exp(x) is tiny, using\n // MIN_POWER = int(mp.floor(mp.log(mpf(1) / ONE, 2) * ONE))\n if (x < -1180591620717411303424)\n return (0, 1);\n\n // 2^x = 2^(floor(x)) * 2^(x-floor(x))\n // ^^^^^^^^^^^^^^ is a bit shift of ceil(x)\n // so Taylor expand on z = x-floor(x), z in [0, 1)\n int shift;\n int z;\n if (x >= 0) {\n shift = x / int(ONE);\n z = x % int(ONE);\n }\n else {\n shift = (x+1) / int(ONE) - 1;\n z = x - (int(ONE) * shift);\n }\n assert(z >= 0);\n // 2^x = 1 + (ln 2) x + (ln 2)^2/2! x^2 + ...\n //\n // Can generate the z coefficients using mpmath and the following lines\n // >>> from mpmath import mp\n // >>> mp.dps = 100\n // >>> coeffs = [mp.log(2)**i / mp.factorial(i) for i in range(1, 21)]\n // >>> shifts = [64 - int(mp.log(c, 2)) for c in coeffs]\n // >>> print('\\n'.join(hex(int(c * (1 << s))) + ', ' + str(s) for c, s in zip(coeffs, shifts)))\n int result = int(ONE) << 64;\n int zpow = z;\n result += 0xb17217f7d1cf79ab * zpow;\n zpow = zpow * z / int(ONE);\n result += 0xf5fdeffc162c7543 * zpow >> (66 - 64);\n zpow = zpow * z / int(ONE);\n result += 0xe35846b82505fc59 * zpow >> (68 - 64);\n zpow = zpow * z / int(ONE);\n result += 0x9d955b7dd273b94e * zpow >> (70 - 64);\n zpow = zpow * z / int(ONE);\n result += 0xaec3ff3c53398883 * zpow >> (73 - 64);\n zpow = zpow * z / int(ONE);\n result += 0xa184897c363c3b7a * zpow >> (76 - 64);\n zpow = zpow * z / int(ONE);\n result += 0xffe5fe2c45863435 * zpow >> (80 - 64);\n zpow = zpow * z / int(ONE);\n result += 0xb160111d2e411fec * zpow >> (83 - 64);\n zpow = zpow * z / int(ONE);\n result += 0xda929e9caf3e1ed2 * zpow >> (87 - 64);\n zpow = zpow * z / int(ONE);\n result += 0xf267a8ac5c764fb7 * zpow >> (91 - 64);\n zpow = zpow * z / int(ONE);\n result += 0xf465639a8dd92607 * zpow >> (95 - 64);\n zpow = zpow * z / int(ONE);\n result += 0xe1deb287e14c2f15 * zpow >> (99 - 64);\n zpow = zpow * z / int(ONE);\n result += 0xc0b0c98b3687cb14 * zpow >> (103 - 64);\n zpow = zpow * z / int(ONE);\n result += 0x98a4b26ac3c54b9f * zpow >> (107 - 64);\n zpow = zpow * z / int(ONE);\n result += 0xe1b7421d82010f33 * zpow >> (112 - 64);\n zpow = zpow * z / int(ONE);\n result += 0x9c744d73cfc59c91 * zpow >> (116 - 64);\n zpow = zpow * z / int(ONE);\n result += 0xcc2225a0e12d3eab * zpow >> (121 - 64);\n zpow = zpow * z / int(ONE);\n zpow = 0xfb8bb5eda1b4aeb9 * zpow >> (126 - 64);\n result += zpow;\n zpow = int(8 * ONE);\n\n shift -= 64;\n if (shift >= 0) {\n if (result >> (256-shift) == 0) {\n lower = uint(result) << shift;\n zpow <<= shift; // todo: is this safe?\n if (safeToAdd(lower, uint(zpow)))\n upper = lower + uint(zpow);\n else\n upper = 2**256-1;\n return;\n }\n else\n return (2**256-1, 2**256-1);\n }\n zpow = (zpow >> (-shift)) + 1;\n lower = uint(result) >> (-shift);\n upper = lower + uint(zpow);\n return;\n }\n\n /// @dev Returns natural logarithm value of given x\n /// @param x x\n /// @return ln(x)\n function ln(uint x)\n public\n constant\n returns (int)\n {\n var (lower, upper) = log2Bounds(x);\n return ((upper - lower) / 2 + lower) * int(ONE) / int(LOG2_E);\n }\n\n /// @dev Returns estimate of log2(x) given x\n /// @param x logarithm argument in fixed point\n /// @param estimationMode whether to return a lower bound, upper bound, or a midpoint\n /// @return estimate of log2(x) in fixed point\n function log2(uint x, EstimationMode estimationMode)\n public\n constant\n returns (int)\n {\n var (lower, upper) = log2Bounds(x);\n if(estimationMode == EstimationMode.LowerBound) {\n return lower;\n }\n if(estimationMode == EstimationMode.UpperBound) {\n return upper;\n }\n if(estimationMode == EstimationMode.Midpoint) {\n return (upper - lower) / 2 + lower;\n }\n revert();\n }\n\n /// @dev Returns bounds for value of log2(x) given x\n /// @param x logarithm argument in fixed point\n /// @return {\n /// \"lower\": \"lower bound of log2(x) in fixed point\",\n /// \"upper\": \"upper bound of log2(x) in fixed point\"\n /// }\n function log2Bounds(uint x)\n public\n constant\n returns (int lower, int upper)\n {\n require(x > 0);\n // compute ⌊log₂x⌋\n lower = floorLog2(x);\n\n uint y;\n if (lower < 0)\n y = x << uint(-lower);\n else\n y = x >> uint(lower);\n\n lower *= int(ONE);\n\n // y = x * 2^(-⌊log₂x⌋)\n // so 1 <= y < 2\n // and log₂x = ⌊log₂x⌋ + log₂y\n for (int m = 1; m <= 64; m++) {\n if(y == ONE) {\n break;\n }\n y = y * y / ONE;\n if(y >= 2 * ONE) {\n lower += int(ONE >> m);\n y /= 2;\n }\n }\n\n return (lower, lower + 4);\n }\n\n /// @dev Returns base 2 logarithm value of given x\n /// @param x x\n /// @return logarithmic value\n function floorLog2(uint x)\n public\n constant\n returns (int lo)\n {\n lo = -64;\n int hi = 193;\n // I use a shift here instead of / 2 because it floors instead of rounding towards 0\n int mid = (hi + lo) >> 1;\n while((lo + 1) < hi) {\n if (mid < 0 && x << uint(-mid) < ONE || mid >= 0 && x >> uint(mid) < ONE)\n hi = mid;\n else\n lo = mid;\n mid = (hi + lo) >> 1;\n }\n }\n\n /// @dev Returns maximum of an array\n /// @param nums Numbers to look through\n /// @return Maximum number\n function max(int[] nums)\n public\n constant\n returns (int max)\n {\n require(nums.length > 0);\n max = -2**255;\n for (uint i = 0; i < nums.length; i++)\n if (nums[i] > max)\n max = nums[i];\n }\n\n /// @dev Returns whether an add operation causes an overflow\n /// @param a First addend\n /// @param b Second addend\n /// @return Did no overflow occur?\n function safeToAdd(uint a, uint b)\n public\n constant\n returns (bool)\n {\n return a + b >= a;\n }\n\n /// @dev Returns whether a subtraction operation causes an underflow\n /// @param a Minuend\n /// @param b Subtrahend\n /// @return Did no underflow occur?\n function safeToSub(uint a, uint b)\n public\n constant\n returns (bool)\n {\n return a >= b;\n }\n\n /// @dev Returns whether a multiply operation causes an overflow\n /// @param a First factor\n /// @param b Second factor\n /// @return Did no overflow occur?\n function safeToMul(uint a, uint b)\n public\n constant\n returns (bool)\n {\n return b == 0 || a * b / b == a;\n }\n\n /// @dev Returns sum if no overflow occurred\n /// @param a First addend\n /// @param b Second addend\n /// @return Sum\n function add(uint a, uint b)\n public\n constant\n returns (uint)\n {\n require(safeToAdd(a, b));\n return a + b;\n }\n\n /// @dev Returns difference if no overflow occurred\n /// @param a Minuend\n /// @param b Subtrahend\n /// @return Difference\n function sub(uint a, uint b)\n public\n constant\n returns (uint)\n {\n require(safeToSub(a, b));\n return a - b;\n }\n\n /// @dev Returns product if no overflow occurred\n /// @param a First factor\n /// @param b Second factor\n /// @return Product\n function mul(uint a, uint b)\n public\n constant\n returns (uint)\n {\n require(safeToMul(a, b));\n return a * b;\n }\n\n /// @dev Returns whether an add operation causes an overflow\n /// @param a First addend\n /// @param b Second addend\n /// @return Did no overflow occur?\n function safeToAdd(int a, int b)\n public\n constant\n returns (bool)\n {\n return (b >= 0 && a + b >= a) || (b < 0 && a + b < a);\n }\n\n /// @dev Returns whether a subtraction operation causes an underflow\n /// @param a Minuend\n /// @param b Subtrahend\n /// @return Did no underflow occur?\n function safeToSub(int a, int b)\n public\n constant\n returns (bool)\n {\n return (b >= 0 && a - b <= a) || (b < 0 && a - b > a);\n }\n\n /// @dev Returns whether a multiply operation causes an overflow\n /// @param a First factor\n /// @param b Second factor\n /// @return Did no overflow occur?\n function safeToMul(int a, int b)\n public\n constant\n returns (bool)\n {\n return (b == 0) || (a * b / b == a);\n }\n\n /// @dev Returns sum if no overflow occurred\n /// @param a First addend\n /// @param b Second addend\n /// @return Sum\n function add(int a, int b)\n public\n constant\n returns (int)\n {\n require(safeToAdd(a, b));\n return a + b;\n }\n\n /// @dev Returns difference if no overflow occurred\n /// @param a Minuend\n /// @param b Subtrahend\n /// @return Difference\n function sub(int a, int b)\n public\n constant\n returns (int)\n {\n require(safeToSub(a, b));\n return a - b;\n }\n\n /// @dev Returns product if no overflow occurred\n /// @param a First factor\n /// @param b Second factor\n /// @return Product\n function mul(int a, int b)\n public\n constant\n returns (int)\n {\n require(safeToMul(a, b));\n return a * b;\n }\n}\n",
"sourcePath": "@gnosis.pm/pm-contracts/contracts/Utils/Math.sol",
"ast": {
"absolutePath": "@gnosis.pm/pm-contracts/contracts/Utils/Math.sol",
"exportedSymbols": {
"Math": [
3954
]
},
"id": 3955,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 2705,
"literals": [
"solidity",
"^",
"0.4",
".15"
],
"nodeType": "PragmaDirective",
"src": "0:24:11"
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "library",
"documentation": "@title Math library - Allows calculation of logarithmic and exponential functions\n @author Alan Lu - <alan.lu@gnosis.pm>\n @author Stefan George - <stefan@gnosis.pm>",
"fullyImplemented": true,
"id": 3954,
"linearizedBaseContracts": [
3954
],
"name": "Math",
"nodeType": "ContractDefinition",
"nodes": [
{
"canonicalName": "Math.EstimationMode",
"id": 2709,
"members": [
{
"id": 2706,
"name": "LowerBound",
"nodeType": "EnumValue",
"src": "244:10:11"
},
{
"id": 2707,
"name": "UpperBound",
"nodeType": "EnumValue",
"src": "256:10:11"
},
{
"id": 2708,
"name": "Midpoint",
"nodeType": "EnumValue",
"src": "268:8:11"
}
],
"name": "EstimationMode",
"nodeType": "EnumDefinition",
"src": "222:56:11"
},
{
"constant": true,
"id": 2712,
"name": "ONE",
"nodeType": "VariableDeclaration",
"scope": 3954,
"src": "363:47:11",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2710,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "363:4:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"argumentTypes": null,
"hexValue": "30783130303030303030303030303030303030",
"id": 2711,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "391:19:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_18446744073709551616_by_1",
"typeString": "int_const 18446744073709551616"
},
"value": "0x10000000000000000"
},
"visibility": "public"
},
{
"constant": true,
"id": 2715,
"name": "LN2",
"nodeType": "VariableDeclaration",
"scope": 3954,
"src": "416:45:11",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2713,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "416:4:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"argumentTypes": null,
"hexValue": "307862313732313766376431636637396163",
"id": 2714,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "443:18:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_12786308645202655660_by_1",
"typeString": "int_const 12786308645202655660"
},
"value": "0xb17217f7d1cf79ac"
},
"visibility": "public"
},
{
"constant": true,
"id": 2718,
"name": "LOG2_E",
"nodeType": "VariableDeclaration",
"scope": 3954,
"src": "467:49:11",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 2716,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "467:4:11",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": {
"argumentTypes": null,
"hexValue": "30783137313534373635326238326665313737",
"id": 2717,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "497:19:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_26613026195688644983_by_1",
"typeString": "int_const 26613026195688644983"
},
"value": "0x171547652b82fe177"
},
"visibility": "public"
},
{
"body": {
"id": 2761,
"nodeType": "Block",
"src": "749:496:11",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_int256",
"typeString": "int256"
},
"id": 2728,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 2726,
"name": "x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2720,
"src": "886:1:11",
"typeDescriptions": {
"typeIdentifier": "t_int256",
"typeString": "int256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "32343534393731323539383738393039383836363739",
"id": 2727,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "891:22:11",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2454971259878909886679_by_1",
"typeString": "int_const 2454971259878909886679"
},
"value": "2454971259878909886679"
},
"src": "886:27:11",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"