Skip to content

Instantly share code, notes, and snippets.

@BlinkyStitt
Created February 26, 2019 19:18
Show Gist options
  • Save BlinkyStitt/e08f7d1faf5ebd82367d5893d1753548 to your computer and use it in GitHub Desktop.
Save BlinkyStitt/e08f7d1faf5ebd82367d5893d1753548 to your computer and use it in GitHub Desktop.
{
"contractName": "GasToken2",
"abi": [
{
"constant": true,
"inputs": [],
"name": "name",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x06fdde03"
},
{
"constant": false,
"inputs": [
{
"name": "from",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "freeFromUpTo",
"outputs": [
{
"name": "freed",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x079d229f"
},
{
"constant": false,
"inputs": [
{
"name": "spender",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x095ea7b3"
},
{
"constant": true,
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"name": "supply",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x18160ddd"
},
{
"constant": false,
"inputs": [
{
"name": "from",
"type": "address"
},
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x23b872dd"
},
{
"constant": true,
"inputs": [],
"name": "decimals",
"outputs": [
{
"name": "",
"type": "uint8"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x313ce567"
},
{
"constant": false,
"inputs": [
{
"name": "from",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "freeFrom",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x5f2e2b45"
},
{
"constant": false,
"inputs": [
{
"name": "value",
"type": "uint256"
}
],
"name": "freeUpTo",
"outputs": [
{
"name": "freed",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0x6366b936"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"name": "balance",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x70a08231"
},
{
"constant": true,
"inputs": [],
"name": "symbol",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0x95d89b41"
},
{
"constant": false,
"inputs": [
{
"name": "value",
"type": "uint256"
}
],
"name": "mint",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xa0712d68"
},
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xa9059cbb"
},
{
"constant": false,
"inputs": [
{
"name": "value",
"type": "uint256"
}
],
"name": "free",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function",
"signature": "0xd8ccd0f3"
},
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"name": "remaining",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function",
"signature": "0xdd62ed3e"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "from",
"type": "address"
},
{
"indexed": true,
"name": "to",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event",
"signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "owner",
"type": "address"
},
{
"indexed": true,
"name": "spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event",
"signature": "0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "_from",
"type": "address"
},
{
"indexed": false,
"name": "_spender",
"type": "address"
},
{
"indexed": false,
"name": "value",
"type": "uint256"
}
],
"name": "DebugFreeFromUpTo",
"type": "event",
"signature": "0x092625ede2e7bf5c3d943ed55d931baab046f969a314368a1718e4aa6132bf22"
}
],
"bytecode": "0x6060604052341561000f57600080fd5b5b610a7c8061001f6000396000f300606060405236156100cd5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100d2578063079d229f1461015d578063095ea7b31461019157806318160ddd146101c757806323b872dd146101ec578063313ce567146102285780635f2e2b45146102515780636366b9361461028757806370a08231146102af57806395d89b41146102e0578063a0712d681461036b578063a9059cbb14610383578063d8ccd0f3146103b9578063dd62ed3e146103e3575b600080fd5b34156100dd57600080fd5b6100e561041a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101225780820151818401525b602001610109565b50505050905090810190601f16801561014f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561016857600080fd5b61017f600160a060020a0360043516602435610451565b60405190815260200160405180910390f35b341561019c57600080fd5b6101b3600160a060020a036004351660243561045a565b604051901515815260200160405180910390f35b34156101d257600080fd5b61017f61050a565b60405190815260200160405180910390f35b34156101f757600080fd5b6101b3600160a060020a0360043581169060243516604435610515565b604051901515815260200160405180910390f35b341561023357600080fd5b61023b61059e565b60405160ff909116815260200160405180910390f35b341561025c57600080fd5b6101b3600160a060020a03600435166024356105a3565b604051901515815260200160405180910390f35b341561029257600080fd5b61017f600435610651565b60405190815260200160405180910390f35b34156102ba57600080fd5b61017f600160a060020a03600435166106a6565b60405190815260200160405180910390f35b34156102eb57600080fd5b6100e56106c5565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101225780820151818401525b602001610109565b50505050905090810190601f16801561014f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037657600080fd5b6103816004356106fc565b005b341561038e57600080fd5b6101b3600160a060020a0360043516602435610744565b604051901515815260200160405180910390f35b34156103c457600080fd5b6101b360043561075c565b604051901515815260200160405180910390f35b34156103ee57600080fd5b61017f600160a060020a03600435811690602435166107b7565b60405190815260200160405180910390f35b60408051908101604052600b81527f476173746f6b656e2e696f000000000000000000000000000000000000000000602082015281565b60005b92915050565b60003382158015906104905750600160a060020a0380821660009081526001602090815260408083209388168352929052205415155b1561049e5760009150610503565b600160a060020a03808216600081815260016020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a3600191505b5092915050565b600354600254035b90565b600160a060020a038084166000908152600160209081526040808320339485168452909152812054909190831180159061055557506105558585856107e4565b5b1561059057600160a060020a0380861660009081526001602081815260408084209486168452939052919020805485900390559150610595565b600091505b5b509392505050565b600281565b600160a060020a03821660009081526020819052604081205433908280828611156105d15760009450610647565b5050600160a060020a0380861660009081526001602090815260408083209386168352908390529020548086111561060c5760009450610647565b6106158661087c565b600160a060020a038088166000908152602081815260408083208a880390559287168252849052208682039055600194505b5050505092915050565b600160a060020a03331660009081526020819052604081205480831115610676578092505b61067f8361087c565b600160a060020a033316600090815260208190526040902083820390558291505b50919050565b600160a060020a0381166000908152602081905260409020545b919050565b60408051908101604052600481527f4753543200000000000000000000000000000000000000000000000000000000602082015281565b60005b818110156107195761070f6108cd565b505b6001016106ff565b6002805483019055600160a060020a03331660009081526020819052604090208054830190555b5050565b6000336107528185856107e4565b91505b5092915050565b600160a060020a0333166000908152602081905260408120548083111561078657600091506106a0565b61078f8361087c565b600160a060020a03331660009081526020819052604090208382039055600191505b50919050565b600160a060020a038083166000908152600160209081526040808320938516835292905220545b92915050565b600160a060020a038316600090815260208190526040812054821161087057600160a060020a038085166000818152602081905260408082208054879003905592861680825290839020805486019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3506001610874565b5060005b5b9392505050565b600354600181015b81830181116108c1576108973082610904565b600160a060020a031660405160006040518083038160008661646e5a03f15050505b600101610884565b8183016003555b505050565b60006040517e756eb3f879cb30fe243b4dfee438691c043318585733ff6000526016600af38152601f600182016000f09150505b90565b6000808080808068ffffffffffffffffff87111561092157600080fd5b8660001080156109315750608087105b15610943576001945060019350610955565b61094c87610a28565b94508460010193505b6015840192507f010000000000000000000000000000000000000000000000000000000000000060d58501026a0100000000000000000000600160a060020a038a1602017e94000000000000000000000000000000000000000000000000000000000000019150600087901080156109cd5750608087105b156109e8578669010000000000000000000282019150610a0b565b8460800169010000000000000000000282019150846009036101000a8702820191505b60405182815260018401902095508590505b505050505092915050565b60008060015b808410610a45576001919091019061010002610a2e565b8192505b50509190505600a165627a7a7230582026ba2d0b62d33ca52dc2385a87d2c2bb36f9b5032d8ee94d779dd00b8b233e3f0029",
"deployedBytecode": "0x606060405236156100cd5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100d2578063079d229f1461015d578063095ea7b31461019157806318160ddd146101c757806323b872dd146101ec578063313ce567146102285780635f2e2b45146102515780636366b9361461028757806370a08231146102af57806395d89b41146102e0578063a0712d681461036b578063a9059cbb14610383578063d8ccd0f3146103b9578063dd62ed3e146103e3575b600080fd5b34156100dd57600080fd5b6100e561041a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101225780820151818401525b602001610109565b50505050905090810190601f16801561014f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561016857600080fd5b61017f600160a060020a0360043516602435610451565b60405190815260200160405180910390f35b341561019c57600080fd5b6101b3600160a060020a036004351660243561045a565b604051901515815260200160405180910390f35b34156101d257600080fd5b61017f61050a565b60405190815260200160405180910390f35b34156101f757600080fd5b6101b3600160a060020a0360043581169060243516604435610515565b604051901515815260200160405180910390f35b341561023357600080fd5b61023b61059e565b60405160ff909116815260200160405180910390f35b341561025c57600080fd5b6101b3600160a060020a03600435166024356105a3565b604051901515815260200160405180910390f35b341561029257600080fd5b61017f600435610651565b60405190815260200160405180910390f35b34156102ba57600080fd5b61017f600160a060020a03600435166106a6565b60405190815260200160405180910390f35b34156102eb57600080fd5b6100e56106c5565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156101225780820151818401525b602001610109565b50505050905090810190601f16801561014f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561037657600080fd5b6103816004356106fc565b005b341561038e57600080fd5b6101b3600160a060020a0360043516602435610744565b604051901515815260200160405180910390f35b34156103c457600080fd5b6101b360043561075c565b604051901515815260200160405180910390f35b34156103ee57600080fd5b61017f600160a060020a03600435811690602435166107b7565b60405190815260200160405180910390f35b60408051908101604052600b81527f476173746f6b656e2e696f000000000000000000000000000000000000000000602082015281565b60005b92915050565b60003382158015906104905750600160a060020a0380821660009081526001602090815260408083209388168352929052205415155b1561049e5760009150610503565b600160a060020a03808216600081815260016020908152604080832094891680845294909152908190208690557f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259086905190815260200160405180910390a3600191505b5092915050565b600354600254035b90565b600160a060020a038084166000908152600160209081526040808320339485168452909152812054909190831180159061055557506105558585856107e4565b5b1561059057600160a060020a0380861660009081526001602081815260408084209486168452939052919020805485900390559150610595565b600091505b5b509392505050565b600281565b600160a060020a03821660009081526020819052604081205433908280828611156105d15760009450610647565b5050600160a060020a0380861660009081526001602090815260408083209386168352908390529020548086111561060c5760009450610647565b6106158661087c565b600160a060020a038088166000908152602081815260408083208a880390559287168252849052208682039055600194505b5050505092915050565b600160a060020a03331660009081526020819052604081205480831115610676578092505b61067f8361087c565b600160a060020a033316600090815260208190526040902083820390558291505b50919050565b600160a060020a0381166000908152602081905260409020545b919050565b60408051908101604052600481527f4753543200000000000000000000000000000000000000000000000000000000602082015281565b60005b818110156107195761070f6108cd565b505b6001016106ff565b6002805483019055600160a060020a03331660009081526020819052604090208054830190555b5050565b6000336107528185856107e4565b91505b5092915050565b600160a060020a0333166000908152602081905260408120548083111561078657600091506106a0565b61078f8361087c565b600160a060020a03331660009081526020819052604090208382039055600191505b50919050565b600160a060020a038083166000908152600160209081526040808320938516835292905220545b92915050565b600160a060020a038316600090815260208190526040812054821161087057600160a060020a038085166000818152602081905260408082208054879003905592861680825290839020805486019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3506001610874565b5060005b5b9392505050565b600354600181015b81830181116108c1576108973082610904565b600160a060020a031660405160006040518083038160008661646e5a03f15050505b600101610884565b8183016003555b505050565b60006040517e756eb3f879cb30fe243b4dfee438691c043318585733ff6000526016600af38152601f600182016000f09150505b90565b6000808080808068ffffffffffffffffff87111561092157600080fd5b8660001080156109315750608087105b15610943576001945060019350610955565b61094c87610a28565b94508460010193505b6015840192507f010000000000000000000000000000000000000000000000000000000000000060d58501026a0100000000000000000000600160a060020a038a1602017e94000000000000000000000000000000000000000000000000000000000000019150600087901080156109cd5750608087105b156109e8578669010000000000000000000282019150610a0b565b8460800169010000000000000000000282019150846009036101000a8702820191505b60405182815260018401902095508590505b505050505092915050565b60008060015b808410610a45576001919091019061010002610a2e565b8192505b50509190505600a165627a7a7230582026ba2d0b62d33ca52dc2385a87d2c2bb36f9b5032d8ee94d779dd00b8b233e3f0029",
"sourceMap": "46:10801:0:-;;;;;;;;;;;;;;;;;;",
"deployedSourceMap": "46:10801:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3034:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;8:100;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10110:735:0;;;;;;;;;;-1:-1:-1;;;;;10110:735:0;;;;;;;;;;;;;;;;;;;;;;2008:329;;;;;;;;;;-1:-1:-1;;;;;2008:329:0;;;;;;;;;;;;;;;;;;;;;;;;4006:103;;;;;;;;;;;;;;;;;;;;;;;;;;;1449:354;;;;;;;;;;-1:-1:-1;;;;;1449:354:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2994:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9081:624;;;;;;;;;;-1:-1:-1;;;;;9081:624:0;;;;;;;;;;;;;;;;;;;;;;;;8458:318;;;;;;;;;;;;;;;;;;;;;;;;;;;;;669:117;;;;;;;;;;-1:-1:-1;;;;;669:117:0;;;;;;;;;;;;;;;;;;;;3083:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;8:100;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6089:190:0;;;;;;;;;;;;;;;;1197:167;;;;;;;;;;-1:-1:-1;;;;;1197:167:0;;;;;;;;;;;;;;;;;;;;;;;;7857:304;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2656:147;;;;;;;;;;-1:-1:-1;;;;;2656:147:0;;;;;;;;;;;;;;;;;;;;;;;;;3034:43;;;;;;;;;;;;;;;;;;:::o;10110:735::-;10177:13;10110:735;;;;;:::o;2008:329::-;2073:12;2113:10;2137;;;;;:47;;-1:-1:-1;;;;;;2151:19:0;;;;;;;:12;:19;;;;;;;;:28;;;;;;;;;;:33;;2137:47;2133:90;;;2207:5;2200:12;;;;2133:90;-1:-1:-1;;;;;2232:19:0;;;;;;;:12;:19;;;;;;;;:28;;;;;;;;;;;;;;:36;;;2278:31;;2263:5;;2278:31;;;;;;;;;;;;;2326:4;2319:11;;2008:329;;;;;;:::o;4006:103::-;4096:6;;4087;;:15;4006:103;;:::o;1449:354::-;-1:-1:-1;;;;;1602:18:0;;;1528:12;1602:18;;;:12;:18;;;;;;;;1570:10;1602:27;;;;;;;;;;;1528:12;;1570:10;1593:36;;;;;:73;;;1633:33;1650:4;1656:2;1660:5;1633:16;:33::i;:::-;1593:73;1590:207;;;-1:-1:-1;;;;;1682:18:0;;;;;;;:12;:18;;;;;;;;:27;;;;;;;;;;;:36;;;;;;;:12;-1:-1:-1;1732:11:0;;1590:207;1781:5;1774:12;;1590:207;1449:354;;;;;;;:::o;2994:34::-;3027:1;2994:34;:::o;9081:624::-;-1:-1:-1;;;;;9229:16:0;;9144:12;9229:16;;;;;;;;;;;9186:10;;9144:12;;9259:20;;;9255:63;;;9302:5;9295:12;;;;9255:63;-1:-1:-1;;;;;;;9374:18:0;;;;;;;:12;:18;;;;;;;;9430:24;;;;;;;;;;;;9468:25;;;9464:68;;;9516:5;9509:12;;;;9464:68;9542:22;9558:5;9542:15;:22::i;:::-;-1:-1:-1;;;;;9575:16:0;;;:10;:16;;;;;;;;;;;9594:20;;;9575:39;;9624:24;;;;;;;;;9651:25;;;9624:52;;9694:4;;-1:-1:-1;9081:624:0;;;;;;;;;:::o;8458:318::-;-1:-1:-1;;;;;8566:10:0;8555:22;8507:13;8555:22;;;;;;;;;;;8591:20;;;8587:71;;;8635:12;8627:20;;8587:71;8668:22;8684:5;8668:15;:22::i;:::-;-1:-1:-1;;;;;8712:10:0;8701:22;:10;:22;;;;;;;;;;8726:20;;;8701:45;;8741:5;;-1:-1:-1;8458:318:0;;;;;:::o;669:117::-;-1:-1:-1;;;;;762:17:0;;728:15;762:17;;;;;;;;;;;669:117;;;;:::o;3083:38::-;;;;;;;;;;;;;;;;;;:::o;6089:190::-;6140:9;6135:72;6159:5;6155:1;:9;6135:72;;;6185:11;:9;:11::i;:::-;;6135:72;6166:3;;6135:72;;;6216:6;:15;;;;;;-1:-1:-1;;;;;6252:10:0;6241:22;6216:6;6241:22;;;;;;;;;;:31;;;;;;6089:190;;;:::o;1197:167::-;1258:12;1297:10;1324:33;1297:10;1347:2;1351:5;1324:16;:33::i;:::-;1317:40;;1197:167;;;;;;:::o;7857:304::-;-1:-1:-1;;;;;7960:10:0;7949:22;7902:12;7949:22;;;;;;;;;;;7985:20;;;7981:63;;;8028:5;8021:12;;;;7981:63;8054:22;8070:5;8054:15;:22::i;:::-;-1:-1:-1;;;;;8098:10:0;8087:22;:10;:22;;;;;;;;;;8112:20;;;8087:45;;8150:4;;-1:-1:-1;7857:304:0;;;;;:::o;2656:147::-;-1:-1:-1;;;;;2768:19:0;;;2732:17;2768:19;;;:12;:19;;;;;;;;:28;;;;;;;;;;2656:147;;;;;:::o;792:340::-;-1:-1:-1;;;;;914:16:0;;877:12;914:16;;;;;;;;;;;905:25;;901:225;;-1:-1:-1;;;;;946:16:0;;;:10;:16;;;;;;;;;;;:25;;;;;;;985:14;;;;;;;;;;:23;;;;;;:14;1022:25;;966:5;;1022:25;;;;;;;;;;;;;-1:-1:-1;1068:4:0;1061:11;;901:225;-1:-1:-1;1110:5:0;901:225;792:340;;;;;;:::o;7170:308::-;7244:6;;7353:1;7346:8;;7329:111;7361:12;;;7356:17;;7329:111;;7394:28;7414:4;7420:1;7394:19;:28::i;:::-;-1:-1:-1;;;;;7394:33:0;:35;;;;;;;;;;;;;;;-1:-1:-1;;;7329:111:0;7375:3;;7329:111;;;7459:12;;;7450:6;:21;7170:308;;;;:::o;4192:1713::-;4231:12;5709:4;5703:5;5757:66;5734:21;5727:6;5886:2;5882:1;5859:21;5855:3;5852:1;5845:6;5837:52;;4264:1635;;;:::o;471:2023:1:-;545:11;;;;;;159:10;919:14;;;911:23;;;;;;1134:1;1130;:5;:28;;;;;121:3;1139:1;:19;1130:28;1126:341;;;1265:1;1251:15;;1296:1;1280:17;;1126:341;;;1397:14;1409:1;1397:11;:14::i;:::-;1383:28;;1441:11;1455:1;1441:15;1425:31;;1126:341;1572:17;:33;;;-1:-1:-1;1757:7:1;1738:15;;;1737:27;1864:7;-1:-1:-1;;;;;1851:10:1;;:20;1736:136;1792:31;1736:136;;-1:-1:-1;1887:1:1;:5;;;:28;;;;;121:3;1896:1;:19;1887:28;1883:192;;;1939:1;1943:6;1939:10;1931:18;;;;1883:192;;;1995:11;1989:3;:17;2010:6;1988:28;1980:36;;;;2052:11;2048:1;:15;2042:3;:22;2038:1;:26;2030:34;;;;1883:192;2154:4;2148:5;2211:6;;;2349:1;2334:3;;2293:4;;;-1:-1:-1;2293:4:1;;-1:-1:-1;471:2023:1;;;;;;;;;;:::o;247:218::-;302:9;;355:1;366:74;373:9;;;366:74;;403:1;398:6;;;;;426:3;418:11;366:74;;;457:1;450:8;;247:218;;;;;;:::o",
"source": "pragma solidity 0.4.16;\n\nimport \"./Rlp.sol\";\n\ncontract GasToken2 is Rlp {\n //////////////////////////////////////////////////////////////////////////\n // Generic ERC20\n //////////////////////////////////////////////////////////////////////////\n\n // owner -> amount\n mapping(address => uint256) s_balances;\n // owner -> spender -> max amount\n mapping(address => mapping(address => uint256)) s_allowances;\n\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n // Spec: Get the account balance of another account with address `owner`\n function balanceOf(address owner) public constant returns (uint256 balance) {\n return s_balances[owner];\n }\n\n function internalTransfer(address from, address to, uint256 value) internal returns (bool success) {\n if (value <= s_balances[from]) {\n s_balances[from] -= value;\n s_balances[to] += value;\n Transfer(from, to, value);\n return true;\n } else {\n return false;\n }\n }\n\n // Spec: Send `value` amount of tokens to address `to`\n function transfer(address to, uint256 value) public returns (bool success) {\n address from = msg.sender;\n return internalTransfer(from, to, value);\n }\n\n // Spec: Send `value` amount of tokens from address `from` to address `to`\n function transferFrom(address from, address to, uint256 value) public returns (bool success) {\n address spender = msg.sender;\n if(value <= s_allowances[from][spender] && internalTransfer(from, to, value)) {\n s_allowances[from][spender] -= value;\n return true;\n } else {\n return false;\n }\n }\n\n // Spec: Allow `spender` to withdraw from your account, multiple times, up\n // to the `value` amount. If this function is called again it overwrites the\n // current allowance with `value`.\n function approve(address spender, uint256 value) public returns (bool success) {\n address owner = msg.sender;\n if (value != 0 && s_allowances[owner][spender] != 0) {\n return false;\n }\n s_allowances[owner][spender] = value;\n Approval(owner, spender, value);\n return true;\n }\n\n // Spec: Returns the `amount` which `spender` is still allowed to withdraw\n // from `owner`.\n // What if the allowance is higher than the balance of the `owner`?\n // Callers should be careful to use min(allowance, balanceOf) to make sure\n // that the allowance is actually present in the account!\n function allowance(address owner, address spender) public constant returns (uint256 remaining) {\n return s_allowances[owner][spender];\n }\n\n //////////////////////////////////////////////////////////////////////////\n // GasToken specifics\n //////////////////////////////////////////////////////////////////////////\n\n uint8 constant public decimals = 2;\n string constant public name = \"Gastoken.io\";\n string constant public symbol = \"GST2\";\n\n // We build a queue of nonces at which child contracts are stored. s_head is\n // the nonce at the head of the queue, s_tail is the nonce behind the tail\n // of the queue. The queue grows at the head and shrinks from the tail.\n // Note that when and only when a contract CREATEs another contract, the\n // creating contract's nonce is incremented.\n // The first child contract is created with nonce == 1, the second child\n // contract is created with nonce == 2, and so on...\n // For example, if there are child contracts at nonces [2,3,4],\n // then s_head == 4 and s_tail == 1. If there are no child contracts,\n // s_head == s_tail.\n uint256 s_head;\n uint256 s_tail;\n\n // totalSupply gives the number of tokens currently in existence\n // Each token corresponds to one child contract that can be SELFDESTRUCTed\n // for a gas refund.\n function totalSupply() public constant returns (uint256 supply) {\n return s_head - s_tail;\n }\n\n // Creates a child contract that can only be destroyed by this contract.\n function makeChild() internal returns (address addr) {\n assembly {\n // EVM assembler of runtime portion of child contract:\n // ;; Pseudocode: if (msg.sender != 0x0000000000b3f879cb30fe243b4dfee438691c04) { throw; }\n // ;; suicide(msg.sender)\n // PUSH15 0xb3f879cb30fe243b4dfee438691c04 ;; hardcoded address of this contract\n // CALLER\n // XOR\n // PC\n // JUMPI\n // CALLER\n // SELFDESTRUCT\n // Or in binary: 6eb3f879cb30fe243b4dfee438691c043318585733ff\n // Since the binary is so short (22 bytes), we can get away\n // with a very simple initcode:\n // PUSH22 0x6eb3f879cb30fe243b4dfee438691c043318585733ff\n // PUSH1 0\n // MSTORE ;; at this point, memory locations mem[10] through\n // ;; mem[31] contain the runtime portion of the child\n // ;; contract. all that's left to do is to RETURN this\n // ;; chunk of memory.\n // PUSH1 22 ;; length\n // PUSH1 10 ;; offset\n // RETURN\n // Or in binary: 756eb3f879cb30fe243b4dfee438691c043318585733ff6000526016600af3\n // Almost done! All we have to do is put this short (31 bytes) blob into\n // memory and call CREATE with the appropriate offsets.\n let solidity_free_mem_ptr := mload(0x40)\n mstore(solidity_free_mem_ptr, 0x00756eb3f879cb30fe243b4dfee438691c043318585733ff6000526016600af3)\n addr := create(0, add(solidity_free_mem_ptr, 1), 31)\n }\n }\n\n // Mints `value` new sub-tokens (e.g. cents, pennies, ...) by creating `value`\n // new child contracts. The minted tokens are owned by the caller of this\n // function.\n function mint(uint256 value) public {\n for (uint256 i = 0; i < value; i++) {\n makeChild();\n }\n s_head += value;\n s_balances[msg.sender] += value;\n }\n\n // Destroys `value` child contracts and updates s_tail.\n //\n // This function is affected by an issue in solc: https://github.com/ethereum/solidity/issues/2999\n // The `mk_contract_address(this, i).call();` doesn't forward all available gas, but only GAS - 25710.\n // As a result, when this line is executed with e.g. 30000 gas, the callee will have less than 5000 gas\n // available and its SELFDESTRUCT operation will fail leading to no gas refund occurring.\n // The remaining ~29000 gas left after the call is enough to update s_tail and the caller's balance.\n // Hence tokens will have been destroyed without a commensurate gas refund.\n // Fortunately, there is a simple workaround:\n // Whenever you call free, freeUpTo, freeFrom, or freeUpToFrom, ensure that you pass at least\n // 25710 + `value` * (1148 + 5722 + 150) gas. (It won't all be used)\n function destroyChildren(uint256 value) internal {\n uint256 tail = s_tail;\n // tail points to slot behind the last contract in the queue\n for (uint256 i = tail + 1; i <= tail + value; i++) {\n mk_contract_address(this, i).call();\n }\n\n s_tail = tail + value;\n }\n\n // Frees `value` sub-tokens (e.g. cents, pennies, ...) belonging to the\n // caller of this function by destroying `value` child contracts, which\n // will trigger a partial gas refund.\n // You should ensure that you pass at least 25710 + `value` * (1148 + 5722 + 150) gas\n // when calling this function. For details, see the comment above `destroyChildren`.\n function free(uint256 value) public returns (bool success) {\n uint256 from_balance = s_balances[msg.sender];\n if (value > from_balance) {\n return false;\n }\n\n destroyChildren(value);\n\n s_balances[msg.sender] = from_balance - value;\n\n return true;\n }\n\n // Frees up to `value` sub-tokens. Returns how many tokens were freed.\n // Otherwise, identical to free.\n // You should ensure that you pass at least 25710 + `value` * (1148 + 5722 + 150) gas\n // when calling this function. For details, see the comment above `destroyChildren`.\n function freeUpTo(uint256 value) public returns (uint256 freed) {\n uint256 from_balance = s_balances[msg.sender];\n if (value > from_balance) {\n value = from_balance;\n }\n\n destroyChildren(value);\n\n s_balances[msg.sender] = from_balance - value;\n\n return value;\n }\n\n // Frees `value` sub-tokens owned by address `from`. Requires that `msg.sender`\n // has been approved by `from`.\n // You should ensure that you pass at least 25710 + `value` * (1148 + 5722 + 150) gas\n // when calling this function. For details, see the comment above `destroyChildren`.\n function freeFrom(address from, uint256 value) public returns (bool success) {\n address spender = msg.sender;\n uint256 from_balance = s_balances[from];\n if (value > from_balance) {\n return false;\n }\n\n mapping(address => uint256) from_allowances = s_allowances[from];\n uint256 spender_allowance = from_allowances[spender];\n if (value > spender_allowance) {\n return false;\n }\n\n destroyChildren(value);\n\n s_balances[from] = from_balance - value;\n from_allowances[spender] = spender_allowance - value;\n\n return true;\n }\n\n event DebugFreeFromUpTo(address _from, address _spender, uint256 value);\n\n // Frees up to `value` sub-tokens owned by address `from`. Returns how many tokens were freed.\n // Otherwise, identical to `freeFrom`.\n // You should ensure that you pass at least 25710 + `value` * (1148 + 5722 + 150) gas\n // when calling this function. For details, see the comment above `destroyChildren`.\n function freeFromUpTo(address from, uint256 value) public returns (uint256 freed) {\n // TODO: WTF?!\n return 0;\n\n // address spender = msg.sender;\n\n // uint256 from_balance = s_balances[from];\n // if (value > from_balance) {\n // value = from_balance;\n // }\n\n // mapping(address => uint256) from_allowances = s_allowances[from];\n // uint256 spender_allowance = from_allowances[spender];\n // if (value > spender_allowance) {\n // value = spender_allowance;\n // }\n\n // destroyChildren(value);\n\n // s_balances[from] = from_balance - value;\n // from_allowances[spender] = spender_allowance - value;\n // return value;\n }\n}\n",
"sourcePath": "../contracts-sol-compiler/external/gastoken/GasToken2.sol",
"ast": {
"absolutePath": "/usr/src/app/contracts-sol-compiler/external/gastoken/GasToken2.sol",
"exportedSymbols": {
"GasToken2": [
481
]
},
"id": 482,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"0.4",
".16"
],
"nodeType": "PragmaDirective",
"src": "0:23:0"
},
{
"absolutePath": "/usr/src/app/contracts-sol-compiler/external/gastoken/Rlp.sol",
"file": "./Rlp.sol",
"id": 2,
"nodeType": "ImportDirective",
"scope": 482,
"sourceUnit": 668,
"src": "25:19:0",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": [],
"baseName": {
"contractScope": null,
"id": 3,
"name": "Rlp",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 667,
"src": "68:3:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Rlp_$667",
"typeString": "contract Rlp"
}
},
"id": 4,
"nodeType": "InheritanceSpecifier",
"src": "68:3:0"
}
],
"contractDependencies": [
667
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 481,
"linearizedBaseContracts": [
481,
667
],
"name": "GasToken2",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": false,
"id": 8,
"name": "s_balances",
"nodeType": "VariableDeclaration",
"scope": 481,
"src": "281:38:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"typeName": {
"id": 7,
"keyType": {
"id": 5,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "289:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "281:27:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"valueType": {
"id": 6,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "300:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 14,
"name": "s_allowances",
"nodeType": "VariableDeclaration",
"scope": 481,
"src": "363:60:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
},
"typeName": {
"id": 13,
"keyType": {
"id": 9,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "371:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "363:47:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
},
"valueType": {
"id": 12,
"keyType": {
"id": 10,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "390:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "382:27:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"valueType": {
"id": 11,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "401:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
}
},
"value": null,
"visibility": "internal"
},
{
"anonymous": false,
"id": 22,
"name": "Transfer",
"nodeType": "EventDefinition",
"parameters": {
"id": 21,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 16,
"indexed": true,
"name": "from",
"nodeType": "VariableDeclaration",
"scope": 22,
"src": "445:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 15,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "445:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 18,
"indexed": true,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 22,
"src": "467:18:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 17,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "467:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 20,
"indexed": false,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 22,
"src": "487:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 19,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "487:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "444:57:0"
},
"src": "430:72:0"
},
{
"anonymous": false,
"id": 30,
"name": "Approval",
"nodeType": "EventDefinition",
"parameters": {
"id": 29,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 24,
"indexed": true,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 30,
"src": "523:21:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 23,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "523:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 26,
"indexed": true,
"name": "spender",
"nodeType": "VariableDeclaration",
"scope": 30,
"src": "546:23:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 25,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "546:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 28,
"indexed": false,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 30,
"src": "571:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 27,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "571:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "522:63:0"
},
"src": "508:78:0"
},
{
"body": {
"id": 41,
"nodeType": "Block",
"src": "745:41:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 37,
"name": "s_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "762:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 39,
"indexExpression": {
"argumentTypes": null,
"id": 38,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 32,
"src": "773:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "762:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 36,
"id": 40,
"nodeType": "Return",
"src": "755:24:0"
}
]
},
"id": 42,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "balanceOf",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 33,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 32,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 42,
"src": "688:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 31,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "688:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "687:15:0"
},
"payable": false,
"returnParameters": {
"id": 36,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 35,
"name": "balance",
"nodeType": "VariableDeclaration",
"scope": 42,
"src": "728:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 34,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "728:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "727:17:0"
},
"scope": 481,
"src": "669:117:0",
"stateMutability": "view",
"visibility": "public"
},
{
"body": {
"id": 83,
"nodeType": "Block",
"src": "891:241:0",
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 57,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 53,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48,
"src": "905:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 54,
"name": "s_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "914:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 56,
"indexExpression": {
"argumentTypes": null,
"id": 55,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44,
"src": "925:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "914:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "905:25:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 81,
"nodeType": "Block",
"src": "1089:37:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 79,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1110:5:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 52,
"id": 80,
"nodeType": "Return",
"src": "1103:12:0"
}
]
},
"id": 82,
"nodeType": "IfStatement",
"src": "901:225:0",
"trueBody": {
"id": 78,
"nodeType": "Block",
"src": "932:151:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 62,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 58,
"name": "s_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "946:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 60,
"indexExpression": {
"argumentTypes": null,
"id": 59,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44,
"src": "957:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "946:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"argumentTypes": null,
"id": 61,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48,
"src": "966:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "946:25:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 63,
"nodeType": "ExpressionStatement",
"src": "946:25:0"
},
{
"expression": {
"argumentTypes": null,
"id": 68,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 64,
"name": "s_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "985:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 66,
"indexExpression": {
"argumentTypes": null,
"id": 65,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46,
"src": "996:2:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "985:14:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"id": 67,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48,
"src": "1003:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "985:23:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 69,
"nodeType": "ExpressionStatement",
"src": "985:23:0"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 71,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 44,
"src": "1031:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 72,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 46,
"src": "1037:2:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 73,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 48,
"src": "1041:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 70,
"name": "Transfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 22,
"src": "1022:8:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_view$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256) view"
}
},
"id": 74,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1022:25:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 75,
"nodeType": "ExpressionStatement",
"src": "1022:25:0"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 76,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1068:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 52,
"id": 77,
"nodeType": "Return",
"src": "1061:11:0"
}
]
}
}
]
},
"id": 84,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "internalTransfer",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 49,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 44,
"name": "from",
"nodeType": "VariableDeclaration",
"scope": 84,
"src": "818:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 43,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "818:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 46,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 84,
"src": "832:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 45,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "832:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 48,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 84,
"src": "844:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 47,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "844:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "817:41:0"
},
"payable": false,
"returnParameters": {
"id": 52,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 51,
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 84,
"src": "877:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 50,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "877:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "876:14:0"
},
"scope": 481,
"src": "792:340:0",
"stateMutability": "nonpayable",
"visibility": "internal"
},
{
"body": {
"id": 104,
"nodeType": "Block",
"src": "1272:92:0",
"statements": [
{
"assignments": [
94
],
"declarations": [
{
"constant": false,
"id": 94,
"name": "from",
"nodeType": "VariableDeclaration",
"scope": 105,
"src": "1282:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 93,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1282:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 97,
"initialValue": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 95,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "1297:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 96,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1297:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1282:25:0"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 99,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 94,
"src": "1341:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 100,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 86,
"src": "1347:2:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 101,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 88,
"src": "1351:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 98,
"name": "internalTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 84,
"src": "1324:16:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) returns (bool)"
}
},
"id": 102,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1324:33:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"functionReturnParameters": 92,
"id": 103,
"nodeType": "Return",
"src": "1317:40:0"
}
]
},
"id": 105,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "transfer",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 89,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 86,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 105,
"src": "1215:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 85,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1215:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 88,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 105,
"src": "1227:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 87,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1227:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1214:27:0"
},
"payable": false,
"returnParameters": {
"id": 92,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 91,
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 105,
"src": "1258:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 90,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1258:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1257:14:0"
},
"scope": 481,
"src": "1197:167:0",
"stateMutability": "nonpayable",
"visibility": "public"
},
{
"body": {
"id": 149,
"nodeType": "Block",
"src": "1542:261:0",
"statements": [
{
"assignments": [
117
],
"declarations": [
{
"constant": false,
"id": 117,
"name": "spender",
"nodeType": "VariableDeclaration",
"scope": 150,
"src": "1552:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 116,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1552:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 120,
"initialValue": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 118,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "1570:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 119,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1570:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "1552:28:0"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 133,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 121,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 111,
"src": "1593:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 122,
"name": "s_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "1602:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 124,
"indexExpression": {
"argumentTypes": null,
"id": 123,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 107,
"src": "1615:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1602:18:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 126,
"indexExpression": {
"argumentTypes": null,
"id": 125,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 117,
"src": "1621:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1602:27:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1593:36:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 129,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 107,
"src": "1650:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 130,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 109,
"src": "1656:2:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 131,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 111,
"src": "1660:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 128,
"name": "internalTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 84,
"src": "1633:16:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) returns (bool)"
}
},
"id": 132,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1633:33:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "1593:73:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 147,
"nodeType": "Block",
"src": "1760:37:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 145,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1781:5:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 115,
"id": 146,
"nodeType": "Return",
"src": "1774:12:0"
}
]
},
"id": 148,
"nodeType": "IfStatement",
"src": "1590:207:0",
"trueBody": {
"id": 144,
"nodeType": "Block",
"src": "1668:86:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 140,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 134,
"name": "s_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "1682:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 137,
"indexExpression": {
"argumentTypes": null,
"id": 135,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 107,
"src": "1695:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "1682:18:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 138,
"indexExpression": {
"argumentTypes": null,
"id": 136,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 117,
"src": "1701:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "1682:27:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "-=",
"rightHandSide": {
"argumentTypes": null,
"id": 139,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 111,
"src": "1713:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "1682:36:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 141,
"nodeType": "ExpressionStatement",
"src": "1682:36:0"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 142,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1739:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 115,
"id": 143,
"nodeType": "Return",
"src": "1732:11:0"
}
]
}
}
]
},
"id": 150,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "transferFrom",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 112,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 107,
"name": "from",
"nodeType": "VariableDeclaration",
"scope": 150,
"src": "1471:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 106,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1471:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 109,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 150,
"src": "1485:10:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 108,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1485:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 111,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 150,
"src": "1497:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 110,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1497:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1470:41:0"
},
"payable": false,
"returnParameters": {
"id": 115,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 114,
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 150,
"src": "1528:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 113,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1528:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1527:14:0"
},
"scope": 481,
"src": "1449:354:0",
"stateMutability": "nonpayable",
"visibility": "public"
},
{
"body": {
"id": 195,
"nodeType": "Block",
"src": "2087:250:0",
"statements": [
{
"assignments": [
160
],
"declarations": [
{
"constant": false,
"id": 160,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 196,
"src": "2097:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 159,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2097:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 163,
"initialValue": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 161,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "2113:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 162,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2113:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2097:26:0"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 174,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 166,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 164,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 154,
"src": "2137:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 165,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2146:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2137:10:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 173,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 167,
"name": "s_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "2151:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 169,
"indexExpression": {
"argumentTypes": null,
"id": 168,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 160,
"src": "2164:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2151:19:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 171,
"indexExpression": {
"argumentTypes": null,
"id": 170,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 152,
"src": "2171:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2151:28:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 172,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2183:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2151:33:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2137:47:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 178,
"nodeType": "IfStatement",
"src": "2133:90:0",
"trueBody": {
"id": 177,
"nodeType": "Block",
"src": "2186:37:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 175,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2207:5:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 158,
"id": 176,
"nodeType": "Return",
"src": "2200:12:0"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 185,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 179,
"name": "s_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "2232:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 182,
"indexExpression": {
"argumentTypes": null,
"id": 180,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 160,
"src": "2245:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2232:19:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 183,
"indexExpression": {
"argumentTypes": null,
"id": 181,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 152,
"src": "2252:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "2232:28:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 184,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 154,
"src": "2263:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2232:36:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 186,
"nodeType": "ExpressionStatement",
"src": "2232:36:0"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 188,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 160,
"src": "2287:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 189,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 152,
"src": "2294:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 190,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 154,
"src": "2303:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 187,
"name": "Approval",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 30,
"src": "2278:8:0",
"typeDescriptions": {
"typeIdentifier": "t_function_event_view$_t_address_$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,address,uint256) view"
}
},
"id": 191,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2278:31:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 192,
"nodeType": "ExpressionStatement",
"src": "2278:31:0"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 193,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2326:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 158,
"id": 194,
"nodeType": "Return",
"src": "2319:11:0"
}
]
},
"id": 196,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "approve",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 155,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 152,
"name": "spender",
"nodeType": "VariableDeclaration",
"scope": 196,
"src": "2025:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 151,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2025:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 154,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 196,
"src": "2042:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 153,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2042:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2024:32:0"
},
"payable": false,
"returnParameters": {
"id": 158,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 157,
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 196,
"src": "2073:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 156,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "2073:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2072:14:0"
},
"scope": 481,
"src": "2008:329:0",
"stateMutability": "nonpayable",
"visibility": "public"
},
{
"body": {
"id": 211,
"nodeType": "Block",
"src": "2751:52:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 205,
"name": "s_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "2768:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 207,
"indexExpression": {
"argumentTypes": null,
"id": 206,
"name": "owner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 198,
"src": "2781:5:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2768:19:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 209,
"indexExpression": {
"argumentTypes": null,
"id": 208,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 200,
"src": "2788:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2768:28:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 204,
"id": 210,
"nodeType": "Return",
"src": "2761:35:0"
}
]
},
"id": 212,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "allowance",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 201,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 198,
"name": "owner",
"nodeType": "VariableDeclaration",
"scope": 212,
"src": "2675:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 197,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2675:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 200,
"name": "spender",
"nodeType": "VariableDeclaration",
"scope": 212,
"src": "2690:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 199,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2690:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2674:32:0"
},
"payable": false,
"returnParameters": {
"id": 204,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 203,
"name": "remaining",
"nodeType": "VariableDeclaration",
"scope": 212,
"src": "2732:17:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 202,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2732:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2731:19:0"
},
"scope": 481,
"src": "2656:147:0",
"stateMutability": "view",
"visibility": "public"
},
{
"constant": true,
"id": 215,
"name": "decimals",
"nodeType": "VariableDeclaration",
"scope": 481,
"src": "2994:34:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 213,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2994:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"argumentTypes": null,
"hexValue": "32",
"id": 214,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3027:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"visibility": "public"
},
{
"constant": true,
"id": 218,
"name": "name",
"nodeType": "VariableDeclaration",
"scope": 481,
"src": "3034:43:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 216,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3034:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "476173746f6b656e2e696f",
"id": 217,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3064:13:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_0d1c4286c55d6c98ff887ea24620fba0fa19b2b689915823b5f072d2ed4ebc24",
"typeString": "literal_string \"Gastoken.io\""
},
"value": "Gastoken.io"
},
"visibility": "public"
},
{
"constant": true,
"id": 221,
"name": "symbol",
"nodeType": "VariableDeclaration",
"scope": 481,
"src": "3083:38:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
},
"typeName": {
"id": 219,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "3083:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string storage pointer"
}
},
"value": {
"argumentTypes": null,
"hexValue": "47535432",
"id": 220,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3115:6:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_5e04720bea86ecb546947317d43c045a01093270a338cc34ec31cfd6a76b4a30",
"typeString": "literal_string \"GST2\""
},
"value": "GST2"
},
"visibility": "public"
},
{
"constant": false,
"id": 223,
"name": "s_head",
"nodeType": "VariableDeclaration",
"scope": 481,
"src": "3791:14:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 222,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3791:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 225,
"name": "s_tail",
"nodeType": "VariableDeclaration",
"scope": 481,
"src": "3811:14:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 224,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3811:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"body": {
"id": 234,
"nodeType": "Block",
"src": "4070:39:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 232,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 230,
"name": "s_head",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 223,
"src": "4087:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 231,
"name": "s_tail",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
"src": "4096:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4087:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 229,
"id": 233,
"nodeType": "Return",
"src": "4080:22:0"
}
]
},
"id": 235,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "totalSupply",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 226,
"nodeType": "ParameterList",
"parameters": [],
"src": "4026:2:0"
},
"payable": false,
"returnParameters": {
"id": 229,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 228,
"name": "supply",
"nodeType": "VariableDeclaration",
"scope": 235,
"src": "4054:14:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 227,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "4054:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4053:16:0"
},
"scope": 481,
"src": "4006:103:0",
"stateMutability": "view",
"visibility": "public"
},
{
"body": {
"id": 241,
"nodeType": "Block",
"src": "4245:1660:0",
"statements": [
{
"externalReferences": [
{
"addr": {
"declaration": 238,
"isOffset": false,
"isSlot": false,
"src": "5837:4:0",
"valueSize": 1
}
}
],
"id": 240,
"nodeType": "InlineAssembly",
"operations": "{\n let solidity_free_mem_ptr := mload(0x40)\n mstore(solidity_free_mem_ptr, 0x00756eb3f879cb30fe243b4dfee438691c043318585733ff6000526016600af3)\n addr := create(0, add(solidity_free_mem_ptr, 1), 31)\n}",
"src": "4255:1650:0"
}
]
},
"id": 242,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "makeChild",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 236,
"nodeType": "ParameterList",
"parameters": [],
"src": "4210:2:0"
},
"payable": false,
"returnParameters": {
"id": 239,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 238,
"name": "addr",
"nodeType": "VariableDeclaration",
"scope": 242,
"src": "4231:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 237,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4231:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4230:14:0"
},
"scope": 481,
"src": "4192:1713:0",
"stateMutability": "nonpayable",
"visibility": "internal"
},
{
"body": {
"id": 273,
"nodeType": "Block",
"src": "6125:154:0",
"statements": [
{
"body": {
"id": 260,
"nodeType": "Block",
"src": "6171:36:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 257,
"name": "makeChild",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 242,
"src": "6185:9:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$__$returns$_t_address_$",
"typeString": "function () returns (address)"
}
},
"id": 258,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6185:11:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 259,
"nodeType": "ExpressionStatement",
"src": "6185:11:0"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 253,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 251,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 248,
"src": "6155:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 252,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 244,
"src": "6159:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6155:9:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 261,
"initializationExpression": {
"assignments": [
248
],
"declarations": [
{
"constant": false,
"id": 248,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 274,
"src": "6140:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 247,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6140:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 250,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 249,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6152:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "6140:13:0"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 255,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "6166:3:0",
"subExpression": {
"argumentTypes": null,
"id": 254,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 248,
"src": "6166:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 256,
"nodeType": "ExpressionStatement",
"src": "6166:3:0"
},
"nodeType": "ForStatement",
"src": "6135:72:0"
},
{
"expression": {
"argumentTypes": null,
"id": 264,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 262,
"name": "s_head",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 223,
"src": "6216:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"id": 263,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 244,
"src": "6226:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6216:15:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 265,
"nodeType": "ExpressionStatement",
"src": "6216:15:0"
},
{
"expression": {
"argumentTypes": null,
"id": 271,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 266,
"name": "s_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "6241:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 269,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 267,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "6252:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 268,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "6252:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "6241:22:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"id": 270,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 244,
"src": "6267:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "6241:31:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 272,
"nodeType": "ExpressionStatement",
"src": "6241:31:0"
}
]
},
"id": 274,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "mint",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 245,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 244,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 274,
"src": "6103:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 243,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "6103:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6102:15:0"
},
"payable": false,
"returnParameters": {
"id": 246,
"nodeType": "ParameterList",
"parameters": [],
"src": "6125:0:0"
},
"scope": 481,
"src": "6089:190:0",
"stateMutability": "nonpayable",
"visibility": "public"
},
{
"body": {
"id": 312,
"nodeType": "Block",
"src": "7219:259:0",
"statements": [
{
"assignments": [
280
],
"declarations": [
{
"constant": false,
"id": 280,
"name": "tail",
"nodeType": "VariableDeclaration",
"scope": 313,
"src": "7229:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 279,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7229:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 282,
"initialValue": {
"argumentTypes": null,
"id": 281,
"name": "s_tail",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
"src": "7244:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7229:21:0"
},
{
"body": {
"id": 304,
"nodeType": "Block",
"src": "7380:60:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 298,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 692,
"src": "7414:4:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_GasToken2_$481",
"typeString": "contract GasToken2"
}
},
{
"argumentTypes": null,
"id": 299,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 284,
"src": "7420:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GasToken2_$481",
"typeString": "contract GasToken2"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 297,
"name": "mk_contract_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 666,
"src": "7394:19:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_address_$",
"typeString": "function (address,uint256) pure returns (address)"
}
},
"id": 300,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7394:28:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 301,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "call",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7394:33:0",
"typeDescriptions": {
"typeIdentifier": "t_function_barecall_payable$__$returns$_t_bool_$",
"typeString": "function () payable returns (bool)"
}
},
"id": 302,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7394:35:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 303,
"nodeType": "ExpressionStatement",
"src": "7394:35:0"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 293,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 289,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 284,
"src": "7356:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 292,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 290,
"name": "tail",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 280,
"src": "7361:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 291,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 276,
"src": "7368:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7361:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7356:17:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 305,
"initializationExpression": {
"assignments": [
284
],
"declarations": [
{
"constant": false,
"id": 284,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 313,
"src": "7334:9:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 283,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7334:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 288,
"initialValue": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 287,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 285,
"name": "tail",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 280,
"src": "7346:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 286,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7353:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "7346:8:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7334:20:0"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 295,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "7375:3:0",
"subExpression": {
"argumentTypes": null,
"id": 294,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 284,
"src": "7375:1:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 296,
"nodeType": "ExpressionStatement",
"src": "7375:3:0"
},
"nodeType": "ForStatement",
"src": "7329:111:0"
},
{
"expression": {
"argumentTypes": null,
"id": 310,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 306,
"name": "s_tail",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
"src": "7450:6:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 309,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 307,
"name": "tail",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 280,
"src": "7459:4:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 308,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 276,
"src": "7466:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7459:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7450:21:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 311,
"nodeType": "ExpressionStatement",
"src": "7450:21:0"
}
]
},
"id": 313,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "destroyChildren",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 277,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 276,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 313,
"src": "7195:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 275,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7195:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7194:15:0"
},
"payable": false,
"returnParameters": {
"id": 278,
"nodeType": "ParameterList",
"parameters": [],
"src": "7219:0:0"
},
"scope": 481,
"src": "7170:308:0",
"stateMutability": "nonpayable",
"visibility": "internal"
},
{
"body": {
"id": 349,
"nodeType": "Block",
"src": "7916:245:0",
"statements": [
{
"assignments": [
321
],
"declarations": [
{
"constant": false,
"id": 321,
"name": "from_balance",
"nodeType": "VariableDeclaration",
"scope": 350,
"src": "7926:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 320,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7926:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 326,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 322,
"name": "s_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "7949:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 325,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 323,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "7960:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 324,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7960:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7949:22:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7926:45:0"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 329,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 327,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "7985:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"id": 328,
"name": "from_balance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 321,
"src": "7993:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7985:20:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 333,
"nodeType": "IfStatement",
"src": "7981:63:0",
"trueBody": {
"id": 332,
"nodeType": "Block",
"src": "8007:37:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 330,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8028:5:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 319,
"id": 331,
"nodeType": "Return",
"src": "8021:12:0"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 335,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "8070:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 334,
"name": "destroyChildren",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 313,
"src": "8054:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 336,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8054:22:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 337,
"nodeType": "ExpressionStatement",
"src": "8054:22:0"
},
{
"expression": {
"argumentTypes": null,
"id": 345,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 338,
"name": "s_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "8087:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 341,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 339,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "8098:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 340,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8098:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "8087:22:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 344,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 342,
"name": "from_balance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 321,
"src": "8112:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 343,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 315,
"src": "8127:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8112:20:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8087:45:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 346,
"nodeType": "ExpressionStatement",
"src": "8087:45:0"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 347,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8150:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 319,
"id": 348,
"nodeType": "Return",
"src": "8143:11:0"
}
]
},
"id": 350,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "free",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 316,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 315,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 350,
"src": "7871:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 314,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7871:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7870:15:0"
},
"payable": false,
"returnParameters": {
"id": 319,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 318,
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 350,
"src": "7902:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 317,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7902:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7901:14:0"
},
"scope": 481,
"src": "7857:304:0",
"stateMutability": "nonpayable",
"visibility": "public"
},
{
"body": {
"id": 388,
"nodeType": "Block",
"src": "8522:254:0",
"statements": [
{
"assignments": [
358
],
"declarations": [
{
"constant": false,
"id": 358,
"name": "from_balance",
"nodeType": "VariableDeclaration",
"scope": 389,
"src": "8532:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 357,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8532:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 363,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 359,
"name": "s_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "8555:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 362,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 360,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "8566:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 361,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8566:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "8555:22:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8532:45:0"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 366,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 364,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 352,
"src": "8591:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"id": 365,
"name": "from_balance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 358,
"src": "8599:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8591:20:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 372,
"nodeType": "IfStatement",
"src": "8587:71:0",
"trueBody": {
"id": 371,
"nodeType": "Block",
"src": "8613:45:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 369,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 367,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 352,
"src": "8627:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 368,
"name": "from_balance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 358,
"src": "8635:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8627:20:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 370,
"nodeType": "ExpressionStatement",
"src": "8627:20:0"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 374,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 352,
"src": "8684:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 373,
"name": "destroyChildren",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 313,
"src": "8668:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 375,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8668:22:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 376,
"nodeType": "ExpressionStatement",
"src": "8668:22:0"
},
{
"expression": {
"argumentTypes": null,
"id": 384,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 377,
"name": "s_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "8701:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 380,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 378,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "8712:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 379,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8712:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "8701:22:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 383,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 381,
"name": "from_balance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 358,
"src": "8726:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 382,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 352,
"src": "8741:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8726:20:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8701:45:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 385,
"nodeType": "ExpressionStatement",
"src": "8701:45:0"
},
{
"expression": {
"argumentTypes": null,
"id": 386,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 352,
"src": "8764:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 356,
"id": 387,
"nodeType": "Return",
"src": "8757:12:0"
}
]
},
"id": 389,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "freeUpTo",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 353,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 352,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 389,
"src": "8476:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 351,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8476:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8475:15:0"
},
"payable": false,
"returnParameters": {
"id": 356,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 355,
"name": "freed",
"nodeType": "VariableDeclaration",
"scope": 389,
"src": "8507:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 354,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8507:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8506:15:0"
},
"scope": 481,
"src": "8458:318:0",
"stateMutability": "nonpayable",
"visibility": "public"
},
{
"body": {
"id": 459,
"nodeType": "Block",
"src": "9158:547:0",
"statements": [
{
"assignments": [
399
],
"declarations": [
{
"constant": false,
"id": 399,
"name": "spender",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "9168:15:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 398,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9168:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 402,
"initialValue": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 400,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "9186:3:0",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 401,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9186:10:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9168:28:0"
},
{
"assignments": [
404
],
"declarations": [
{
"constant": false,
"id": 404,
"name": "from_balance",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "9206:20:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 403,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9206:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 408,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 405,
"name": "s_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "9229:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 407,
"indexExpression": {
"argumentTypes": null,
"id": 406,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 391,
"src": "9240:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9229:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9206:39:0"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 411,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 409,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 393,
"src": "9259:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"id": 410,
"name": "from_balance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 404,
"src": "9267:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9259:20:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 415,
"nodeType": "IfStatement",
"src": "9255:63:0",
"trueBody": {
"id": 414,
"nodeType": "Block",
"src": "9281:37:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 412,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9302:5:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 397,
"id": 413,
"nodeType": "Return",
"src": "9295:12:0"
}
]
}
},
{
"assignments": [
419
],
"declarations": [
{
"constant": false,
"id": 419,
"name": "from_allowances",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "9328:43:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"typeName": {
"id": 418,
"keyType": {
"id": 416,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9336:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "9328:27:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
},
"valueType": {
"id": 417,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9347:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"value": null,
"visibility": "internal"
}
],
"id": 423,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 420,
"name": "s_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 14,
"src": "9374:12:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(address => uint256))"
}
},
"id": 422,
"indexExpression": {
"argumentTypes": null,
"id": 421,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 391,
"src": "9387:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9374:18:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9328:64:0"
},
{
"assignments": [
425
],
"declarations": [
{
"constant": false,
"id": 425,
"name": "spender_allowance",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "9402:25:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 424,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9402:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 429,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 426,
"name": "from_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 419,
"src": "9430:15:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 428,
"indexExpression": {
"argumentTypes": null,
"id": 427,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "9446:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "9430:24:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "9402:52:0"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 432,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 430,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 393,
"src": "9468:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"id": 431,
"name": "spender_allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 425,
"src": "9476:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9468:25:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 436,
"nodeType": "IfStatement",
"src": "9464:68:0",
"trueBody": {
"id": 435,
"nodeType": "Block",
"src": "9495:37:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 433,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9516:5:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 397,
"id": 434,
"nodeType": "Return",
"src": "9509:12:0"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 438,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 393,
"src": "9558:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 437,
"name": "destroyChildren",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 313,
"src": "9542:15:0",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
"typeString": "function (uint256)"
}
},
"id": 439,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9542:22:0",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 440,
"nodeType": "ExpressionStatement",
"src": "9542:22:0"
},
{
"expression": {
"argumentTypes": null,
"id": 447,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 441,
"name": "s_balances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 8,
"src": "9575:10:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 443,
"indexExpression": {
"argumentTypes": null,
"id": 442,
"name": "from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 391,
"src": "9586:4:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9575:16:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 446,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 444,
"name": "from_balance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 404,
"src": "9594:12:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 445,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 393,
"src": "9609:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9594:20:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9575:39:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 448,
"nodeType": "ExpressionStatement",
"src": "9575:39:0"
},
{
"expression": {
"argumentTypes": null,
"id": 455,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 449,
"name": "from_allowances",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 419,
"src": "9624:15:0",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
"typeString": "mapping(address => uint256)"
}
},
"id": 451,
"indexExpression": {
"argumentTypes": null,
"id": 450,
"name": "spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "9640:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "9624:24:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 454,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 452,
"name": "spender_allowance",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 425,
"src": "9651:17:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 453,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 393,
"src": "9671:5:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9651:25:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9624:52:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 456,
"nodeType": "ExpressionStatement",
"src": "9624:52:0"
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 457,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9694:4:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 397,
"id": 458,
"nodeType": "Return",
"src": "9687:11:0"
}
]
},
"id": 460,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "freeFrom",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 394,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 391,
"name": "from",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "9099:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 390,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9099:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 393,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "9113:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 392,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9113:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9098:29:0"
},
"payable": false,
"returnParameters": {
"id": 397,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 396,
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 460,
"src": "9144:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 395,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "9144:4:0",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9143:14:0"
},
"scope": 481,
"src": "9081:624:0",
"stateMutability": "nonpayable",
"visibility": "public"
},
{
"anonymous": false,
"id": 468,
"name": "DebugFreeFromUpTo",
"nodeType": "EventDefinition",
"parameters": {
"id": 467,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 462,
"indexed": false,
"name": "_from",
"nodeType": "VariableDeclaration",
"scope": 468,
"src": "9735:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 461,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9735:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 464,
"indexed": false,
"name": "_spender",
"nodeType": "VariableDeclaration",
"scope": 468,
"src": "9750:16:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 463,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "9750:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 466,
"indexed": false,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 468,
"src": "9768:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 465,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9768:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9734:48:0"
},
"src": "9711:72:0"
},
{
"body": {
"id": 479,
"nodeType": "Block",
"src": "10192:653:0",
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "30",
"id": 477,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "10232:1:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"functionReturnParameters": 476,
"id": 478,
"nodeType": "Return",
"src": "10225:8:0"
}
]
},
"id": 480,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "freeFromUpTo",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 473,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 470,
"name": "from",
"nodeType": "VariableDeclaration",
"scope": 480,
"src": "10132:12:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 469,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "10132:7:0",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 472,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 480,
"src": "10146:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 471,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10146:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10131:29:0"
},
"payable": false,
"returnParameters": {
"id": 476,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 475,
"name": "freed",
"nodeType": "VariableDeclaration",
"scope": 480,
"src": "10177:13:0",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 474,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10177:7:0",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10176:15:0"
},
"scope": 481,
"src": "10110:735:0",
"stateMutability": "nonpayable",
"visibility": "public"
}
],
"scope": 482,
"src": "46:10801:0"
}
],
"src": "0:10848:0"
},
"legacyAST": {
"attributes": {
"absolutePath": "/usr/src/app/contracts-sol-compiler/external/gastoken/GasToken2.sol",
"exportedSymbols": {
"GasToken2": [
481
]
}
},
"children": [
{
"attributes": {
"literals": [
"solidity",
"0.4",
".16"
]
},
"id": 1,
"name": "PragmaDirective",
"src": "0:23:0"
},
{
"attributes": {
"SourceUnit": 668,
"absolutePath": "/usr/src/app/contracts-sol-compiler/external/gastoken/Rlp.sol",
"file": "./Rlp.sol",
"scope": 482,
"symbolAliases": [
null
],
"unitAlias": ""
},
"id": 2,
"name": "ImportDirective",
"src": "25:19:0"
},
{
"attributes": {
"contractDependencies": [
667
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"linearizedBaseContracts": [
481,
667
],
"name": "GasToken2",
"scope": 482
},
"children": [
{
"attributes": {
"arguments": [
null
]
},
"children": [
{
"attributes": {
"contractScope": null,
"name": "Rlp",
"referencedDeclaration": 667,
"type": "contract Rlp"
},
"id": 3,
"name": "UserDefinedTypeName",
"src": "68:3:0"
}
],
"id": 4,
"name": "InheritanceSpecifier",
"src": "68:3:0"
},
{
"attributes": {
"constant": false,
"name": "s_balances",
"scope": 481,
"stateVariable": true,
"storageLocation": "default",
"type": "mapping(address => uint256)",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 5,
"name": "ElementaryTypeName",
"src": "289:7:0"
},
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 6,
"name": "ElementaryTypeName",
"src": "300:7:0"
}
],
"id": 7,
"name": "Mapping",
"src": "281:27:0"
}
],
"id": 8,
"name": "VariableDeclaration",
"src": "281:38:0"
},
{
"attributes": {
"constant": false,
"name": "s_allowances",
"scope": 481,
"stateVariable": true,
"storageLocation": "default",
"type": "mapping(address => mapping(address => uint256))",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"type": "mapping(address => mapping(address => uint256))"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 9,
"name": "ElementaryTypeName",
"src": "371:7:0"
},
{
"attributes": {
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 10,
"name": "ElementaryTypeName",
"src": "390:7:0"
},
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 11,
"name": "ElementaryTypeName",
"src": "401:7:0"
}
],
"id": 12,
"name": "Mapping",
"src": "382:27:0"
}
],
"id": 13,
"name": "Mapping",
"src": "363:47:0"
}
],
"id": 14,
"name": "VariableDeclaration",
"src": "363:60:0"
},
{
"attributes": {
"anonymous": false,
"name": "Transfer"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"indexed": true,
"name": "from",
"scope": 22,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 15,
"name": "ElementaryTypeName",
"src": "445:7:0"
}
],
"id": 16,
"name": "VariableDeclaration",
"src": "445:20:0"
},
{
"attributes": {
"constant": false,
"indexed": true,
"name": "to",
"scope": 22,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 17,
"name": "ElementaryTypeName",
"src": "467:7:0"
}
],
"id": 18,
"name": "VariableDeclaration",
"src": "467:18:0"
},
{
"attributes": {
"constant": false,
"indexed": false,
"name": "value",
"scope": 22,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 19,
"name": "ElementaryTypeName",
"src": "487:7:0"
}
],
"id": 20,
"name": "VariableDeclaration",
"src": "487:13:0"
}
],
"id": 21,
"name": "ParameterList",
"src": "444:57:0"
}
],
"id": 22,
"name": "EventDefinition",
"src": "430:72:0"
},
{
"attributes": {
"anonymous": false,
"name": "Approval"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"indexed": true,
"name": "owner",
"scope": 30,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 23,
"name": "ElementaryTypeName",
"src": "523:7:0"
}
],
"id": 24,
"name": "VariableDeclaration",
"src": "523:21:0"
},
{
"attributes": {
"constant": false,
"indexed": true,
"name": "spender",
"scope": 30,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 25,
"name": "ElementaryTypeName",
"src": "546:7:0"
}
],
"id": 26,
"name": "VariableDeclaration",
"src": "546:23:0"
},
{
"attributes": {
"constant": false,
"indexed": false,
"name": "value",
"scope": 30,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 27,
"name": "ElementaryTypeName",
"src": "571:7:0"
}
],
"id": 28,
"name": "VariableDeclaration",
"src": "571:13:0"
}
],
"id": 29,
"name": "ParameterList",
"src": "522:63:0"
}
],
"id": 30,
"name": "EventDefinition",
"src": "508:78:0"
},
{
"attributes": {
"constant": true,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "balanceOf",
"payable": false,
"scope": 481,
"stateMutability": "view",
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"name": "owner",
"scope": 42,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 31,
"name": "ElementaryTypeName",
"src": "688:7:0"
}
],
"id": 32,
"name": "VariableDeclaration",
"src": "688:13:0"
}
],
"id": 33,
"name": "ParameterList",
"src": "687:15:0"
},
{
"children": [
{
"attributes": {
"constant": false,
"name": "balance",
"scope": 42,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 34,
"name": "ElementaryTypeName",
"src": "728:7:0"
}
],
"id": 35,
"name": "VariableDeclaration",
"src": "728:15:0"
}
],
"id": 36,
"name": "ParameterList",
"src": "727:17:0"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 36
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 8,
"type": "mapping(address => uint256)",
"value": "s_balances"
},
"id": 37,
"name": "Identifier",
"src": "762:10:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 32,
"type": "address",
"value": "owner"
},
"id": 38,
"name": "Identifier",
"src": "773:5:0"
}
],
"id": 39,
"name": "IndexAccess",
"src": "762:17:0"
}
],
"id": 40,
"name": "Return",
"src": "755:24:0"
}
],
"id": 41,
"name": "Block",
"src": "745:41:0"
}
],
"id": 42,
"name": "FunctionDefinition",
"src": "669:117:0"
},
{
"attributes": {
"constant": false,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "internalTransfer",
"payable": false,
"scope": 481,
"stateMutability": "nonpayable",
"visibility": "internal"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"name": "from",
"scope": 84,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 43,
"name": "ElementaryTypeName",
"src": "818:7:0"
}
],
"id": 44,
"name": "VariableDeclaration",
"src": "818:12:0"
},
{
"attributes": {
"constant": false,
"name": "to",
"scope": 84,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 45,
"name": "ElementaryTypeName",
"src": "832:7:0"
}
],
"id": 46,
"name": "VariableDeclaration",
"src": "832:10:0"
},
{
"attributes": {
"constant": false,
"name": "value",
"scope": 84,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 47,
"name": "ElementaryTypeName",
"src": "844:7:0"
}
],
"id": 48,
"name": "VariableDeclaration",
"src": "844:13:0"
}
],
"id": 49,
"name": "ParameterList",
"src": "817:41:0"
},
{
"children": [
{
"attributes": {
"constant": false,
"name": "success",
"scope": 84,
"stateVariable": false,
"storageLocation": "default",
"type": "bool",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bool",
"type": "bool"
},
"id": 50,
"name": "ElementaryTypeName",
"src": "877:4:0"
}
],
"id": 51,
"name": "VariableDeclaration",
"src": "877:12:0"
}
],
"id": 52,
"name": "ParameterList",
"src": "876:14:0"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "<=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 48,
"type": "uint256",
"value": "value"
},
"id": 53,
"name": "Identifier",
"src": "905:5:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 8,
"type": "mapping(address => uint256)",
"value": "s_balances"
},
"id": 54,
"name": "Identifier",
"src": "914:10:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 44,
"type": "address",
"value": "from"
},
"id": 55,
"name": "Identifier",
"src": "925:4:0"
}
],
"id": 56,
"name": "IndexAccess",
"src": "914:16:0"
}
],
"id": 57,
"name": "BinaryOperation",
"src": "905:25:0"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "-=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 8,
"type": "mapping(address => uint256)",
"value": "s_balances"
},
"id": 58,
"name": "Identifier",
"src": "946:10:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 44,
"type": "address",
"value": "from"
},
"id": 59,
"name": "Identifier",
"src": "957:4:0"
}
],
"id": 60,
"name": "IndexAccess",
"src": "946:16:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 48,
"type": "uint256",
"value": "value"
},
"id": 61,
"name": "Identifier",
"src": "966:5:0"
}
],
"id": 62,
"name": "Assignment",
"src": "946:25:0"
}
],
"id": 63,
"name": "ExpressionStatement",
"src": "946:25:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "+=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 8,
"type": "mapping(address => uint256)",
"value": "s_balances"
},
"id": 64,
"name": "Identifier",
"src": "985:10:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 46,
"type": "address",
"value": "to"
},
"id": 65,
"name": "Identifier",
"src": "996:2:0"
}
],
"id": 66,
"name": "IndexAccess",
"src": "985:14:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 48,
"type": "uint256",
"value": "value"
},
"id": 67,
"name": "Identifier",
"src": "1003:5:0"
}
],
"id": 68,
"name": "Assignment",
"src": "985:23:0"
}
],
"id": 69,
"name": "ExpressionStatement",
"src": "985:23:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 22,
"type": "function (address,address,uint256) view",
"value": "Transfer"
},
"id": 70,
"name": "Identifier",
"src": "1022:8:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 44,
"type": "address",
"value": "from"
},
"id": 71,
"name": "Identifier",
"src": "1031:4:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 46,
"type": "address",
"value": "to"
},
"id": 72,
"name": "Identifier",
"src": "1037:2:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 48,
"type": "uint256",
"value": "value"
},
"id": 73,
"name": "Identifier",
"src": "1041:5:0"
}
],
"id": 74,
"name": "FunctionCall",
"src": "1022:25:0"
}
],
"id": 75,
"name": "ExpressionStatement",
"src": "1022:25:0"
},
{
"attributes": {
"functionReturnParameters": 52
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "74727565",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "true"
},
"id": 76,
"name": "Literal",
"src": "1068:4:0"
}
],
"id": 77,
"name": "Return",
"src": "1061:11:0"
}
],
"id": 78,
"name": "Block",
"src": "932:151:0"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 52
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "66616c7365",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "false"
},
"id": 79,
"name": "Literal",
"src": "1110:5:0"
}
],
"id": 80,
"name": "Return",
"src": "1103:12:0"
}
],
"id": 81,
"name": "Block",
"src": "1089:37:0"
}
],
"id": 82,
"name": "IfStatement",
"src": "901:225:0"
}
],
"id": 83,
"name": "Block",
"src": "891:241:0"
}
],
"id": 84,
"name": "FunctionDefinition",
"src": "792:340:0"
},
{
"attributes": {
"constant": false,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "transfer",
"payable": false,
"scope": 481,
"stateMutability": "nonpayable",
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"name": "to",
"scope": 105,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 85,
"name": "ElementaryTypeName",
"src": "1215:7:0"
}
],
"id": 86,
"name": "VariableDeclaration",
"src": "1215:10:0"
},
{
"attributes": {
"constant": false,
"name": "value",
"scope": 105,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 87,
"name": "ElementaryTypeName",
"src": "1227:7:0"
}
],
"id": 88,
"name": "VariableDeclaration",
"src": "1227:13:0"
}
],
"id": 89,
"name": "ParameterList",
"src": "1214:27:0"
},
{
"children": [
{
"attributes": {
"constant": false,
"name": "success",
"scope": 105,
"stateVariable": false,
"storageLocation": "default",
"type": "bool",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bool",
"type": "bool"
},
"id": 90,
"name": "ElementaryTypeName",
"src": "1258:4:0"
}
],
"id": 91,
"name": "VariableDeclaration",
"src": "1258:12:0"
}
],
"id": 92,
"name": "ParameterList",
"src": "1257:14:0"
},
{
"children": [
{
"attributes": {
"assignments": [
94
]
},
"children": [
{
"attributes": {
"constant": false,
"name": "from",
"scope": 105,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 93,
"name": "ElementaryTypeName",
"src": "1282:7:0"
}
],
"id": 94,
"name": "VariableDeclaration",
"src": "1282:12:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"referencedDeclaration": null,
"type": "address"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 670,
"type": "msg",
"value": "msg"
},
"id": 95,
"name": "Identifier",
"src": "1297:3:0"
}
],
"id": 96,
"name": "MemberAccess",
"src": "1297:10:0"
}
],
"id": 97,
"name": "VariableDeclarationStatement",
"src": "1282:25:0"
},
{
"attributes": {
"functionReturnParameters": 92
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"type": "bool",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 84,
"type": "function (address,address,uint256) returns (bool)",
"value": "internalTransfer"
},
"id": 98,
"name": "Identifier",
"src": "1324:16:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 94,
"type": "address",
"value": "from"
},
"id": 99,
"name": "Identifier",
"src": "1341:4:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 86,
"type": "address",
"value": "to"
},
"id": 100,
"name": "Identifier",
"src": "1347:2:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 88,
"type": "uint256",
"value": "value"
},
"id": 101,
"name": "Identifier",
"src": "1351:5:0"
}
],
"id": 102,
"name": "FunctionCall",
"src": "1324:33:0"
}
],
"id": 103,
"name": "Return",
"src": "1317:40:0"
}
],
"id": 104,
"name": "Block",
"src": "1272:92:0"
}
],
"id": 105,
"name": "FunctionDefinition",
"src": "1197:167:0"
},
{
"attributes": {
"constant": false,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "transferFrom",
"payable": false,
"scope": 481,
"stateMutability": "nonpayable",
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"name": "from",
"scope": 150,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 106,
"name": "ElementaryTypeName",
"src": "1471:7:0"
}
],
"id": 107,
"name": "VariableDeclaration",
"src": "1471:12:0"
},
{
"attributes": {
"constant": false,
"name": "to",
"scope": 150,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 108,
"name": "ElementaryTypeName",
"src": "1485:7:0"
}
],
"id": 109,
"name": "VariableDeclaration",
"src": "1485:10:0"
},
{
"attributes": {
"constant": false,
"name": "value",
"scope": 150,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 110,
"name": "ElementaryTypeName",
"src": "1497:7:0"
}
],
"id": 111,
"name": "VariableDeclaration",
"src": "1497:13:0"
}
],
"id": 112,
"name": "ParameterList",
"src": "1470:41:0"
},
{
"children": [
{
"attributes": {
"constant": false,
"name": "success",
"scope": 150,
"stateVariable": false,
"storageLocation": "default",
"type": "bool",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bool",
"type": "bool"
},
"id": 113,
"name": "ElementaryTypeName",
"src": "1528:4:0"
}
],
"id": 114,
"name": "VariableDeclaration",
"src": "1528:12:0"
}
],
"id": 115,
"name": "ParameterList",
"src": "1527:14:0"
},
{
"children": [
{
"attributes": {
"assignments": [
117
]
},
"children": [
{
"attributes": {
"constant": false,
"name": "spender",
"scope": 150,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 116,
"name": "ElementaryTypeName",
"src": "1552:7:0"
}
],
"id": 117,
"name": "VariableDeclaration",
"src": "1552:15:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"referencedDeclaration": null,
"type": "address"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 670,
"type": "msg",
"value": "msg"
},
"id": 118,
"name": "Identifier",
"src": "1570:3:0"
}
],
"id": 119,
"name": "MemberAccess",
"src": "1570:10:0"
}
],
"id": 120,
"name": "VariableDeclarationStatement",
"src": "1552:28:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "&&",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "<=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 111,
"type": "uint256",
"value": "value"
},
"id": 121,
"name": "Identifier",
"src": "1593:5:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 14,
"type": "mapping(address => mapping(address => uint256))",
"value": "s_allowances"
},
"id": 122,
"name": "Identifier",
"src": "1602:12:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 107,
"type": "address",
"value": "from"
},
"id": 123,
"name": "Identifier",
"src": "1615:4:0"
}
],
"id": 124,
"name": "IndexAccess",
"src": "1602:18:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 117,
"type": "address",
"value": "spender"
},
"id": 125,
"name": "Identifier",
"src": "1621:7:0"
}
],
"id": 126,
"name": "IndexAccess",
"src": "1602:27:0"
}
],
"id": 127,
"name": "BinaryOperation",
"src": "1593:36:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"type": "bool",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 84,
"type": "function (address,address,uint256) returns (bool)",
"value": "internalTransfer"
},
"id": 128,
"name": "Identifier",
"src": "1633:16:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 107,
"type": "address",
"value": "from"
},
"id": 129,
"name": "Identifier",
"src": "1650:4:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 109,
"type": "address",
"value": "to"
},
"id": 130,
"name": "Identifier",
"src": "1656:2:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 111,
"type": "uint256",
"value": "value"
},
"id": 131,
"name": "Identifier",
"src": "1660:5:0"
}
],
"id": 132,
"name": "FunctionCall",
"src": "1633:33:0"
}
],
"id": 133,
"name": "BinaryOperation",
"src": "1593:73:0"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "-=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 14,
"type": "mapping(address => mapping(address => uint256))",
"value": "s_allowances"
},
"id": 134,
"name": "Identifier",
"src": "1682:12:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 107,
"type": "address",
"value": "from"
},
"id": 135,
"name": "Identifier",
"src": "1695:4:0"
}
],
"id": 137,
"name": "IndexAccess",
"src": "1682:18:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 117,
"type": "address",
"value": "spender"
},
"id": 136,
"name": "Identifier",
"src": "1701:7:0"
}
],
"id": 138,
"name": "IndexAccess",
"src": "1682:27:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 111,
"type": "uint256",
"value": "value"
},
"id": 139,
"name": "Identifier",
"src": "1713:5:0"
}
],
"id": 140,
"name": "Assignment",
"src": "1682:36:0"
}
],
"id": 141,
"name": "ExpressionStatement",
"src": "1682:36:0"
},
{
"attributes": {
"functionReturnParameters": 115
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "74727565",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "true"
},
"id": 142,
"name": "Literal",
"src": "1739:4:0"
}
],
"id": 143,
"name": "Return",
"src": "1732:11:0"
}
],
"id": 144,
"name": "Block",
"src": "1668:86:0"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 115
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "66616c7365",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "false"
},
"id": 145,
"name": "Literal",
"src": "1781:5:0"
}
],
"id": 146,
"name": "Return",
"src": "1774:12:0"
}
],
"id": 147,
"name": "Block",
"src": "1760:37:0"
}
],
"id": 148,
"name": "IfStatement",
"src": "1590:207:0"
}
],
"id": 149,
"name": "Block",
"src": "1542:261:0"
}
],
"id": 150,
"name": "FunctionDefinition",
"src": "1449:354:0"
},
{
"attributes": {
"constant": false,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "approve",
"payable": false,
"scope": 481,
"stateMutability": "nonpayable",
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"name": "spender",
"scope": 196,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 151,
"name": "ElementaryTypeName",
"src": "2025:7:0"
}
],
"id": 152,
"name": "VariableDeclaration",
"src": "2025:15:0"
},
{
"attributes": {
"constant": false,
"name": "value",
"scope": 196,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 153,
"name": "ElementaryTypeName",
"src": "2042:7:0"
}
],
"id": 154,
"name": "VariableDeclaration",
"src": "2042:13:0"
}
],
"id": 155,
"name": "ParameterList",
"src": "2024:32:0"
},
{
"children": [
{
"attributes": {
"constant": false,
"name": "success",
"scope": 196,
"stateVariable": false,
"storageLocation": "default",
"type": "bool",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bool",
"type": "bool"
},
"id": 156,
"name": "ElementaryTypeName",
"src": "2073:4:0"
}
],
"id": 157,
"name": "VariableDeclaration",
"src": "2073:12:0"
}
],
"id": 158,
"name": "ParameterList",
"src": "2072:14:0"
},
{
"children": [
{
"attributes": {
"assignments": [
160
]
},
"children": [
{
"attributes": {
"constant": false,
"name": "owner",
"scope": 196,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 159,
"name": "ElementaryTypeName",
"src": "2097:7:0"
}
],
"id": 160,
"name": "VariableDeclaration",
"src": "2097:13:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"referencedDeclaration": null,
"type": "address"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 670,
"type": "msg",
"value": "msg"
},
"id": 161,
"name": "Identifier",
"src": "2113:3:0"
}
],
"id": 162,
"name": "MemberAccess",
"src": "2113:10:0"
}
],
"id": 163,
"name": "VariableDeclarationStatement",
"src": "2097:26:0"
},
{
"attributes": {
"falseBody": null
},
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "&&",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 154,
"type": "uint256",
"value": "value"
},
"id": 164,
"name": "Identifier",
"src": "2137:5:0"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 165,
"name": "Literal",
"src": "2146:1:0"
}
],
"id": 166,
"name": "BinaryOperation",
"src": "2137:10:0"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "!=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 14,
"type": "mapping(address => mapping(address => uint256))",
"value": "s_allowances"
},
"id": 167,
"name": "Identifier",
"src": "2151:12:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 160,
"type": "address",
"value": "owner"
},
"id": 168,
"name": "Identifier",
"src": "2164:5:0"
}
],
"id": 169,
"name": "IndexAccess",
"src": "2151:19:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 152,
"type": "address",
"value": "spender"
},
"id": 170,
"name": "Identifier",
"src": "2171:7:0"
}
],
"id": 171,
"name": "IndexAccess",
"src": "2151:28:0"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 172,
"name": "Literal",
"src": "2183:1:0"
}
],
"id": 173,
"name": "BinaryOperation",
"src": "2151:33:0"
}
],
"id": 174,
"name": "BinaryOperation",
"src": "2137:47:0"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 158
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "66616c7365",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "false"
},
"id": 175,
"name": "Literal",
"src": "2207:5:0"
}
],
"id": 176,
"name": "Return",
"src": "2200:12:0"
}
],
"id": 177,
"name": "Block",
"src": "2186:37:0"
}
],
"id": 178,
"name": "IfStatement",
"src": "2133:90:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 14,
"type": "mapping(address => mapping(address => uint256))",
"value": "s_allowances"
},
"id": 179,
"name": "Identifier",
"src": "2232:12:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 160,
"type": "address",
"value": "owner"
},
"id": 180,
"name": "Identifier",
"src": "2245:5:0"
}
],
"id": 182,
"name": "IndexAccess",
"src": "2232:19:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 152,
"type": "address",
"value": "spender"
},
"id": 181,
"name": "Identifier",
"src": "2252:7:0"
}
],
"id": 183,
"name": "IndexAccess",
"src": "2232:28:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 154,
"type": "uint256",
"value": "value"
},
"id": 184,
"name": "Identifier",
"src": "2263:5:0"
}
],
"id": 185,
"name": "Assignment",
"src": "2232:36:0"
}
],
"id": 186,
"name": "ExpressionStatement",
"src": "2232:36:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 30,
"type": "function (address,address,uint256) view",
"value": "Approval"
},
"id": 187,
"name": "Identifier",
"src": "2278:8:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 160,
"type": "address",
"value": "owner"
},
"id": 188,
"name": "Identifier",
"src": "2287:5:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 152,
"type": "address",
"value": "spender"
},
"id": 189,
"name": "Identifier",
"src": "2294:7:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 154,
"type": "uint256",
"value": "value"
},
"id": 190,
"name": "Identifier",
"src": "2303:5:0"
}
],
"id": 191,
"name": "FunctionCall",
"src": "2278:31:0"
}
],
"id": 192,
"name": "ExpressionStatement",
"src": "2278:31:0"
},
{
"attributes": {
"functionReturnParameters": 158
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "74727565",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "true"
},
"id": 193,
"name": "Literal",
"src": "2326:4:0"
}
],
"id": 194,
"name": "Return",
"src": "2319:11:0"
}
],
"id": 195,
"name": "Block",
"src": "2087:250:0"
}
],
"id": 196,
"name": "FunctionDefinition",
"src": "2008:329:0"
},
{
"attributes": {
"constant": true,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "allowance",
"payable": false,
"scope": 481,
"stateMutability": "view",
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"name": "owner",
"scope": 212,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 197,
"name": "ElementaryTypeName",
"src": "2675:7:0"
}
],
"id": 198,
"name": "VariableDeclaration",
"src": "2675:13:0"
},
{
"attributes": {
"constant": false,
"name": "spender",
"scope": 212,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 199,
"name": "ElementaryTypeName",
"src": "2690:7:0"
}
],
"id": 200,
"name": "VariableDeclaration",
"src": "2690:15:0"
}
],
"id": 201,
"name": "ParameterList",
"src": "2674:32:0"
},
{
"children": [
{
"attributes": {
"constant": false,
"name": "remaining",
"scope": 212,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 202,
"name": "ElementaryTypeName",
"src": "2732:7:0"
}
],
"id": 203,
"name": "VariableDeclaration",
"src": "2732:17:0"
}
],
"id": 204,
"name": "ParameterList",
"src": "2731:19:0"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 204
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 14,
"type": "mapping(address => mapping(address => uint256))",
"value": "s_allowances"
},
"id": 205,
"name": "Identifier",
"src": "2768:12:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 198,
"type": "address",
"value": "owner"
},
"id": 206,
"name": "Identifier",
"src": "2781:5:0"
}
],
"id": 207,
"name": "IndexAccess",
"src": "2768:19:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 200,
"type": "address",
"value": "spender"
},
"id": 208,
"name": "Identifier",
"src": "2788:7:0"
}
],
"id": 209,
"name": "IndexAccess",
"src": "2768:28:0"
}
],
"id": 210,
"name": "Return",
"src": "2761:35:0"
}
],
"id": 211,
"name": "Block",
"src": "2751:52:0"
}
],
"id": 212,
"name": "FunctionDefinition",
"src": "2656:147:0"
},
{
"attributes": {
"constant": true,
"name": "decimals",
"scope": 481,
"stateVariable": true,
"storageLocation": "default",
"type": "uint8",
"visibility": "public"
},
"children": [
{
"attributes": {
"name": "uint8",
"type": "uint8"
},
"id": 213,
"name": "ElementaryTypeName",
"src": "2994:5:0"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "32",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 2",
"value": "2"
},
"id": 214,
"name": "Literal",
"src": "3027:1:0"
}
],
"id": 215,
"name": "VariableDeclaration",
"src": "2994:34:0"
},
{
"attributes": {
"constant": true,
"name": "name",
"scope": 481,
"stateVariable": true,
"storageLocation": "default",
"type": "string memory",
"visibility": "public"
},
"children": [
{
"attributes": {
"name": "string",
"type": "string storage pointer"
},
"id": 216,
"name": "ElementaryTypeName",
"src": "3034:6:0"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "476173746f6b656e2e696f",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"Gastoken.io\"",
"value": "Gastoken.io"
},
"id": 217,
"name": "Literal",
"src": "3064:13:0"
}
],
"id": 218,
"name": "VariableDeclaration",
"src": "3034:43:0"
},
{
"attributes": {
"constant": true,
"name": "symbol",
"scope": 481,
"stateVariable": true,
"storageLocation": "default",
"type": "string memory",
"visibility": "public"
},
"children": [
{
"attributes": {
"name": "string",
"type": "string storage pointer"
},
"id": 219,
"name": "ElementaryTypeName",
"src": "3083:6:0"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "47535432",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "string",
"type": "literal_string \"GST2\"",
"value": "GST2"
},
"id": 220,
"name": "Literal",
"src": "3115:6:0"
}
],
"id": 221,
"name": "VariableDeclaration",
"src": "3083:38:0"
},
{
"attributes": {
"constant": false,
"name": "s_head",
"scope": 481,
"stateVariable": true,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 222,
"name": "ElementaryTypeName",
"src": "3791:7:0"
}
],
"id": 223,
"name": "VariableDeclaration",
"src": "3791:14:0"
},
{
"attributes": {
"constant": false,
"name": "s_tail",
"scope": 481,
"stateVariable": true,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 224,
"name": "ElementaryTypeName",
"src": "3811:7:0"
}
],
"id": 225,
"name": "VariableDeclaration",
"src": "3811:14:0"
},
{
"attributes": {
"constant": true,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "totalSupply",
"payable": false,
"scope": 481,
"stateMutability": "view",
"visibility": "public"
},
"children": [
{
"attributes": {
"parameters": [
null
]
},
"children": [],
"id": 226,
"name": "ParameterList",
"src": "4026:2:0"
},
{
"children": [
{
"attributes": {
"constant": false,
"name": "supply",
"scope": 235,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 227,
"name": "ElementaryTypeName",
"src": "4054:7:0"
}
],
"id": 228,
"name": "VariableDeclaration",
"src": "4054:14:0"
}
],
"id": 229,
"name": "ParameterList",
"src": "4053:16:0"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 229
},
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "-",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 223,
"type": "uint256",
"value": "s_head"
},
"id": 230,
"name": "Identifier",
"src": "4087:6:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 225,
"type": "uint256",
"value": "s_tail"
},
"id": 231,
"name": "Identifier",
"src": "4096:6:0"
}
],
"id": 232,
"name": "BinaryOperation",
"src": "4087:15:0"
}
],
"id": 233,
"name": "Return",
"src": "4080:22:0"
}
],
"id": 234,
"name": "Block",
"src": "4070:39:0"
}
],
"id": 235,
"name": "FunctionDefinition",
"src": "4006:103:0"
},
{
"attributes": {
"constant": false,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "makeChild",
"payable": false,
"scope": 481,
"stateMutability": "nonpayable",
"visibility": "internal"
},
"children": [
{
"attributes": {
"parameters": [
null
]
},
"children": [],
"id": 236,
"name": "ParameterList",
"src": "4210:2:0"
},
{
"children": [
{
"attributes": {
"constant": false,
"name": "addr",
"scope": 242,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 237,
"name": "ElementaryTypeName",
"src": "4231:7:0"
}
],
"id": 238,
"name": "VariableDeclaration",
"src": "4231:12:0"
}
],
"id": 239,
"name": "ParameterList",
"src": "4230:14:0"
},
{
"children": [
{
"attributes": {
"externalReferences": [
{
"addr": {
"declaration": 238,
"isOffset": false,
"isSlot": false,
"src": "5837:4:0",
"valueSize": 1
}
}
],
"operations": "{\n let solidity_free_mem_ptr := mload(0x40)\n mstore(solidity_free_mem_ptr, 0x00756eb3f879cb30fe243b4dfee438691c043318585733ff6000526016600af3)\n addr := create(0, add(solidity_free_mem_ptr, 1), 31)\n}"
},
"children": [],
"id": 240,
"name": "InlineAssembly",
"src": "4255:1650:0"
}
],
"id": 241,
"name": "Block",
"src": "4245:1660:0"
}
],
"id": 242,
"name": "FunctionDefinition",
"src": "4192:1713:0"
},
{
"attributes": {
"constant": false,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "mint",
"payable": false,
"scope": 481,
"stateMutability": "nonpayable",
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"name": "value",
"scope": 274,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 243,
"name": "ElementaryTypeName",
"src": "6103:7:0"
}
],
"id": 244,
"name": "VariableDeclaration",
"src": "6103:13:0"
}
],
"id": 245,
"name": "ParameterList",
"src": "6102:15:0"
},
{
"attributes": {
"parameters": [
null
]
},
"children": [],
"id": 246,
"name": "ParameterList",
"src": "6125:0:0"
},
{
"children": [
{
"children": [
{
"attributes": {
"assignments": [
248
]
},
"children": [
{
"attributes": {
"constant": false,
"name": "i",
"scope": 274,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 247,
"name": "ElementaryTypeName",
"src": "6140:7:0"
}
],
"id": 248,
"name": "VariableDeclaration",
"src": "6140:9:0"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 249,
"name": "Literal",
"src": "6152:1:0"
}
],
"id": 250,
"name": "VariableDeclarationStatement",
"src": "6140:13:0"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "<",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 248,
"type": "uint256",
"value": "i"
},
"id": 251,
"name": "Identifier",
"src": "6155:1:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 244,
"type": "uint256",
"value": "value"
},
"id": 252,
"name": "Identifier",
"src": "6159:5:0"
}
],
"id": 253,
"name": "BinaryOperation",
"src": "6155:9:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "++",
"prefix": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 248,
"type": "uint256",
"value": "i"
},
"id": 254,
"name": "Identifier",
"src": "6166:1:0"
}
],
"id": 255,
"name": "UnaryOperation",
"src": "6166:3:0"
}
],
"id": 256,
"name": "ExpressionStatement",
"src": "6166:3:0"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"arguments": [
null
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"type": "address",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
null
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 242,
"type": "function () returns (address)",
"value": "makeChild"
},
"id": 257,
"name": "Identifier",
"src": "6185:9:0"
}
],
"id": 258,
"name": "FunctionCall",
"src": "6185:11:0"
}
],
"id": 259,
"name": "ExpressionStatement",
"src": "6185:11:0"
}
],
"id": 260,
"name": "Block",
"src": "6171:36:0"
}
],
"id": 261,
"name": "ForStatement",
"src": "6135:72:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "+=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 223,
"type": "uint256",
"value": "s_head"
},
"id": 262,
"name": "Identifier",
"src": "6216:6:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 244,
"type": "uint256",
"value": "value"
},
"id": 263,
"name": "Identifier",
"src": "6226:5:0"
}
],
"id": 264,
"name": "Assignment",
"src": "6216:15:0"
}
],
"id": 265,
"name": "ExpressionStatement",
"src": "6216:15:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "+=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 8,
"type": "mapping(address => uint256)",
"value": "s_balances"
},
"id": 266,
"name": "Identifier",
"src": "6241:10:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"referencedDeclaration": null,
"type": "address"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 670,
"type": "msg",
"value": "msg"
},
"id": 267,
"name": "Identifier",
"src": "6252:3:0"
}
],
"id": 268,
"name": "MemberAccess",
"src": "6252:10:0"
}
],
"id": 269,
"name": "IndexAccess",
"src": "6241:22:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 244,
"type": "uint256",
"value": "value"
},
"id": 270,
"name": "Identifier",
"src": "6267:5:0"
}
],
"id": 271,
"name": "Assignment",
"src": "6241:31:0"
}
],
"id": 272,
"name": "ExpressionStatement",
"src": "6241:31:0"
}
],
"id": 273,
"name": "Block",
"src": "6125:154:0"
}
],
"id": 274,
"name": "FunctionDefinition",
"src": "6089:190:0"
},
{
"attributes": {
"constant": false,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "destroyChildren",
"payable": false,
"scope": 481,
"stateMutability": "nonpayable",
"visibility": "internal"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"name": "value",
"scope": 313,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 275,
"name": "ElementaryTypeName",
"src": "7195:7:0"
}
],
"id": 276,
"name": "VariableDeclaration",
"src": "7195:13:0"
}
],
"id": 277,
"name": "ParameterList",
"src": "7194:15:0"
},
{
"attributes": {
"parameters": [
null
]
},
"children": [],
"id": 278,
"name": "ParameterList",
"src": "7219:0:0"
},
{
"children": [
{
"attributes": {
"assignments": [
280
]
},
"children": [
{
"attributes": {
"constant": false,
"name": "tail",
"scope": 313,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 279,
"name": "ElementaryTypeName",
"src": "7229:7:0"
}
],
"id": 280,
"name": "VariableDeclaration",
"src": "7229:12:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 225,
"type": "uint256",
"value": "s_tail"
},
"id": 281,
"name": "Identifier",
"src": "7244:6:0"
}
],
"id": 282,
"name": "VariableDeclarationStatement",
"src": "7229:21:0"
},
{
"children": [
{
"attributes": {
"assignments": [
284
]
},
"children": [
{
"attributes": {
"constant": false,
"name": "i",
"scope": 313,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 283,
"name": "ElementaryTypeName",
"src": "7334:7:0"
}
],
"id": 284,
"name": "VariableDeclaration",
"src": "7334:9:0"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "+",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 280,
"type": "uint256",
"value": "tail"
},
"id": 285,
"name": "Identifier",
"src": "7346:4:0"
},
{
"attributes": {
"argumentTypes": null,
"hexvalue": "31",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 1",
"value": "1"
},
"id": 286,
"name": "Literal",
"src": "7353:1:0"
}
],
"id": 287,
"name": "BinaryOperation",
"src": "7346:8:0"
}
],
"id": 288,
"name": "VariableDeclarationStatement",
"src": "7334:20:0"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "<=",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 284,
"type": "uint256",
"value": "i"
},
"id": 289,
"name": "Identifier",
"src": "7356:1:0"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "+",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 280,
"type": "uint256",
"value": "tail"
},
"id": 290,
"name": "Identifier",
"src": "7361:4:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 276,
"type": "uint256",
"value": "value"
},
"id": 291,
"name": "Identifier",
"src": "7368:5:0"
}
],
"id": 292,
"name": "BinaryOperation",
"src": "7361:12:0"
}
],
"id": 293,
"name": "BinaryOperation",
"src": "7356:17:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "++",
"prefix": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 284,
"type": "uint256",
"value": "i"
},
"id": 294,
"name": "Identifier",
"src": "7375:1:0"
}
],
"id": 295,
"name": "UnaryOperation",
"src": "7375:3:0"
}
],
"id": 296,
"name": "ExpressionStatement",
"src": "7375:3:0"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"arguments": [
null
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"type": "bool",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
null
],
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "call",
"referencedDeclaration": null,
"type": "function () payable returns (bool)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"type": "address",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_GasToken2_$481",
"typeString": "contract GasToken2"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 666,
"type": "function (address,uint256) pure returns (address)",
"value": "mk_contract_address"
},
"id": 297,
"name": "Identifier",
"src": "7394:19:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 692,
"type": "contract GasToken2",
"value": "this"
},
"id": 298,
"name": "Identifier",
"src": "7414:4:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 284,
"type": "uint256",
"value": "i"
},
"id": 299,
"name": "Identifier",
"src": "7420:1:0"
}
],
"id": 300,
"name": "FunctionCall",
"src": "7394:28:0"
}
],
"id": 301,
"name": "MemberAccess",
"src": "7394:33:0"
}
],
"id": 302,
"name": "FunctionCall",
"src": "7394:35:0"
}
],
"id": 303,
"name": "ExpressionStatement",
"src": "7394:35:0"
}
],
"id": 304,
"name": "Block",
"src": "7380:60:0"
}
],
"id": 305,
"name": "ForStatement",
"src": "7329:111:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 225,
"type": "uint256",
"value": "s_tail"
},
"id": 306,
"name": "Identifier",
"src": "7450:6:0"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "+",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 280,
"type": "uint256",
"value": "tail"
},
"id": 307,
"name": "Identifier",
"src": "7459:4:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 276,
"type": "uint256",
"value": "value"
},
"id": 308,
"name": "Identifier",
"src": "7466:5:0"
}
],
"id": 309,
"name": "BinaryOperation",
"src": "7459:12:0"
}
],
"id": 310,
"name": "Assignment",
"src": "7450:21:0"
}
],
"id": 311,
"name": "ExpressionStatement",
"src": "7450:21:0"
}
],
"id": 312,
"name": "Block",
"src": "7219:259:0"
}
],
"id": 313,
"name": "FunctionDefinition",
"src": "7170:308:0"
},
{
"attributes": {
"constant": false,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "free",
"payable": false,
"scope": 481,
"stateMutability": "nonpayable",
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"name": "value",
"scope": 350,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 314,
"name": "ElementaryTypeName",
"src": "7871:7:0"
}
],
"id": 315,
"name": "VariableDeclaration",
"src": "7871:13:0"
}
],
"id": 316,
"name": "ParameterList",
"src": "7870:15:0"
},
{
"children": [
{
"attributes": {
"constant": false,
"name": "success",
"scope": 350,
"stateVariable": false,
"storageLocation": "default",
"type": "bool",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bool",
"type": "bool"
},
"id": 317,
"name": "ElementaryTypeName",
"src": "7902:4:0"
}
],
"id": 318,
"name": "VariableDeclaration",
"src": "7902:12:0"
}
],
"id": 319,
"name": "ParameterList",
"src": "7901:14:0"
},
{
"children": [
{
"attributes": {
"assignments": [
321
]
},
"children": [
{
"attributes": {
"constant": false,
"name": "from_balance",
"scope": 350,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 320,
"name": "ElementaryTypeName",
"src": "7926:7:0"
}
],
"id": 321,
"name": "VariableDeclaration",
"src": "7926:20:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 8,
"type": "mapping(address => uint256)",
"value": "s_balances"
},
"id": 322,
"name": "Identifier",
"src": "7949:10:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"referencedDeclaration": null,
"type": "address"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 670,
"type": "msg",
"value": "msg"
},
"id": 323,
"name": "Identifier",
"src": "7960:3:0"
}
],
"id": 324,
"name": "MemberAccess",
"src": "7960:10:0"
}
],
"id": 325,
"name": "IndexAccess",
"src": "7949:22:0"
}
],
"id": 326,
"name": "VariableDeclarationStatement",
"src": "7926:45:0"
},
{
"attributes": {
"falseBody": null
},
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": ">",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 315,
"type": "uint256",
"value": "value"
},
"id": 327,
"name": "Identifier",
"src": "7985:5:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 321,
"type": "uint256",
"value": "from_balance"
},
"id": 328,
"name": "Identifier",
"src": "7993:12:0"
}
],
"id": 329,
"name": "BinaryOperation",
"src": "7985:20:0"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 319
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "66616c7365",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "false"
},
"id": 330,
"name": "Literal",
"src": "8028:5:0"
}
],
"id": 331,
"name": "Return",
"src": "8021:12:0"
}
],
"id": 332,
"name": "Block",
"src": "8007:37:0"
}
],
"id": 333,
"name": "IfStatement",
"src": "7981:63:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 313,
"type": "function (uint256)",
"value": "destroyChildren"
},
"id": 334,
"name": "Identifier",
"src": "8054:15:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 315,
"type": "uint256",
"value": "value"
},
"id": 335,
"name": "Identifier",
"src": "8070:5:0"
}
],
"id": 336,
"name": "FunctionCall",
"src": "8054:22:0"
}
],
"id": 337,
"name": "ExpressionStatement",
"src": "8054:22:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 8,
"type": "mapping(address => uint256)",
"value": "s_balances"
},
"id": 338,
"name": "Identifier",
"src": "8087:10:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"referencedDeclaration": null,
"type": "address"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 670,
"type": "msg",
"value": "msg"
},
"id": 339,
"name": "Identifier",
"src": "8098:3:0"
}
],
"id": 340,
"name": "MemberAccess",
"src": "8098:10:0"
}
],
"id": 341,
"name": "IndexAccess",
"src": "8087:22:0"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "-",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 321,
"type": "uint256",
"value": "from_balance"
},
"id": 342,
"name": "Identifier",
"src": "8112:12:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 315,
"type": "uint256",
"value": "value"
},
"id": 343,
"name": "Identifier",
"src": "8127:5:0"
}
],
"id": 344,
"name": "BinaryOperation",
"src": "8112:20:0"
}
],
"id": 345,
"name": "Assignment",
"src": "8087:45:0"
}
],
"id": 346,
"name": "ExpressionStatement",
"src": "8087:45:0"
},
{
"attributes": {
"functionReturnParameters": 319
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "74727565",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "true"
},
"id": 347,
"name": "Literal",
"src": "8150:4:0"
}
],
"id": 348,
"name": "Return",
"src": "8143:11:0"
}
],
"id": 349,
"name": "Block",
"src": "7916:245:0"
}
],
"id": 350,
"name": "FunctionDefinition",
"src": "7857:304:0"
},
{
"attributes": {
"constant": false,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "freeUpTo",
"payable": false,
"scope": 481,
"stateMutability": "nonpayable",
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"name": "value",
"scope": 389,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 351,
"name": "ElementaryTypeName",
"src": "8476:7:0"
}
],
"id": 352,
"name": "VariableDeclaration",
"src": "8476:13:0"
}
],
"id": 353,
"name": "ParameterList",
"src": "8475:15:0"
},
{
"children": [
{
"attributes": {
"constant": false,
"name": "freed",
"scope": 389,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 354,
"name": "ElementaryTypeName",
"src": "8507:7:0"
}
],
"id": 355,
"name": "VariableDeclaration",
"src": "8507:13:0"
}
],
"id": 356,
"name": "ParameterList",
"src": "8506:15:0"
},
{
"children": [
{
"attributes": {
"assignments": [
358
]
},
"children": [
{
"attributes": {
"constant": false,
"name": "from_balance",
"scope": 389,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 357,
"name": "ElementaryTypeName",
"src": "8532:7:0"
}
],
"id": 358,
"name": "VariableDeclaration",
"src": "8532:20:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 8,
"type": "mapping(address => uint256)",
"value": "s_balances"
},
"id": 359,
"name": "Identifier",
"src": "8555:10:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"referencedDeclaration": null,
"type": "address"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 670,
"type": "msg",
"value": "msg"
},
"id": 360,
"name": "Identifier",
"src": "8566:3:0"
}
],
"id": 361,
"name": "MemberAccess",
"src": "8566:10:0"
}
],
"id": 362,
"name": "IndexAccess",
"src": "8555:22:0"
}
],
"id": 363,
"name": "VariableDeclarationStatement",
"src": "8532:45:0"
},
{
"attributes": {
"falseBody": null
},
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": ">",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 352,
"type": "uint256",
"value": "value"
},
"id": 364,
"name": "Identifier",
"src": "8591:5:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 358,
"type": "uint256",
"value": "from_balance"
},
"id": 365,
"name": "Identifier",
"src": "8599:12:0"
}
],
"id": 366,
"name": "BinaryOperation",
"src": "8591:20:0"
},
{
"children": [
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 352,
"type": "uint256",
"value": "value"
},
"id": 367,
"name": "Identifier",
"src": "8627:5:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 358,
"type": "uint256",
"value": "from_balance"
},
"id": 368,
"name": "Identifier",
"src": "8635:12:0"
}
],
"id": 369,
"name": "Assignment",
"src": "8627:20:0"
}
],
"id": 370,
"name": "ExpressionStatement",
"src": "8627:20:0"
}
],
"id": 371,
"name": "Block",
"src": "8613:45:0"
}
],
"id": 372,
"name": "IfStatement",
"src": "8587:71:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 313,
"type": "function (uint256)",
"value": "destroyChildren"
},
"id": 373,
"name": "Identifier",
"src": "8668:15:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 352,
"type": "uint256",
"value": "value"
},
"id": 374,
"name": "Identifier",
"src": "8684:5:0"
}
],
"id": 375,
"name": "FunctionCall",
"src": "8668:22:0"
}
],
"id": 376,
"name": "ExpressionStatement",
"src": "8668:22:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 8,
"type": "mapping(address => uint256)",
"value": "s_balances"
},
"id": 377,
"name": "Identifier",
"src": "8701:10:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"referencedDeclaration": null,
"type": "address"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 670,
"type": "msg",
"value": "msg"
},
"id": 378,
"name": "Identifier",
"src": "8712:3:0"
}
],
"id": 379,
"name": "MemberAccess",
"src": "8712:10:0"
}
],
"id": 380,
"name": "IndexAccess",
"src": "8701:22:0"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "-",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 358,
"type": "uint256",
"value": "from_balance"
},
"id": 381,
"name": "Identifier",
"src": "8726:12:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 352,
"type": "uint256",
"value": "value"
},
"id": 382,
"name": "Identifier",
"src": "8741:5:0"
}
],
"id": 383,
"name": "BinaryOperation",
"src": "8726:20:0"
}
],
"id": 384,
"name": "Assignment",
"src": "8701:45:0"
}
],
"id": 385,
"name": "ExpressionStatement",
"src": "8701:45:0"
},
{
"attributes": {
"functionReturnParameters": 356
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 352,
"type": "uint256",
"value": "value"
},
"id": 386,
"name": "Identifier",
"src": "8764:5:0"
}
],
"id": 387,
"name": "Return",
"src": "8757:12:0"
}
],
"id": 388,
"name": "Block",
"src": "8522:254:0"
}
],
"id": 389,
"name": "FunctionDefinition",
"src": "8458:318:0"
},
{
"attributes": {
"constant": false,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "freeFrom",
"payable": false,
"scope": 481,
"stateMutability": "nonpayable",
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"name": "from",
"scope": 460,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 390,
"name": "ElementaryTypeName",
"src": "9099:7:0"
}
],
"id": 391,
"name": "VariableDeclaration",
"src": "9099:12:0"
},
{
"attributes": {
"constant": false,
"name": "value",
"scope": 460,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 392,
"name": "ElementaryTypeName",
"src": "9113:7:0"
}
],
"id": 393,
"name": "VariableDeclaration",
"src": "9113:13:0"
}
],
"id": 394,
"name": "ParameterList",
"src": "9098:29:0"
},
{
"children": [
{
"attributes": {
"constant": false,
"name": "success",
"scope": 460,
"stateVariable": false,
"storageLocation": "default",
"type": "bool",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "bool",
"type": "bool"
},
"id": 395,
"name": "ElementaryTypeName",
"src": "9144:4:0"
}
],
"id": 396,
"name": "VariableDeclaration",
"src": "9144:12:0"
}
],
"id": 397,
"name": "ParameterList",
"src": "9143:14:0"
},
{
"children": [
{
"attributes": {
"assignments": [
399
]
},
"children": [
{
"attributes": {
"constant": false,
"name": "spender",
"scope": 460,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 398,
"name": "ElementaryTypeName",
"src": "9168:7:0"
}
],
"id": 399,
"name": "VariableDeclaration",
"src": "9168:15:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"member_name": "sender",
"referencedDeclaration": null,
"type": "address"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 670,
"type": "msg",
"value": "msg"
},
"id": 400,
"name": "Identifier",
"src": "9186:3:0"
}
],
"id": 401,
"name": "MemberAccess",
"src": "9186:10:0"
}
],
"id": 402,
"name": "VariableDeclarationStatement",
"src": "9168:28:0"
},
{
"attributes": {
"assignments": [
404
]
},
"children": [
{
"attributes": {
"constant": false,
"name": "from_balance",
"scope": 460,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 403,
"name": "ElementaryTypeName",
"src": "9206:7:0"
}
],
"id": 404,
"name": "VariableDeclaration",
"src": "9206:20:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 8,
"type": "mapping(address => uint256)",
"value": "s_balances"
},
"id": 405,
"name": "Identifier",
"src": "9229:10:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 391,
"type": "address",
"value": "from"
},
"id": 406,
"name": "Identifier",
"src": "9240:4:0"
}
],
"id": 407,
"name": "IndexAccess",
"src": "9229:16:0"
}
],
"id": 408,
"name": "VariableDeclarationStatement",
"src": "9206:39:0"
},
{
"attributes": {
"falseBody": null
},
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": ">",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 393,
"type": "uint256",
"value": "value"
},
"id": 409,
"name": "Identifier",
"src": "9259:5:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 404,
"type": "uint256",
"value": "from_balance"
},
"id": 410,
"name": "Identifier",
"src": "9267:12:0"
}
],
"id": 411,
"name": "BinaryOperation",
"src": "9259:20:0"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 397
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "66616c7365",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "false"
},
"id": 412,
"name": "Literal",
"src": "9302:5:0"
}
],
"id": 413,
"name": "Return",
"src": "9295:12:0"
}
],
"id": 414,
"name": "Block",
"src": "9281:37:0"
}
],
"id": 415,
"name": "IfStatement",
"src": "9255:63:0"
},
{
"attributes": {
"assignments": [
419
]
},
"children": [
{
"attributes": {
"constant": false,
"name": "from_allowances",
"scope": 460,
"stateVariable": false,
"storageLocation": "default",
"type": "mapping(address => uint256)",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 416,
"name": "ElementaryTypeName",
"src": "9336:7:0"
},
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 417,
"name": "ElementaryTypeName",
"src": "9347:7:0"
}
],
"id": 418,
"name": "Mapping",
"src": "9328:27:0"
}
],
"id": 419,
"name": "VariableDeclaration",
"src": "9328:43:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "mapping(address => uint256)"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 14,
"type": "mapping(address => mapping(address => uint256))",
"value": "s_allowances"
},
"id": 420,
"name": "Identifier",
"src": "9374:12:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 391,
"type": "address",
"value": "from"
},
"id": 421,
"name": "Identifier",
"src": "9387:4:0"
}
],
"id": 422,
"name": "IndexAccess",
"src": "9374:18:0"
}
],
"id": 423,
"name": "VariableDeclarationStatement",
"src": "9328:64:0"
},
{
"attributes": {
"assignments": [
425
]
},
"children": [
{
"attributes": {
"constant": false,
"name": "spender_allowance",
"scope": 460,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 424,
"name": "ElementaryTypeName",
"src": "9402:7:0"
}
],
"id": 425,
"name": "VariableDeclaration",
"src": "9402:25:0"
},
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 419,
"type": "mapping(address => uint256)",
"value": "from_allowances"
},
"id": 426,
"name": "Identifier",
"src": "9430:15:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 399,
"type": "address",
"value": "spender"
},
"id": 427,
"name": "Identifier",
"src": "9446:7:0"
}
],
"id": 428,
"name": "IndexAccess",
"src": "9430:24:0"
}
],
"id": 429,
"name": "VariableDeclarationStatement",
"src": "9402:52:0"
},
{
"attributes": {
"falseBody": null
},
"children": [
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": ">",
"type": "bool"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 393,
"type": "uint256",
"value": "value"
},
"id": 430,
"name": "Identifier",
"src": "9468:5:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 425,
"type": "uint256",
"value": "spender_allowance"
},
"id": 431,
"name": "Identifier",
"src": "9476:17:0"
}
],
"id": 432,
"name": "BinaryOperation",
"src": "9468:25:0"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 397
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "66616c7365",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "false"
},
"id": 433,
"name": "Literal",
"src": "9516:5:0"
}
],
"id": 434,
"name": "Return",
"src": "9509:12:0"
}
],
"id": 435,
"name": "Block",
"src": "9495:37:0"
}
],
"id": 436,
"name": "IfStatement",
"src": "9464:68:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"isStructConstructorCall": false,
"lValueRequested": false,
"names": [
null
],
"type": "tuple()",
"type_conversion": false
},
"children": [
{
"attributes": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"overloadedDeclarations": [
null
],
"referencedDeclaration": 313,
"type": "function (uint256)",
"value": "destroyChildren"
},
"id": 437,
"name": "Identifier",
"src": "9542:15:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 393,
"type": "uint256",
"value": "value"
},
"id": 438,
"name": "Identifier",
"src": "9558:5:0"
}
],
"id": 439,
"name": "FunctionCall",
"src": "9542:22:0"
}
],
"id": 440,
"name": "ExpressionStatement",
"src": "9542:22:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 8,
"type": "mapping(address => uint256)",
"value": "s_balances"
},
"id": 441,
"name": "Identifier",
"src": "9575:10:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 391,
"type": "address",
"value": "from"
},
"id": 442,
"name": "Identifier",
"src": "9586:4:0"
}
],
"id": 443,
"name": "IndexAccess",
"src": "9575:16:0"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "-",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 404,
"type": "uint256",
"value": "from_balance"
},
"id": 444,
"name": "Identifier",
"src": "9594:12:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 393,
"type": "uint256",
"value": "value"
},
"id": 445,
"name": "Identifier",
"src": "9609:5:0"
}
],
"id": 446,
"name": "BinaryOperation",
"src": "9594:20:0"
}
],
"id": 447,
"name": "Assignment",
"src": "9575:39:0"
}
],
"id": 448,
"name": "ExpressionStatement",
"src": "9575:39:0"
},
{
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "=",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 419,
"type": "mapping(address => uint256)",
"value": "from_allowances"
},
"id": 449,
"name": "Identifier",
"src": "9624:15:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 399,
"type": "address",
"value": "spender"
},
"id": 450,
"name": "Identifier",
"src": "9640:7:0"
}
],
"id": 451,
"name": "IndexAccess",
"src": "9624:24:0"
},
{
"attributes": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"operator": "-",
"type": "uint256"
},
"children": [
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 425,
"type": "uint256",
"value": "spender_allowance"
},
"id": 452,
"name": "Identifier",
"src": "9651:17:0"
},
{
"attributes": {
"argumentTypes": null,
"overloadedDeclarations": [
null
],
"referencedDeclaration": 393,
"type": "uint256",
"value": "value"
},
"id": 453,
"name": "Identifier",
"src": "9671:5:0"
}
],
"id": 454,
"name": "BinaryOperation",
"src": "9651:25:0"
}
],
"id": 455,
"name": "Assignment",
"src": "9624:52:0"
}
],
"id": 456,
"name": "ExpressionStatement",
"src": "9624:52:0"
},
{
"attributes": {
"functionReturnParameters": 397
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "74727565",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "bool",
"type": "bool",
"value": "true"
},
"id": 457,
"name": "Literal",
"src": "9694:4:0"
}
],
"id": 458,
"name": "Return",
"src": "9687:11:0"
}
],
"id": 459,
"name": "Block",
"src": "9158:547:0"
}
],
"id": 460,
"name": "FunctionDefinition",
"src": "9081:624:0"
},
{
"attributes": {
"anonymous": false,
"name": "DebugFreeFromUpTo"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"indexed": false,
"name": "_from",
"scope": 468,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 461,
"name": "ElementaryTypeName",
"src": "9735:7:0"
}
],
"id": 462,
"name": "VariableDeclaration",
"src": "9735:13:0"
},
{
"attributes": {
"constant": false,
"indexed": false,
"name": "_spender",
"scope": 468,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 463,
"name": "ElementaryTypeName",
"src": "9750:7:0"
}
],
"id": 464,
"name": "VariableDeclaration",
"src": "9750:16:0"
},
{
"attributes": {
"constant": false,
"indexed": false,
"name": "value",
"scope": 468,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 465,
"name": "ElementaryTypeName",
"src": "9768:7:0"
}
],
"id": 466,
"name": "VariableDeclaration",
"src": "9768:13:0"
}
],
"id": 467,
"name": "ParameterList",
"src": "9734:48:0"
}
],
"id": 468,
"name": "EventDefinition",
"src": "9711:72:0"
},
{
"attributes": {
"constant": false,
"implemented": true,
"isConstructor": false,
"modifiers": [
null
],
"name": "freeFromUpTo",
"payable": false,
"scope": 481,
"stateMutability": "nonpayable",
"visibility": "public"
},
"children": [
{
"children": [
{
"attributes": {
"constant": false,
"name": "from",
"scope": 480,
"stateVariable": false,
"storageLocation": "default",
"type": "address",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "address",
"type": "address"
},
"id": 469,
"name": "ElementaryTypeName",
"src": "10132:7:0"
}
],
"id": 470,
"name": "VariableDeclaration",
"src": "10132:12:0"
},
{
"attributes": {
"constant": false,
"name": "value",
"scope": 480,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 471,
"name": "ElementaryTypeName",
"src": "10146:7:0"
}
],
"id": 472,
"name": "VariableDeclaration",
"src": "10146:13:0"
}
],
"id": 473,
"name": "ParameterList",
"src": "10131:29:0"
},
{
"children": [
{
"attributes": {
"constant": false,
"name": "freed",
"scope": 480,
"stateVariable": false,
"storageLocation": "default",
"type": "uint256",
"value": null,
"visibility": "internal"
},
"children": [
{
"attributes": {
"name": "uint256",
"type": "uint256"
},
"id": 474,
"name": "ElementaryTypeName",
"src": "10177:7:0"
}
],
"id": 475,
"name": "VariableDeclaration",
"src": "10177:13:0"
}
],
"id": 476,
"name": "ParameterList",
"src": "10176:15:0"
},
{
"children": [
{
"attributes": {
"functionReturnParameters": 476
},
"children": [
{
"attributes": {
"argumentTypes": null,
"hexvalue": "30",
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"subdenomination": null,
"token": "number",
"type": "int_const 0",
"value": "0"
},
"id": 477,
"name": "Literal",
"src": "10232:1:0"
}
],
"id": 478,
"name": "Return",
"src": "10225:8:0"
}
],
"id": 479,
"name": "Block",
"src": "10192:653:0"
}
],
"id": 480,
"name": "FunctionDefinition",
"src": "10110:735:0"
}
],
"id": 481,
"name": "ContractDefinition",
"src": "46:10801:0"
}
],
"id": 482,
"name": "SourceUnit",
"src": "0:10848:0"
},
"compiler": {
"name": "solc",
"version": "soljson-v0.4.16+commit.d7661dd9.js"
},
"networks": {
"5777": {
"events": {},
"links": {},
"address": "0x46ae8a31b1088E77196342693684F730F0aAb4FB",
"transactionHash": "0xbfff7541d1e7a531d6f30c3cd9a184fe745ec1acb59895ac51d455eaada4664e"
}
},
"schemaVersion": "3.0.2",
"updatedAt": "2019-02-26T18:16:20.786Z",
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment