From 8e720257c4b7fc978702814320bc7fab1eed0717 Mon Sep 17 00:00:00 2001 From: Sam Kozin Date: Wed, 22 Nov 2017 20:29:20 +0300 Subject: [PATCH] Add contract version; display contractor comment Closes #6 --- build/contracts/Project.json | 2062 ++++++++++++----------- contracts/Project.sol | 6 +- web/src/components/contract-progress.js | 22 +- web/src/contract.js | 16 +- 4 files changed, 1087 insertions(+), 1019 deletions(-) diff --git a/build/contracts/Project.json b/build/contracts/Project.json index b46a2a9..20323f0 100644 --- a/build/contracts/Project.json +++ b/build/contracts/Project.json @@ -93,6 +93,20 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "version", + "outputs": [ + { + "name": "", + "type": "uint16" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -214,6 +228,20 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "contractorComment", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": true, "inputs": [], @@ -311,18 +339,18 @@ "type": "constructor" } ], - "bytecode": "0x60606040524260055560006008556000600955341561001d57600080fd5b604051610fb0380380610fb0833981016040528080518201919060200180519060200190919080519060200190919080519060200190919080519060200190919050506103e88163ffffffff161115151561007757600080fd5b846000908051906020019061008d929190610162565b50836001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260048190555081600260186101000a81548163ffffffff021916908363ffffffff16021790555080600260146101000a81548163ffffffff021916908363ffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050610207565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101a357805160ff19168380011785556101d1565b828001600101855582156101d1579182015b828111156101d05782518255916020019190600101906101b5565b5b5090506101de91906101e2565b5090565b61020491905b808211156102005760008160009055506001016101e8565b5090565b90565b610d9a806102166000396000f30060606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101225780630e40de31146101b057806312424e3f146101ed5780632c2ab5ea146102025780633ccfd60b146102575780634c7afe601461026c5780634d947d591461029557806359a7b3fe146102be578063844b3320146102e757806391294e541461031c578063a761d1b614610345578063adb41fec1461036e578063bb168ab614610397578063be9a6555146103cc578063c19d93fb146103d6578063c24a0f8b1461040d578063cae3e70214610436578063d900f2d61461046b578063ea8a1af0146104a4578063f21376af146104b9578063fde081741461050e575b600080fd5b341561012d57600080fd5b610135610545565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561017557808201518184015260208101905061015a565b50505050905090810190601f1680156101a25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101bb57600080fd5b6101eb600480803563ffffffff1690602001909190803590602001908201803590602001919091929050506105e3565b005b34156101f857600080fd5b6102006106b4565b005b341561020d57600080fd5b610215610728565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561026257600080fd5b61026a61074d565b005b341561027757600080fd5b61027f6107df565b6040518082815260200191505060405180910390f35b34156102a057600080fd5b6102a861080f565b6040518082815260200191505060405180910390f35b34156102c957600080fd5b6102d161092e565b6040518082815260200191505060405180910390f35b34156102f257600080fd5b6102fa610934565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b341561032757600080fd5b61032f61094a565b6040518082815260200191505060405180910390f35b341561035057600080fd5b610358610950565b6040518082815260200191505060405180910390f35b341561037957600080fd5b610381610956565b6040518082815260200191505060405180910390f35b34156103a257600080fd5b6103aa610991565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b6103d46109a7565b005b34156103e157600080fd5b6103e9610a79565b604051808260038111156103f957fe5b60ff16815260200191505060405180910390f35b341561041857600080fd5b610420610a8c565b6040518082815260200191505060405180910390f35b341561044157600080fd5b610449610a92565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b341561047657600080fd5b6104a2600480803515159060200190919080359060200190820180359060200191909192905050610aa8565b005b34156104af57600080fd5b6104b7610b17565b005b34156104c457600080fd5b6104cc610bdc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561051957600080fd5b610521610c02565b6040518082600281111561053157fe5b60ff16815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105db5780601f106105b0576101008083540402835291602001916105db565b820191906000526020600020905b8154815290600101906020018083116105be57829003601f168201915b505050505081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561063f57600080fd5b600180600381111561064d57fe5b600160009054906101000a900460ff16600381111561066857fe5b14151561067457600080fd5b836002601c6101000a81548163ffffffff021916908363ffffffff1602179055508282600391906106a6929190610cc9565b504260058190555050505050565b60006002600160006101000a81548160ff021916908360038111156106d557fe5b02179055504260078190555042600581905550603c6002601c9054906101000a900463ffffffff1663ffffffff166004540281151561071057fe5b04905060085481111561072557806008819055505b50565b6001809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60004260058190555061075e61080f565b905060008111156107dc576001600281111561077657fe5b61077e610c02565b600281111561078957fe5b141561079b5780600954016009819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156107db57600080fd5b5b50565b6000603c600260189054906101000a900463ffffffff1663ffffffff166004540281151561080957fe5b04905090565b600080600080600381111561082057fe5b600160009054906101000a900460ff16600381111561083b57fe5b141561084a5760009250610929565b610852610c02565b91506000600281111561086157fe5b82600281111561086d57fe5b141561087c5760009250610929565b6009546008541015151561088c57fe5b600954600854039050600160028111156108a257fe5b8260028111156108ae57fe5b14156108bc57809250610929565b6002808111156108c857fe5b8260028111156108d457fe5b141561091e57803073ffffffffffffffffffffffffffffffffffffffff1631101515156108fd57fe5b803073ffffffffffffffffffffffffffffffffffffffff1631039250610929565b6000151561092857fe5b5b505090565b60045481565b6002601c9054906101000a900463ffffffff1681565b60055481565b60065481565b6000806109616107df565b90506103e8600260149054906101000a900463ffffffff1663ffffffff16820281151561098a57fe5b0491505090565b600260149054906101000a900463ffffffff1681565b6001809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0257600080fd5b6000806003811115610a1057fe5b600160009054906101000a900460ff166003811115610a2b57fe5b141515610a3757600080fd5b60018060006101000a81548160ff02191690836003811115610a5557fe5b0217905550610a62610956565b600881905550426006819055504260058190555050565b600160009054906101000a900460ff1681565b60075481565b600260189054906101000a900463ffffffff1681565b60026003811115610ab557fe5b600160009054906101000a900460ff166003811115610ad057fe5b1480610b005750600380811115610ae357fe5b600160009054906101000a900460ff166003811115610afe57fe5b145b1515610b0b57600080fd5b42600581905550505050565b6001809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7257600080fd5b6001806003811115610b8057fe5b600160009054906101000a900460ff166003811115610b9b57fe5b141515610ba757600080fd5b6003600160006101000a81548160ff02191690836003811115610bc657fe5b0217905550426007819055504260058190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610c625760029050610cc6565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610cc15760019050610cc6565b600090505b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d0a57803560ff1916838001178555610d38565b82800160010185558215610d38579182015b82811115610d37578235825591602001919060010190610d1c565b5b509050610d459190610d49565b5090565b610d6b91905b80821115610d67576000816000905550600101610d4f565b5090565b905600a165627a7a723058209ca64e1684db5da9890c3fbf15451ff3f62f115eae5a9f7b538936c4aa10fd8b0029", - "deployedBytecode": "0x60606040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101225780630e40de31146101b057806312424e3f146101ed5780632c2ab5ea146102025780633ccfd60b146102575780634c7afe601461026c5780634d947d591461029557806359a7b3fe146102be578063844b3320146102e757806391294e541461031c578063a761d1b614610345578063adb41fec1461036e578063bb168ab614610397578063be9a6555146103cc578063c19d93fb146103d6578063c24a0f8b1461040d578063cae3e70214610436578063d900f2d61461046b578063ea8a1af0146104a4578063f21376af146104b9578063fde081741461050e575b600080fd5b341561012d57600080fd5b610135610545565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561017557808201518184015260208101905061015a565b50505050905090810190601f1680156101a25780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101bb57600080fd5b6101eb600480803563ffffffff1690602001909190803590602001908201803590602001919091929050506105e3565b005b34156101f857600080fd5b6102006106b4565b005b341561020d57600080fd5b610215610728565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561026257600080fd5b61026a61074d565b005b341561027757600080fd5b61027f6107df565b6040518082815260200191505060405180910390f35b34156102a057600080fd5b6102a861080f565b6040518082815260200191505060405180910390f35b34156102c957600080fd5b6102d161092e565b6040518082815260200191505060405180910390f35b34156102f257600080fd5b6102fa610934565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b341561032757600080fd5b61032f61094a565b6040518082815260200191505060405180910390f35b341561035057600080fd5b610358610950565b6040518082815260200191505060405180910390f35b341561037957600080fd5b610381610956565b6040518082815260200191505060405180910390f35b34156103a257600080fd5b6103aa610991565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b6103d46109a7565b005b34156103e157600080fd5b6103e9610a79565b604051808260038111156103f957fe5b60ff16815260200191505060405180910390f35b341561041857600080fd5b610420610a8c565b6040518082815260200191505060405180910390f35b341561044157600080fd5b610449610a92565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b341561047657600080fd5b6104a2600480803515159060200190919080359060200190820180359060200191909192905050610aa8565b005b34156104af57600080fd5b6104b7610b17565b005b34156104c457600080fd5b6104cc610bdc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561051957600080fd5b610521610c02565b6040518082600281111561053157fe5b60ff16815260200191505060405180910390f35b60008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156105db5780601f106105b0576101008083540402835291602001916105db565b820191906000526020600020905b8154815290600101906020018083116105be57829003601f168201915b505050505081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561063f57600080fd5b600180600381111561064d57fe5b600160009054906101000a900460ff16600381111561066857fe5b14151561067457600080fd5b836002601c6101000a81548163ffffffff021916908363ffffffff1602179055508282600391906106a6929190610cc9565b504260058190555050505050565b60006002600160006101000a81548160ff021916908360038111156106d557fe5b02179055504260078190555042600581905550603c6002601c9054906101000a900463ffffffff1663ffffffff166004540281151561071057fe5b04905060085481111561072557806008819055505b50565b6001809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60004260058190555061075e61080f565b905060008111156107dc576001600281111561077657fe5b61077e610c02565b600281111561078957fe5b141561079b5780600954016009819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156107db57600080fd5b5b50565b6000603c600260189054906101000a900463ffffffff1663ffffffff166004540281151561080957fe5b04905090565b600080600080600381111561082057fe5b600160009054906101000a900460ff16600381111561083b57fe5b141561084a5760009250610929565b610852610c02565b91506000600281111561086157fe5b82600281111561086d57fe5b141561087c5760009250610929565b6009546008541015151561088c57fe5b600954600854039050600160028111156108a257fe5b8260028111156108ae57fe5b14156108bc57809250610929565b6002808111156108c857fe5b8260028111156108d457fe5b141561091e57803073ffffffffffffffffffffffffffffffffffffffff1631101515156108fd57fe5b803073ffffffffffffffffffffffffffffffffffffffff1631039250610929565b6000151561092857fe5b5b505090565b60045481565b6002601c9054906101000a900463ffffffff1681565b60055481565b60065481565b6000806109616107df565b90506103e8600260149054906101000a900463ffffffff1663ffffffff16820281151561098a57fe5b0491505090565b600260149054906101000a900463ffffffff1681565b6001809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0257600080fd5b6000806003811115610a1057fe5b600160009054906101000a900460ff166003811115610a2b57fe5b141515610a3757600080fd5b60018060006101000a81548160ff02191690836003811115610a5557fe5b0217905550610a62610956565b600881905550426006819055504260058190555050565b600160009054906101000a900460ff1681565b60075481565b600260189054906101000a900463ffffffff1681565b60026003811115610ab557fe5b600160009054906101000a900460ff166003811115610ad057fe5b1480610b005750600380811115610ae357fe5b600160009054906101000a900460ff166003811115610afe57fe5b145b1515610b0b57600080fd5b42600581905550505050565b6001809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7257600080fd5b6001806003811115610b8057fe5b600160009054906101000a900460ff166003811115610b9b57fe5b141515610ba757600080fd5b6003600160006101000a81548160ff02191690836003811115610bc657fe5b0217905550426007819055504260058190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006001809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610c625760029050610cc6565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610cc15760019050610cc6565b600090505b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610d0a57803560ff1916838001178555610d38565b82800160010185558215610d38579182015b82811115610d37578235825591602001919060010190610d1c565b5b509050610d459190610d49565b5090565b610d6b91905b80821115610d67576000816000905550600101610d4f565b5090565b905600a165627a7a723058209ca64e1684db5da9890c3fbf15451ff3f62f115eae5a9f7b538936c4aa10fd8b0029", - "sourceMap": "26:3816:1:-;;;588:3;554:37;;689:1;654:36;;728:1;694:35;;734:429;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;939:4;911:24;:32;;;;903:41;;;;;;;;957:5;950:4;:12;;;;;;;;;;;;:::i;:::-;;984:14;968:13;;:30;;;;;;;;;;;;;;;;;;1017:11;1004:10;:24;;;;1051:15;1034:14;;:32;;;;;;;;;;;;;;;;;;1098:24;1072:23;;:50;;;;;;;;;;;;;;;;;;1148:10;1128:17;;:30;;;;;;;;;;;;;;;;;;734:429;;;;;26:3816;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "26:3816:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;181:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2744:218:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2966:264;;;;;;;;;;;;;;226:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3383:278;;;;;;;;;;;;;;2065:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2174:566;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;524:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;369:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;554:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;595:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1911:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;295:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1416:260;;;;;;203:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;627:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;336:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3665:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3234:145;;;;;;;;;;;;;;258:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:227;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;181:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2744:218::-;1221:17;;;;;;;;;;;1207:31;;:10;:31;;;1199:40;;;;;;;;2836:12;1393:6;1384:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1376:24;;;;;;;;2885:11;2867:15;;:29;;;;;;;;;;;;;;;;;;2922:7;;2902:17;:27;;;;;;;:::i;:::-;;2954:3;2935:16;:22;;;;1245:1;2744:218;;;:::o;2966:264::-;3076:21;3008:14;3000:5;;:22;;;;;;;;;;;;;;;;;;;;;;;;3038:3;3028:7;:13;;;;3066:3;3047:16;:22;;;;3133:2;3114:15;;;;;;;;;;;3101:28;;:10;;:28;3100:35;;;;;;;;3076:59;;3161:16;;3145:13;:32;3141:85;;;3206:13;3187:16;:32;;;;3141:85;2966:264;:::o;226:28::-;;;;;;;;;;;;;:::o;3383:278::-;3444:16;3435:3;3416:16;:22;;;;3463;:20;:22::i;:::-;3444:41;;3506:1;3495:8;:12;3491:166;;;3534:15;3521:28;;;;;;;;:9;:7;:9::i;:::-;:28;;;;;;;;;3517:97;;;3597:8;3579:15;;:26;3561:15;:44;;;;3517:97;3621:10;:19;;:29;3641:8;3621:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3491:166;3383:278;:::o;2065:105::-;2109:7;2163:2;2145:14;;;;;;;;;;;2132:27;;:10;;:27;2131:34;;;;;;;;2124:41;;2065:105;:::o;2174:566::-;2227:4;2296:9;2429:29;2252:13;2243:22;;;;;;;;:5;;;;;;;;;;;:22;;;;;;;;;2239:51;;;2282:1;2275:8;;;;2239:51;2308:9;:7;:9::i;:::-;2296:21;;2336:13;2328:21;;;;;;;;:4;:21;;;;;;;;;2324:50;;;2366:1;2359:8;;;;2324:50;2407:15;;2387:16;;:35;;2380:43;;;;;;2480:15;;2461:16;;:34;2429:66;;2514:15;2506:23;;;;;;;;:4;:23;;;;;;;;;2502:72;;;2546:21;2539:28;;;;2502:72;2592:11;2584:19;;;;;;;;:4;:19;;;;;;;;;2580:136;;;2636:21;2620:4;:12;;;:37;;2613:45;;;;;;2688:21;2673:4;:12;;;:36;2666:43;;;;2580:136;2729:5;2722:13;;;;;;2174:566;;;;:::o;524:25::-;;;;:::o;369:29::-;;;;;;;;;;;;;:::o;554:37::-;;;;:::o;595:28::-;;;;:::o;1911:150::-;1953:7;1968:16;1987:13;:11;:13::i;:::-;1968:32;;2052:4;2025:23;;;;;;;;;;;2014:34;;:8;:34;2013:43;;;;;;;;2006:50;;1911:150;;:::o;295:37::-;;;;;;;;;;;;;:::o;1416:260::-;1305:13;;;;;;;;;;;1291:27;;:10;:27;;;1283:36;;;;;;;;1473:13;1393:6;1384:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1376:24;;;;;;;;1570:12;1562:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;1607:11;:9;:11::i;:::-;1588:16;:30;;;;1640:3;1624:13;:19;;;;1668:3;1649:16;:22;;;;1325:1;1416:260::o;203:18::-;;;;;;;;;;;;;:::o;627:22::-;;;;:::o;336:28::-;;;;;;;;;;;;;:::o;3665:174::-;3751:14;3742:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;:51;;;;3778:15;3769:24;;;;;;;;:5;;;;;;;;;;;:24;;;;;;;;;3742:51;3734:60;;;;;;;;3831:3;3812:16;:22;;;;3665:174;;;:::o;3234:145::-;1305:13;;;;;;;;;;;1291:27;;:10;:27;;;1283:36;;;;;;;;3275:12;1393:6;1384:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1376:24;;;;;;;;3312:15;3304:5;;:23;;;;;;;;;;;;;;;;;;;;;;;;3343:3;3333:7;:13;;;;3371:3;3352:16;:22;;;;1325:1;3234:145::o;258:32::-;;;;;;;;;;;;;:::o;1680:227::-;1720:4;1750:13;;;;;;;;;;;1736:27;;:10;:27;;;1732:66;;;1780:11;1773:18;;;;1732:66;1821:17;;;;;;;;;;;1807:31;;:10;:31;;;1803:74;;;1855:15;1848:22;;;;1803:74;1889:13;1882:20;;1680:227;;:::o;26:3816::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity ^0.4.18;\n\ncontract Project {\n\n enum State {\n Created,\n Active,\n Approved,\n Cancelled\n }\n\n enum Role {\n Stranger,\n Contractor,\n Client\n }\n\n string public name;\n State public state;\n\n address public clientAddress;\n address public contractorAddress;\n\n uint32 public prepayFractionThousands;\n uint32 public timeCapMinutes;\n\n uint32 public minutesReported;\n\n // making this public breaks Solidity compiler so it starts to output invalid ABI\n string private contractorComment;\n\n uint256 public hourlyRate;\n\n uint256 public lastActivityDate = now;\n uint256 public executionDate;\n uint256 public endDate;\n\n uint256 private contractorCredit = 0;\n uint256 private contractorDebit = 0;\n\n function Project(\n string _name,\n address _clientAddress,\n uint256 _hourlyRate,\n uint32 _timeCapMinutes,\n uint32 _prepayFractionThousands)\n public {\n require(_prepayFractionThousands <= 1000);\n name = _name;\n clientAddress = _clientAddress;\n hourlyRate = _hourlyRate;\n timeCapMinutes = _timeCapMinutes;\n prepayFractionThousands = _prepayFractionThousands;\n contractorAddress = msg.sender;\n }\n\n modifier onlyContractor() {\n require(msg.sender == contractorAddress);\n _;\n }\n\n modifier onlyClient() {\n require(msg.sender == clientAddress);\n _;\n }\n\n modifier onlyAtState(State _state) {\n require(state == _state);\n _;\n }\n\n function start() external payable onlyClient onlyAtState(State.Created) {\n // require(this.balance >= (hourlyRate * timeCapMinutes) / 60);\n state = State.Active;\n contractorCredit = getPrepay();\n executionDate = now;\n lastActivityDate = now;\n }\n\n function getRole() public view returns (Role) {\n if (msg.sender == clientAddress) {\n return Role.Client;\n }\n if (msg.sender == contractorAddress) {\n return Role.Contractor;\n }\n return Role.Stranger;\n }\n\n function getPrepay() public view returns (uint256) {\n uint256 priceCap = getPriceCap();\n return (priceCap * prepayFractionThousands) / 1000;\n }\n\n function getPriceCap() public view returns (uint256) {\n return (hourlyRate * timeCapMinutes) / 60;\n }\n\n function availableForWithdraw() public view returns (uint) {\n if (state == State.Created) {\n return 0;\n }\n\n Role role = getRole();\n\n if (role == Role.Stranger) {\n return 0;\n }\n\n assert(contractorCredit >= contractorDebit);\n uint256 availableToContractor = contractorCredit - contractorDebit;\n\n if (role == Role.Contractor) {\n return availableToContractor;\n }\n\n if (role == Role.Client) {\n assert(this.balance >= availableToContractor);\n return this.balance - availableToContractor;\n }\n\n assert(false);\n }\n\n function setBillableTime(uint32 timeMinutes, string comment)\n onlyContractor onlyAtState(State.Active)\n external {\n minutesReported = timeMinutes;\n contractorComment = comment;\n lastActivityDate = now;\n }\n\n function approve() external {\n state = State.Approved;\n endDate = now;\n lastActivityDate = now;\n\n uint256 approvedPrice = (hourlyRate * minutesReported) / 60;\n if (approvedPrice > contractorCredit) {\n contractorCredit = approvedPrice;\n }\n }\n\n function cancel() onlyClient onlyAtState(State.Active) external {\n state = State.Cancelled;\n endDate = now;\n lastActivityDate = now;\n }\n\n function withdraw() public {\n lastActivityDate = now;\n uint256 toBeSent = availableForWithdraw();\n if (toBeSent > 0) {\n if (getRole() == Role.Contractor) {\n contractorDebit = contractorDebit + toBeSent;\n }\n msg.sender.transfer(toBeSent);\n }\n }\n\n function leaveFeedback(bool positive, string comment) external {\n require(state == State.Approved || state == State.Cancelled);\n // TODO\n lastActivityDate = now;\n }\n\n}\n", + "bytecode": "0x60606040524260065560006009556000600a55341561001d57600080fd5b604051611124380380611124833981016040528080518201919060200180519060200190919080519060200190919080519060200190919080519060200190919050506103e88163ffffffff161115151561007757600080fd5b846001908051906020019061008d929190610163565b5083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260058190555081600360186101000a81548163ffffffff021916908363ffffffff16021790555080600360146101000a81548163ffffffff021916908363ffffffff16021790555033600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050610208565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106101a457805160ff19168380011785556101d2565b828001600101855582156101d2579182015b828111156101d15782518255916020019190600101906101b6565b5b5090506101df91906101e3565b5090565b61020591905b808211156102015760008160009055506001016101e9565b5090565b90565b610f0d806102176000396000f300606060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101385780630e40de31146101c657806312424e3f146102035780632c2ab5ea146102185780633ccfd60b1461026d5780634c7afe60146102825780634d947d59146102ab57806354fd4d50146102d457806359a7b3fe14610305578063844b33201461032e57806391294e5414610363578063a761d1b61461038c578063adb41fec146103b5578063bb168ab6146103de578063be9a655514610413578063c19d93fb1461041d578063c24a0f8b14610454578063c8802e151461047d578063cae3e7021461050b578063d900f2d614610540578063ea8a1af014610579578063f21376af1461058e578063fde08174146105e3575b600080fd5b341561014357600080fd5b61014b61061a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018b578082015181840152602081019050610170565b50505050905090810190601f1680156101b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101d157600080fd5b610201600480803563ffffffff1690602001909190803590602001908201803590602001919091929050506106b8565b005b341561020e57600080fd5b610216610788565b005b341561022357600080fd5b61022b6107fb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027857600080fd5b610280610821565b005b341561028d57600080fd5b6102956108b3565b6040518082815260200191505060405180910390f35b34156102b657600080fd5b6102be6108e3565b6040518082815260200191505060405180910390f35b34156102df57600080fd5b6102e7610a01565b604051808261ffff1661ffff16815260200191505060405180910390f35b341561031057600080fd5b610318610a06565b6040518082815260200191505060405180910390f35b341561033957600080fd5b610341610a0c565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b341561036e57600080fd5b610376610a22565b6040518082815260200191505060405180910390f35b341561039757600080fd5b61039f610a28565b6040518082815260200191505060405180910390f35b34156103c057600080fd5b6103c8610a2e565b6040518082815260200191505060405180910390f35b34156103e957600080fd5b6103f1610a69565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b61041b610a7f565b005b341561042857600080fd5b610430610b51565b6040518082600381111561044057fe5b60ff16815260200191505060405180910390f35b341561045f57600080fd5b610467610b63565b6040518082815260200191505060405180910390f35b341561048857600080fd5b610490610b69565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104d05780820151818401526020810190506104b5565b50505050905090810190601f1680156104fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561051657600080fd5b61051e610c07565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b341561054b57600080fd5b610577600480803515159060200190919080359060200190820180359060200191909192905050610c1d565b005b341561058457600080fd5b61058c610c8a565b005b341561059957600080fd5b6105a1610d4e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105ee57600080fd5b6105f6610d74565b6040518082600281111561060657fe5b60ff16815260200191505060405180910390f35b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106b05780601f10610685576101008083540402835291602001916106b0565b820191906000526020600020905b81548152906001019060200180831161069357829003601f168201915b505050505081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561071457600080fd5b600180600381111561072257fe5b6000809054906101000a900460ff16600381111561073c57fe5b14151561074857600080fd5b836003601c6101000a81548163ffffffff021916908363ffffffff16021790555082826004919061077a929190610e3c565b504260068190555050505050565b600060026000806101000a81548160ff021916908360038111156107a857fe5b02179055504260088190555042600681905550603c6003601c9054906101000a900463ffffffff1663ffffffff16600554028115156107e357fe5b0490506009548111156107f857806009819055505b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000426006819055506108326108e3565b905060008111156108b0576001600281111561084a57fe5b610852610d74565b600281111561085d57fe5b141561086f5780600a5401600a819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156108af57600080fd5b5b50565b6000603c600360189054906101000a900463ffffffff1663ffffffff16600554028115156108dd57fe5b04905090565b60008060008060038111156108f457fe5b6000809054906101000a900460ff16600381111561090e57fe5b141561091d57600092506109fc565b610925610d74565b91506000600281111561093457fe5b82600281111561094057fe5b141561094f57600092506109fc565b600a546009541015151561095f57fe5b600a546009540390506001600281111561097557fe5b82600281111561098157fe5b141561098f578092506109fc565b60028081111561099b57fe5b8260028111156109a757fe5b14156109f157803073ffffffffffffffffffffffffffffffffffffffff1631101515156109d057fe5b803073ffffffffffffffffffffffffffffffffffffffff16310392506109fc565b600015156109fb57fe5b5b505090565b600181565b60055481565b6003601c9054906101000a900463ffffffff1681565b60065481565b60075481565b600080610a396108b3565b90506103e8600360149054906101000a900463ffffffff1663ffffffff168202811515610a6257fe5b0491505090565b600360149054906101000a900463ffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610adb57600080fd5b6000806003811115610ae957fe5b6000809054906101000a900460ff166003811115610b0357fe5b141515610b0f57600080fd5b60016000806101000a81548160ff02191690836003811115610b2d57fe5b0217905550610b3a610a2e565b600981905550426007819055504260068190555050565b6000809054906101000a900460ff1681565b60085481565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bff5780601f10610bd457610100808354040283529160200191610bff565b820191906000526020600020905b815481529060010190602001808311610be257829003601f168201915b505050505081565b600360189054906101000a900463ffffffff1681565b60026003811115610c2a57fe5b6000809054906101000a900460ff166003811115610c4457fe5b1480610c735750600380811115610c5757fe5b6000809054906101000a900460ff166003811115610c7157fe5b145b1515610c7e57600080fd5b42600681905550505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ce657600080fd5b6001806003811115610cf457fe5b6000809054906101000a900460ff166003811115610d0e57fe5b141515610d1a57600080fd5b60036000806101000a81548160ff02191690836003811115610d3857fe5b0217905550426008819055504260068190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610dd55760029050610e39565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610e345760019050610e39565b600090505b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e7d57803560ff1916838001178555610eab565b82800160010185558215610eab579182015b82811115610eaa578235825591602001919060010190610e8f565b5b509050610eb89190610ebc565b5090565b610ede91905b80821115610eda576000816000905550600101610ec2565b5090565b905600a165627a7a72305820f80ddcdc187b839b249a085276ee8103b737ae681b54edf804a2f53e63e5de010029", + "deployedBytecode": "0x606060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101385780630e40de31146101c657806312424e3f146102035780632c2ab5ea146102185780633ccfd60b1461026d5780634c7afe60146102825780634d947d59146102ab57806354fd4d50146102d457806359a7b3fe14610305578063844b33201461032e57806391294e5414610363578063a761d1b61461038c578063adb41fec146103b5578063bb168ab6146103de578063be9a655514610413578063c19d93fb1461041d578063c24a0f8b14610454578063c8802e151461047d578063cae3e7021461050b578063d900f2d614610540578063ea8a1af014610579578063f21376af1461058e578063fde08174146105e3575b600080fd5b341561014357600080fd5b61014b61061a565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561018b578082015181840152602081019050610170565b50505050905090810190601f1680156101b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101d157600080fd5b610201600480803563ffffffff1690602001909190803590602001908201803590602001919091929050506106b8565b005b341561020e57600080fd5b610216610788565b005b341561022357600080fd5b61022b6107fb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561027857600080fd5b610280610821565b005b341561028d57600080fd5b6102956108b3565b6040518082815260200191505060405180910390f35b34156102b657600080fd5b6102be6108e3565b6040518082815260200191505060405180910390f35b34156102df57600080fd5b6102e7610a01565b604051808261ffff1661ffff16815260200191505060405180910390f35b341561031057600080fd5b610318610a06565b6040518082815260200191505060405180910390f35b341561033957600080fd5b610341610a0c565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b341561036e57600080fd5b610376610a22565b6040518082815260200191505060405180910390f35b341561039757600080fd5b61039f610a28565b6040518082815260200191505060405180910390f35b34156103c057600080fd5b6103c8610a2e565b6040518082815260200191505060405180910390f35b34156103e957600080fd5b6103f1610a69565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b61041b610a7f565b005b341561042857600080fd5b610430610b51565b6040518082600381111561044057fe5b60ff16815260200191505060405180910390f35b341561045f57600080fd5b610467610b63565b6040518082815260200191505060405180910390f35b341561048857600080fd5b610490610b69565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104d05780820151818401526020810190506104b5565b50505050905090810190601f1680156104fd5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561051657600080fd5b61051e610c07565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b341561054b57600080fd5b610577600480803515159060200190919080359060200190820180359060200191909192905050610c1d565b005b341561058457600080fd5b61058c610c8a565b005b341561059957600080fd5b6105a1610d4e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105ee57600080fd5b6105f6610d74565b6040518082600281111561060657fe5b60ff16815260200191505060405180910390f35b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156106b05780601f10610685576101008083540402835291602001916106b0565b820191906000526020600020905b81548152906001019060200180831161069357829003601f168201915b505050505081565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561071457600080fd5b600180600381111561072257fe5b6000809054906101000a900460ff16600381111561073c57fe5b14151561074857600080fd5b836003601c6101000a81548163ffffffff021916908363ffffffff16021790555082826004919061077a929190610e3c565b504260068190555050505050565b600060026000806101000a81548160ff021916908360038111156107a857fe5b02179055504260088190555042600681905550603c6003601c9054906101000a900463ffffffff1663ffffffff16600554028115156107e357fe5b0490506009548111156107f857806009819055505b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000426006819055506108326108e3565b905060008111156108b0576001600281111561084a57fe5b610852610d74565b600281111561085d57fe5b141561086f5780600a5401600a819055505b3373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015156108af57600080fd5b5b50565b6000603c600360189054906101000a900463ffffffff1663ffffffff16600554028115156108dd57fe5b04905090565b60008060008060038111156108f457fe5b6000809054906101000a900460ff16600381111561090e57fe5b141561091d57600092506109fc565b610925610d74565b91506000600281111561093457fe5b82600281111561094057fe5b141561094f57600092506109fc565b600a546009541015151561095f57fe5b600a546009540390506001600281111561097557fe5b82600281111561098157fe5b141561098f578092506109fc565b60028081111561099b57fe5b8260028111156109a757fe5b14156109f157803073ffffffffffffffffffffffffffffffffffffffff1631101515156109d057fe5b803073ffffffffffffffffffffffffffffffffffffffff16310392506109fc565b600015156109fb57fe5b5b505090565b600181565b60055481565b6003601c9054906101000a900463ffffffff1681565b60065481565b60075481565b600080610a396108b3565b90506103e8600360149054906101000a900463ffffffff1663ffffffff168202811515610a6257fe5b0491505090565b600360149054906101000a900463ffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610adb57600080fd5b6000806003811115610ae957fe5b6000809054906101000a900460ff166003811115610b0357fe5b141515610b0f57600080fd5b60016000806101000a81548160ff02191690836003811115610b2d57fe5b0217905550610b3a610a2e565b600981905550426007819055504260068190555050565b6000809054906101000a900460ff1681565b60085481565b60048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610bff5780601f10610bd457610100808354040283529160200191610bff565b820191906000526020600020905b815481529060010190602001808311610be257829003601f168201915b505050505081565b600360189054906101000a900463ffffffff1681565b60026003811115610c2a57fe5b6000809054906101000a900460ff166003811115610c4457fe5b1480610c735750600380811115610c5757fe5b6000809054906101000a900460ff166003811115610c7157fe5b145b1515610c7e57600080fd5b42600681905550505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ce657600080fd5b6001806003811115610cf457fe5b6000809054906101000a900460ff166003811115610d0e57fe5b141515610d1a57600080fd5b60036000806101000a81548160ff02191690836003811115610d3857fe5b0217905550426008819055504260068190555050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610dd55760029050610e39565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610e345760019050610e39565b600090505b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610e7d57803560ff1916838001178555610eab565b82800160010185558215610eab579182015b82811115610eaa578235825591602001919060010190610e8f565b5b509050610eb89190610ebc565b5090565b610ede91905b80821115610eda576000816000905550600101610ec2565b5090565b905600a165627a7a72305820f80ddcdc187b839b249a085276ee8103b737ae681b54edf804a2f53e63e5de010029", + "sourceMap": "26:3854:1:-;;;626:3;592:37;;727:1;692:36;;766:1;732:35;;772:429;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;977:4;949:24;:32;;;;941:41;;;;;;;;995:5;988:4;:12;;;;;;;;;;;;:::i;:::-;;1022:14;1006:13;;:30;;;;;;;;;;;;;;;;;;1055:11;1042:10;:24;;;;1089:15;1072:14;;:32;;;;;;;;;;;;;;;;;;1136:24;1110:23;;:50;;;;;;;;;;;;;;;;;;1186:10;1166:17;;:30;;;;;;;;;;;;;;;;;;772:429;;;;;26:3854;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "26:3854:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;242:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2782:218:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3004:264;;;;;;;;;;;;;;265:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3421:278;;;;;;;;;;;;;;2103:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2212:566;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;181:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;562:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;408:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;592:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;633:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1949:150;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;334:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:260;;;;;;220:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;665:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;526:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;375:28:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3703:174;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3272:145;;;;;;;;;;;;;;297:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1718:227;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;242:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2782:218::-;1259:17;;;;;;;;;;;1245:31;;:10;:31;;;1237:40;;;;;;;;2874:12;1431:6;1422:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1414:24;;;;;;;;2923:11;2905:15;;:29;;;;;;;;;;;;;;;;;;2960:7;;2940:17;:27;;;;;;;:::i;:::-;;2992:3;2973:16;:22;;;;1283:1;2782:218;;;:::o;3004:264::-;3114:21;3046:14;3038:5;;:22;;;;;;;;;;;;;;;;;;;;;;;;3076:3;3066:7;:13;;;;3104:3;3085:16;:22;;;;3171:2;3152:15;;;;;;;;;;;3139:28;;:10;;:28;3138:35;;;;;;;;3114:59;;3199:16;;3183:13;:32;3179:85;;;3244:13;3225:16;:32;;;;3179:85;3004:264;:::o;265:28::-;;;;;;;;;;;;;:::o;3421:278::-;3482:16;3473:3;3454:16;:22;;;;3501;:20;:22::i;:::-;3482:41;;3544:1;3533:8;:12;3529:166;;;3572:15;3559:28;;;;;;;;:9;:7;:9::i;:::-;:28;;;;;;;;;3555:97;;;3635:8;3617:15;;:26;3599:15;:44;;;;3555:97;3659:10;:19;;:29;3679:8;3659:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3529:166;3421:278;:::o;2103:105::-;2147:7;2201:2;2183:14;;;;;;;;;;;2170:27;;:10;;:27;2169:34;;;;;;;;2162:41;;2103:105;:::o;2212:566::-;2265:4;2334:9;2467:29;2290:13;2281:22;;;;;;;;:5;;;;;;;;;;;:22;;;;;;;;;2277:51;;;2320:1;2313:8;;;;2277:51;2346:9;:7;:9::i;:::-;2334:21;;2374:13;2366:21;;;;;;;;:4;:21;;;;;;;;;2362:50;;;2404:1;2397:8;;;;2362:50;2445:15;;2425:16;;:35;;2418:43;;;;;;2518:15;;2499:16;;:34;2467:66;;2552:15;2544:23;;;;;;;;:4;:23;;;;;;;;;2540:72;;;2584:21;2577:28;;;;2540:72;2630:11;2622:19;;;;;;;;:4;:19;;;;;;;;;2618:136;;;2674:21;2658:4;:12;;;:37;;2651:45;;;;;;2726:21;2711:4;:12;;;:36;2704:43;;;;2618:136;2767:5;2760:13;;;;;;2212:566;;;;:::o;181:34::-;214:1;181:34;:::o;562:25::-;;;;:::o;408:29::-;;;;;;;;;;;;;:::o;592:37::-;;;;:::o;633:28::-;;;;:::o;1949:150::-;1991:7;2006:16;2025:13;:11;:13::i;:::-;2006:32;;2090:4;2063:23;;;;;;;;;;;2052:34;;:8;:34;2051:43;;;;;;;;2044:50;;1949:150;;:::o;334:37::-;;;;;;;;;;;;;:::o;1454:260::-;1343:13;;;;;;;;;;;1329:27;;:10;:27;;;1321:36;;;;;;;;1511:13;1431:6;1422:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1414:24;;;;;;;;1608:12;1600:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;1645:11;:9;:11::i;:::-;1626:16;:30;;;;1678:3;1662:13;:19;;;;1706:3;1687:16;:22;;;;1363:1;1454:260::o;220:18::-;;;;;;;;;;;;;:::o;665:22::-;;;;:::o;526:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;375:28::-;;;;;;;;;;;;;:::o;3703:174::-;3789:14;3780:23;;;;;;;;:5;;;;;;;;;;;:23;;;;;;;;;:51;;;;3816:15;3807:24;;;;;;;;:5;;;;;;;;;;;:24;;;;;;;;;3780:51;3772:60;;;;;;;;3869:3;3850:16;:22;;;;3703:174;;;:::o;3272:145::-;1343:13;;;;;;;;;;;1329:27;;:10;:27;;;1321:36;;;;;;;;3313:12;1431:6;1422:15;;;;;;;;:5;;;;;;;;;;;:15;;;;;;;;;1414:24;;;;;;;;3350:15;3342:5;;:23;;;;;;;;;;;;;;;;;;;;;;;;3381:3;3371:7;:13;;;;3409:3;3390:16;:22;;;;1363:1;3272:145::o;297:32::-;;;;;;;;;;;;;:::o;1718:227::-;1758:4;1788:13;;;;;;;;;;;1774:27;;:10;:27;;;1770:66;;;1818:11;1811:18;;;;1770:66;1859:17;;;;;;;;;;;1845:31;;:10;:31;;;1841:74;;;1893:15;1886:22;;;;1841:74;1927:13;1920:20;;1718:227;;:::o;26:3854::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity ^0.4.18;\n\ncontract Project {\n\n enum State {\n Created,\n Active,\n Approved,\n Cancelled\n }\n\n enum Role {\n Stranger,\n Contractor,\n Client\n }\n\n uint16 public constant version = 1;\n\n State public state;\n string public name;\n\n address public clientAddress;\n address public contractorAddress;\n\n uint32 public prepayFractionThousands;\n uint32 public timeCapMinutes;\n\n uint32 public minutesReported;\n\n // making this public breaks Solidity compiler so it starts to output invalid ABI\n string public contractorComment;\n\n uint256 public hourlyRate;\n\n uint256 public lastActivityDate = now;\n uint256 public executionDate;\n uint256 public endDate;\n\n uint256 private contractorCredit = 0;\n uint256 private contractorDebit = 0;\n\n function Project(\n string _name,\n address _clientAddress,\n uint256 _hourlyRate,\n uint32 _timeCapMinutes,\n uint32 _prepayFractionThousands)\n public {\n require(_prepayFractionThousands <= 1000);\n name = _name;\n clientAddress = _clientAddress;\n hourlyRate = _hourlyRate;\n timeCapMinutes = _timeCapMinutes;\n prepayFractionThousands = _prepayFractionThousands;\n contractorAddress = msg.sender;\n }\n\n modifier onlyContractor() {\n require(msg.sender == contractorAddress);\n _;\n }\n\n modifier onlyClient() {\n require(msg.sender == clientAddress);\n _;\n }\n\n modifier onlyAtState(State _state) {\n require(state == _state);\n _;\n }\n\n function start() external payable onlyClient onlyAtState(State.Created) {\n // require(this.balance >= (hourlyRate * timeCapMinutes) / 60);\n state = State.Active;\n contractorCredit = getPrepay();\n executionDate = now;\n lastActivityDate = now;\n }\n\n function getRole() public view returns (Role) {\n if (msg.sender == clientAddress) {\n return Role.Client;\n }\n if (msg.sender == contractorAddress) {\n return Role.Contractor;\n }\n return Role.Stranger;\n }\n\n function getPrepay() public view returns (uint256) {\n uint256 priceCap = getPriceCap();\n return (priceCap * prepayFractionThousands) / 1000;\n }\n\n function getPriceCap() public view returns (uint256) {\n return (hourlyRate * timeCapMinutes) / 60;\n }\n\n function availableForWithdraw() public view returns (uint) {\n if (state == State.Created) {\n return 0;\n }\n\n Role role = getRole();\n\n if (role == Role.Stranger) {\n return 0;\n }\n\n assert(contractorCredit >= contractorDebit);\n uint256 availableToContractor = contractorCredit - contractorDebit;\n\n if (role == Role.Contractor) {\n return availableToContractor;\n }\n\n if (role == Role.Client) {\n assert(this.balance >= availableToContractor);\n return this.balance - availableToContractor;\n }\n\n assert(false);\n }\n\n function setBillableTime(uint32 timeMinutes, string comment)\n onlyContractor onlyAtState(State.Active)\n external {\n minutesReported = timeMinutes;\n contractorComment = comment;\n lastActivityDate = now;\n }\n\n function approve() external {\n state = State.Approved;\n endDate = now;\n lastActivityDate = now;\n\n uint256 approvedPrice = (hourlyRate * minutesReported) / 60;\n if (approvedPrice > contractorCredit) {\n contractorCredit = approvedPrice;\n }\n }\n\n function cancel() onlyClient onlyAtState(State.Active) external {\n state = State.Cancelled;\n endDate = now;\n lastActivityDate = now;\n }\n\n function withdraw() public {\n lastActivityDate = now;\n uint256 toBeSent = availableForWithdraw();\n if (toBeSent > 0) {\n if (getRole() == Role.Contractor) {\n contractorDebit = contractorDebit + toBeSent;\n }\n msg.sender.transfer(toBeSent);\n }\n }\n\n function leaveFeedback(bool positive, string comment) external {\n require(state == State.Approved || state == State.Cancelled);\n // TODO\n lastActivityDate = now;\n }\n\n}\n", "sourcePath": "/Users/sam/dev/projects/append-only-log/hackathon/contracts/Project.sol", "ast": { "attributes": { "absolutePath": "/Users/sam/dev/projects/append-only-log/hackathon/contracts/Project.sol", "exportedSymbols": { "Project": [ - 480 + 483 ] } }, @@ -352,10 +380,10 @@ "documentation": null, "fullyImplemented": true, "linearizedBaseContracts": [ - 480 + 483 ], "name": "Project", - "scope": 481 + "scope": 484 }, "children": [ { @@ -438,35 +466,51 @@ }, { "attributes": { - "constant": false, - "name": "name", - "scope": 480, + "constant": true, + "name": "version", + "scope": 483, "stateVariable": true, "storageLocation": "default", - "type": "string storage ref", - "value": null, + "type": "uint16", "visibility": "public" }, "children": [ { "attributes": { - "name": "string", - "type": "string storage pointer" + "name": "uint16", + "type": "uint16" }, "id": 68, "name": "ElementaryTypeName", "src": "181:6:1" + }, + { + "attributes": { + "argumentTypes": null, + "hexvalue": "31", + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "subdenomination": null, + "token": "number", + "type": "int_const 1", + "value": "1" + }, + "id": 69, + "name": "Literal", + "src": "214:1:1" } ], - "id": 69, + "id": 70, "name": "VariableDeclaration", - "src": "181:18:1" + "src": "181:34:1" }, { "attributes": { "constant": false, "name": "state", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "enum Project.State", @@ -481,20 +525,46 @@ "referencedDeclaration": 63, "type": "enum Project.State" }, - "id": 70, + "id": 71, "name": "UserDefinedTypeName", - "src": "203:5:1" + "src": "220:5:1" + } + ], + "id": 72, + "name": "VariableDeclaration", + "src": "220:18:1" + }, + { + "attributes": { + "constant": false, + "name": "name", + "scope": 483, + "stateVariable": true, + "storageLocation": "default", + "type": "string storage ref", + "value": null, + "visibility": "public" + }, + "children": [ + { + "attributes": { + "name": "string", + "type": "string storage pointer" + }, + "id": 73, + "name": "ElementaryTypeName", + "src": "242:6:1" } ], - "id": 71, + "id": 74, "name": "VariableDeclaration", - "src": "203:18:1" + "src": "242:18:1" }, { "attributes": { "constant": false, "name": "clientAddress", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -507,20 +577,20 @@ "name": "address", "type": "address" }, - "id": 72, + "id": 75, "name": "ElementaryTypeName", - "src": "226:7:1" + "src": "265:7:1" } ], - "id": 73, + "id": 76, "name": "VariableDeclaration", - "src": "226:28:1" + "src": "265:28:1" }, { "attributes": { "constant": false, "name": "contractorAddress", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "address", @@ -533,20 +603,20 @@ "name": "address", "type": "address" }, - "id": 74, + "id": 77, "name": "ElementaryTypeName", - "src": "258:7:1" + "src": "297:7:1" } ], - "id": 75, + "id": 78, "name": "VariableDeclaration", - "src": "258:32:1" + "src": "297:32:1" }, { "attributes": { "constant": false, "name": "prepayFractionThousands", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "uint32", @@ -559,20 +629,20 @@ "name": "uint32", "type": "uint32" }, - "id": 76, + "id": 79, "name": "ElementaryTypeName", - "src": "295:6:1" + "src": "334:6:1" } ], - "id": 77, + "id": 80, "name": "VariableDeclaration", - "src": "295:37:1" + "src": "334:37:1" }, { "attributes": { "constant": false, "name": "timeCapMinutes", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "uint32", @@ -585,20 +655,20 @@ "name": "uint32", "type": "uint32" }, - "id": 78, + "id": 81, "name": "ElementaryTypeName", - "src": "336:6:1" + "src": "375:6:1" } ], - "id": 79, + "id": 82, "name": "VariableDeclaration", - "src": "336:28:1" + "src": "375:28:1" }, { "attributes": { "constant": false, "name": "minutesReported", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "uint32", @@ -611,25 +681,25 @@ "name": "uint32", "type": "uint32" }, - "id": 80, + "id": 83, "name": "ElementaryTypeName", - "src": "369:6:1" + "src": "408:6:1" } ], - "id": 81, + "id": 84, "name": "VariableDeclaration", - "src": "369:29:1" + "src": "408:29:1" }, { "attributes": { "constant": false, "name": "contractorComment", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "string storage ref", "value": null, - "visibility": "private" + "visibility": "public" }, "children": [ { @@ -637,20 +707,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 82, + "id": 85, "name": "ElementaryTypeName", - "src": "487:6:1" + "src": "526:6:1" } ], - "id": 83, + "id": 86, "name": "VariableDeclaration", - "src": "487:32:1" + "src": "526:31:1" }, { "attributes": { "constant": false, "name": "hourlyRate", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -663,20 +733,20 @@ "name": "uint256", "type": "uint256" }, - "id": 84, + "id": 87, "name": "ElementaryTypeName", - "src": "524:7:1" + "src": "562:7:1" } ], - "id": 85, + "id": 88, "name": "VariableDeclaration", - "src": "524:25:1" + "src": "562:25:1" }, { "attributes": { "constant": false, "name": "lastActivityDate", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -688,9 +758,9 @@ "name": "uint256", "type": "uint256" }, - "id": 86, + "id": 89, "name": "ElementaryTypeName", - "src": "554:7:1" + "src": "592:7:1" }, { "attributes": { @@ -698,24 +768,24 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 494, + "referencedDeclaration": 497, "type": "uint256", "value": "now" }, - "id": 87, + "id": 90, "name": "Identifier", - "src": "588:3:1" + "src": "626:3:1" } ], - "id": 88, + "id": 91, "name": "VariableDeclaration", - "src": "554:37:1" + "src": "592:37:1" }, { "attributes": { "constant": false, "name": "executionDate", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -728,20 +798,20 @@ "name": "uint256", "type": "uint256" }, - "id": 89, + "id": 92, "name": "ElementaryTypeName", - "src": "595:7:1" + "src": "633:7:1" } ], - "id": 90, + "id": 93, "name": "VariableDeclaration", - "src": "595:28:1" + "src": "633:28:1" }, { "attributes": { "constant": false, "name": "endDate", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -754,20 +824,20 @@ "name": "uint256", "type": "uint256" }, - "id": 91, + "id": 94, "name": "ElementaryTypeName", - "src": "627:7:1" + "src": "665:7:1" } ], - "id": 92, + "id": 95, "name": "VariableDeclaration", - "src": "627:22:1" + "src": "665:22:1" }, { "attributes": { "constant": false, "name": "contractorCredit", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -779,9 +849,9 @@ "name": "uint256", "type": "uint256" }, - "id": 93, + "id": 96, "name": "ElementaryTypeName", - "src": "654:7:1" + "src": "692:7:1" }, { "attributes": { @@ -796,20 +866,20 @@ "type": "int_const 0", "value": "0" }, - "id": 94, + "id": 97, "name": "Literal", - "src": "689:1:1" + "src": "727:1:1" } ], - "id": 95, + "id": 98, "name": "VariableDeclaration", - "src": "654:36:1" + "src": "692:36:1" }, { "attributes": { "constant": false, "name": "contractorDebit", - "scope": 480, + "scope": 483, "stateVariable": true, "storageLocation": "default", "type": "uint256", @@ -821,9 +891,9 @@ "name": "uint256", "type": "uint256" }, - "id": 96, + "id": 99, "name": "ElementaryTypeName", - "src": "694:7:1" + "src": "732:7:1" }, { "attributes": { @@ -838,14 +908,14 @@ "type": "int_const 0", "value": "0" }, - "id": 97, + "id": 100, "name": "Literal", - "src": "728:1:1" + "src": "766:1:1" } ], - "id": 98, + "id": 101, "name": "VariableDeclaration", - "src": "694:35:1" + "src": "732:35:1" }, { "attributes": { @@ -857,7 +927,7 @@ ], "name": "Project", "payable": false, - "scope": 480, + "scope": 483, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -869,7 +939,7 @@ "attributes": { "constant": false, "name": "_name", - "scope": 143, + "scope": 146, "stateVariable": false, "storageLocation": "default", "type": "string memory", @@ -882,20 +952,20 @@ "name": "string", "type": "string storage pointer" }, - "id": 99, + "id": 102, "name": "ElementaryTypeName", - "src": "756:6:1" + "src": "794:6:1" } ], - "id": 100, + "id": 103, "name": "VariableDeclaration", - "src": "756:12:1" + "src": "794:12:1" }, { "attributes": { "constant": false, "name": "_clientAddress", - "scope": 143, + "scope": 146, "stateVariable": false, "storageLocation": "default", "type": "address", @@ -908,20 +978,20 @@ "name": "address", "type": "address" }, - "id": 101, + "id": 104, "name": "ElementaryTypeName", - "src": "774:7:1" + "src": "812:7:1" } ], - "id": 102, + "id": 105, "name": "VariableDeclaration", - "src": "774:22:1" + "src": "812:22:1" }, { "attributes": { "constant": false, "name": "_hourlyRate", - "scope": 143, + "scope": 146, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -934,20 +1004,20 @@ "name": "uint256", "type": "uint256" }, - "id": 103, + "id": 106, "name": "ElementaryTypeName", - "src": "802:7:1" + "src": "840:7:1" } ], - "id": 104, + "id": 107, "name": "VariableDeclaration", - "src": "802:19:1" + "src": "840:19:1" }, { "attributes": { "constant": false, "name": "_timeCapMinutes", - "scope": 143, + "scope": 146, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -960,20 +1030,20 @@ "name": "uint32", "type": "uint32" }, - "id": 105, + "id": 108, "name": "ElementaryTypeName", - "src": "827:6:1" + "src": "865:6:1" } ], - "id": 106, + "id": 109, "name": "VariableDeclaration", - "src": "827:22:1" + "src": "865:22:1" }, { "attributes": { "constant": false, "name": "_prepayFractionThousands", - "scope": 143, + "scope": 146, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -986,19 +1056,19 @@ "name": "uint32", "type": "uint32" }, - "id": 107, + "id": 110, "name": "ElementaryTypeName", - "src": "855:6:1" + "src": "893:6:1" } ], - "id": 108, + "id": 111, "name": "VariableDeclaration", - "src": "855:31:1" + "src": "893:31:1" } ], - "id": 109, + "id": 112, "name": "ParameterList", - "src": "750:137:1" + "src": "788:137:1" }, { "attributes": { @@ -1007,9 +1077,9 @@ ] }, "children": [], - "id": 110, + "id": 113, "name": "ParameterList", - "src": "897:0:1" + "src": "935:0:1" }, { "children": [ @@ -1041,13 +1111,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 495, + "referencedDeclaration": 498, "type": "function (bool) pure", "value": "require" }, - "id": 111, + "id": 114, "name": "Identifier", - "src": "903:7:1" + "src": "941:7:1" }, { "attributes": { @@ -1070,13 +1140,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 108, + "referencedDeclaration": 111, "type": "uint32", "value": "_prepayFractionThousands" }, - "id": 112, + "id": 115, "name": "Identifier", - "src": "911:24:1" + "src": "949:24:1" }, { "attributes": { @@ -1091,24 +1161,24 @@ "type": "int_const 1000", "value": "1000" }, - "id": 113, + "id": 116, "name": "Literal", - "src": "939:4:1" + "src": "977:4:1" } ], - "id": 114, + "id": 117, "name": "BinaryOperation", - "src": "911:32:1" + "src": "949:32:1" } ], - "id": 115, + "id": 118, "name": "FunctionCall", - "src": "903:41:1" + "src": "941:41:1" } ], - "id": 116, + "id": 119, "name": "ExpressionStatement", - "src": "903:41:1" + "src": "941:41:1" }, { "children": [ @@ -1129,13 +1199,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 69, + "referencedDeclaration": 74, "type": "string storage ref", "value": "name" }, - "id": 117, + "id": 120, "name": "Identifier", - "src": "950:4:1" + "src": "988:4:1" }, { "attributes": { @@ -1143,23 +1213,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 100, + "referencedDeclaration": 103, "type": "string memory", "value": "_name" }, - "id": 118, + "id": 121, "name": "Identifier", - "src": "957:5:1" + "src": "995:5:1" } ], - "id": 119, + "id": 122, "name": "Assignment", - "src": "950:12:1" + "src": "988:12:1" } ], - "id": 120, + "id": 123, "name": "ExpressionStatement", - "src": "950:12:1" + "src": "988:12:1" }, { "children": [ @@ -1180,13 +1250,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 73, + "referencedDeclaration": 76, "type": "address", "value": "clientAddress" }, - "id": 121, + "id": 124, "name": "Identifier", - "src": "968:13:1" + "src": "1006:13:1" }, { "attributes": { @@ -1194,23 +1264,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 102, + "referencedDeclaration": 105, "type": "address", "value": "_clientAddress" }, - "id": 122, + "id": 125, "name": "Identifier", - "src": "984:14:1" + "src": "1022:14:1" } ], - "id": 123, + "id": 126, "name": "Assignment", - "src": "968:30:1" + "src": "1006:30:1" } ], - "id": 124, + "id": 127, "name": "ExpressionStatement", - "src": "968:30:1" + "src": "1006:30:1" }, { "children": [ @@ -1231,13 +1301,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 85, + "referencedDeclaration": 88, "type": "uint256", "value": "hourlyRate" }, - "id": 125, + "id": 128, "name": "Identifier", - "src": "1004:10:1" + "src": "1042:10:1" }, { "attributes": { @@ -1245,23 +1315,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 104, + "referencedDeclaration": 107, "type": "uint256", "value": "_hourlyRate" }, - "id": 126, + "id": 129, "name": "Identifier", - "src": "1017:11:1" + "src": "1055:11:1" } ], - "id": 127, + "id": 130, "name": "Assignment", - "src": "1004:24:1" + "src": "1042:24:1" } ], - "id": 128, + "id": 131, "name": "ExpressionStatement", - "src": "1004:24:1" + "src": "1042:24:1" }, { "children": [ @@ -1282,13 +1352,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 79, + "referencedDeclaration": 82, "type": "uint32", "value": "timeCapMinutes" }, - "id": 129, + "id": 132, "name": "Identifier", - "src": "1034:14:1" + "src": "1072:14:1" }, { "attributes": { @@ -1296,23 +1366,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 106, + "referencedDeclaration": 109, "type": "uint32", "value": "_timeCapMinutes" }, - "id": 130, + "id": 133, "name": "Identifier", - "src": "1051:15:1" + "src": "1089:15:1" } ], - "id": 131, + "id": 134, "name": "Assignment", - "src": "1034:32:1" + "src": "1072:32:1" } ], - "id": 132, + "id": 135, "name": "ExpressionStatement", - "src": "1034:32:1" + "src": "1072:32:1" }, { "children": [ @@ -1333,13 +1403,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 77, + "referencedDeclaration": 80, "type": "uint32", "value": "prepayFractionThousands" }, - "id": 133, + "id": 136, "name": "Identifier", - "src": "1072:23:1" + "src": "1110:23:1" }, { "attributes": { @@ -1347,23 +1417,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 108, + "referencedDeclaration": 111, "type": "uint32", "value": "_prepayFractionThousands" }, - "id": 134, + "id": 137, "name": "Identifier", - "src": "1098:24:1" + "src": "1136:24:1" } ], - "id": 135, + "id": 138, "name": "Assignment", - "src": "1072:50:1" + "src": "1110:50:1" } ], - "id": 136, + "id": 139, "name": "ExpressionStatement", - "src": "1072:50:1" + "src": "1110:50:1" }, { "children": [ @@ -1384,13 +1454,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 75, + "referencedDeclaration": 78, "type": "address", "value": "contractorAddress" }, - "id": 137, + "id": 140, "name": "Identifier", - "src": "1128:17:1" + "src": "1166:17:1" }, { "attributes": { @@ -1410,38 +1480,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 492, + "referencedDeclaration": 495, "type": "msg", "value": "msg" }, - "id": 138, + "id": 141, "name": "Identifier", - "src": "1148:3:1" + "src": "1186:3:1" } ], - "id": 139, + "id": 142, "name": "MemberAccess", - "src": "1148:10:1" + "src": "1186:10:1" } ], - "id": 140, + "id": 143, "name": "Assignment", - "src": "1128:30:1" + "src": "1166:30:1" } ], - "id": 141, + "id": 144, "name": "ExpressionStatement", - "src": "1128:30:1" + "src": "1166:30:1" } ], - "id": 142, + "id": 145, "name": "Block", - "src": "897:266:1" + "src": "935:266:1" } ], - "id": 143, + "id": 146, "name": "FunctionDefinition", - "src": "734:429:1" + "src": "772:429:1" }, { "attributes": { @@ -1456,9 +1526,9 @@ ] }, "children": [], - "id": 144, + "id": 147, "name": "ParameterList", - "src": "1190:2:1" + "src": "1228:2:1" }, { "children": [ @@ -1490,13 +1560,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 495, + "referencedDeclaration": 498, "type": "function (bool) pure", "value": "require" }, - "id": 145, + "id": 148, "name": "Identifier", - "src": "1199:7:1" + "src": "1237:7:1" }, { "attributes": { @@ -1531,18 +1601,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 492, + "referencedDeclaration": 495, "type": "msg", "value": "msg" }, - "id": 146, + "id": 149, "name": "Identifier", - "src": "1207:3:1" + "src": "1245:3:1" } ], - "id": 147, + "id": 150, "name": "MemberAccess", - "src": "1207:10:1" + "src": "1245:10:1" }, { "attributes": { @@ -1550,43 +1620,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 75, + "referencedDeclaration": 78, "type": "address", "value": "contractorAddress" }, - "id": 148, + "id": 151, "name": "Identifier", - "src": "1221:17:1" + "src": "1259:17:1" } ], - "id": 149, + "id": 152, "name": "BinaryOperation", - "src": "1207:31:1" + "src": "1245:31:1" } ], - "id": 150, + "id": 153, "name": "FunctionCall", - "src": "1199:40:1" + "src": "1237:40:1" } ], - "id": 151, + "id": 154, "name": "ExpressionStatement", - "src": "1199:40:1" + "src": "1237:40:1" }, { - "id": 152, + "id": 155, "name": "PlaceholderStatement", - "src": "1245:1:1" + "src": "1283:1:1" } ], - "id": 153, + "id": 156, "name": "Block", - "src": "1193:58:1" + "src": "1231:58:1" } ], - "id": 154, + "id": 157, "name": "ModifierDefinition", - "src": "1167:84:1" + "src": "1205:84:1" }, { "attributes": { @@ -1601,9 +1671,9 @@ ] }, "children": [], - "id": 155, + "id": 158, "name": "ParameterList", - "src": "1274:2:1" + "src": "1312:2:1" }, { "children": [ @@ -1635,13 +1705,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 495, + "referencedDeclaration": 498, "type": "function (bool) pure", "value": "require" }, - "id": 156, + "id": 159, "name": "Identifier", - "src": "1283:7:1" + "src": "1321:7:1" }, { "attributes": { @@ -1676,18 +1746,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 492, + "referencedDeclaration": 495, "type": "msg", "value": "msg" }, - "id": 157, + "id": 160, "name": "Identifier", - "src": "1291:3:1" + "src": "1329:3:1" } ], - "id": 158, + "id": 161, "name": "MemberAccess", - "src": "1291:10:1" + "src": "1329:10:1" }, { "attributes": { @@ -1695,43 +1765,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 73, + "referencedDeclaration": 76, "type": "address", "value": "clientAddress" }, - "id": 159, + "id": 162, "name": "Identifier", - "src": "1305:13:1" + "src": "1343:13:1" } ], - "id": 160, + "id": 163, "name": "BinaryOperation", - "src": "1291:27:1" + "src": "1329:27:1" } ], - "id": 161, + "id": 164, "name": "FunctionCall", - "src": "1283:36:1" + "src": "1321:36:1" } ], - "id": 162, + "id": 165, "name": "ExpressionStatement", - "src": "1283:36:1" + "src": "1321:36:1" }, { - "id": 163, + "id": 166, "name": "PlaceholderStatement", - "src": "1325:1:1" + "src": "1363:1:1" } ], - "id": 164, + "id": 167, "name": "Block", - "src": "1277:54:1" + "src": "1315:54:1" } ], - "id": 165, + "id": 168, "name": "ModifierDefinition", - "src": "1255:76:1" + "src": "1293:76:1" }, { "attributes": { @@ -1745,7 +1815,7 @@ "attributes": { "constant": false, "name": "_state", - "scope": 177, + "scope": 180, "stateVariable": false, "storageLocation": "default", "type": "enum Project.State", @@ -1760,19 +1830,19 @@ "referencedDeclaration": 63, "type": "enum Project.State" }, - "id": 166, + "id": 169, "name": "UserDefinedTypeName", - "src": "1356:5:1" + "src": "1394:5:1" } ], - "id": 167, + "id": 170, "name": "VariableDeclaration", - "src": "1356:12:1" + "src": "1394:12:1" } ], - "id": 168, + "id": 171, "name": "ParameterList", - "src": "1355:14:1" + "src": "1393:14:1" }, { "children": [ @@ -1804,13 +1874,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 495, + "referencedDeclaration": 498, "type": "function (bool) pure", "value": "require" }, - "id": 169, + "id": 172, "name": "Identifier", - "src": "1376:7:1" + "src": "1414:7:1" }, { "attributes": { @@ -1833,13 +1903,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 71, + "referencedDeclaration": 72, "type": "enum Project.State", "value": "state" }, - "id": 170, + "id": 173, "name": "Identifier", - "src": "1384:5:1" + "src": "1422:5:1" }, { "attributes": { @@ -1847,43 +1917,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 167, + "referencedDeclaration": 170, "type": "enum Project.State", "value": "_state" }, - "id": 171, + "id": 174, "name": "Identifier", - "src": "1393:6:1" + "src": "1431:6:1" } ], - "id": 172, + "id": 175, "name": "BinaryOperation", - "src": "1384:15:1" + "src": "1422:15:1" } ], - "id": 173, + "id": 176, "name": "FunctionCall", - "src": "1376:24:1" + "src": "1414:24:1" } ], - "id": 174, + "id": 177, "name": "ExpressionStatement", - "src": "1376:24:1" + "src": "1414:24:1" }, { - "id": 175, + "id": 178, "name": "PlaceholderStatement", - "src": "1406:1:1" + "src": "1444:1:1" } ], - "id": 176, + "id": 179, "name": "Block", - "src": "1370:42:1" + "src": "1408:42:1" } ], - "id": 177, + "id": 180, "name": "ModifierDefinition", - "src": "1335:77:1" + "src": "1373:77:1" }, { "attributes": { @@ -1892,7 +1962,7 @@ "isConstructor": false, "name": "start", "payable": true, - "scope": 480, + "scope": 483, "stateMutability": "payable", "superFunction": null, "visibility": "external" @@ -1905,9 +1975,9 @@ ] }, "children": [], - "id": 178, + "id": 181, "name": "ParameterList", - "src": "1430:2:1" + "src": "1468:2:1" }, { "attributes": { @@ -1916,9 +1986,9 @@ ] }, "children": [], - "id": 185, + "id": 188, "name": "ParameterList", - "src": "1488:0:1" + "src": "1526:0:1" }, { "attributes": { @@ -1933,18 +2003,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 165, + "referencedDeclaration": 168, "type": "modifier ()", "value": "onlyClient" }, - "id": 179, + "id": 182, "name": "Identifier", - "src": "1450:10:1" + "src": "1488:10:1" } ], - "id": 180, + "id": 183, "name": "ModifierInvocation", - "src": "1450:10:1" + "src": "1488:10:1" }, { "children": [ @@ -1954,13 +2024,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 177, + "referencedDeclaration": 180, "type": "modifier (enum Project.State)", "value": "onlyAtState" }, - "id": 181, + "id": 184, "name": "Identifier", - "src": "1461:11:1" + "src": "1499:11:1" }, { "attributes": { @@ -1984,19 +2054,19 @@ "type": "type(enum Project.State)", "value": "State" }, - "id": 182, + "id": 185, "name": "Identifier", - "src": "1473:5:1" + "src": "1511:5:1" } ], - "id": 183, + "id": 186, "name": "MemberAccess", - "src": "1473:13:1" + "src": "1511:13:1" } ], - "id": 184, + "id": 187, "name": "ModifierInvocation", - "src": "1461:26:1" + "src": "1499:26:1" }, { "children": [ @@ -2019,13 +2089,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 71, + "referencedDeclaration": 72, "type": "enum Project.State", "value": "state" }, - "id": 186, + "id": 189, "name": "Identifier", - "src": "1562:5:1" + "src": "1600:5:1" }, { "attributes": { @@ -2049,24 +2119,24 @@ "type": "type(enum Project.State)", "value": "State" }, - "id": 187, + "id": 190, "name": "Identifier", - "src": "1570:5:1" + "src": "1608:5:1" } ], - "id": 188, + "id": 191, "name": "MemberAccess", - "src": "1570:12:1" + "src": "1608:12:1" } ], - "id": 189, + "id": 192, "name": "Assignment", - "src": "1562:20:1" + "src": "1600:20:1" } ], - "id": 190, + "id": 193, "name": "ExpressionStatement", - "src": "1562:20:1" + "src": "1600:20:1" }, { "children": [ @@ -2087,13 +2157,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 95, + "referencedDeclaration": 98, "type": "uint256", "value": "contractorCredit" }, - "id": 191, + "id": 194, "name": "Identifier", - "src": "1588:16:1" + "src": "1626:16:1" }, { "attributes": { @@ -2121,28 +2191,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 250, + "referencedDeclaration": 253, "type": "function () view returns (uint256)", "value": "getPrepay" }, - "id": 192, + "id": 195, "name": "Identifier", - "src": "1607:9:1" + "src": "1645:9:1" } ], - "id": 193, + "id": 196, "name": "FunctionCall", - "src": "1607:11:1" + "src": "1645:11:1" } ], - "id": 194, + "id": 197, "name": "Assignment", - "src": "1588:30:1" + "src": "1626:30:1" } ], - "id": 195, + "id": 198, "name": "ExpressionStatement", - "src": "1588:30:1" + "src": "1626:30:1" }, { "children": [ @@ -2163,13 +2233,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 90, + "referencedDeclaration": 93, "type": "uint256", "value": "executionDate" }, - "id": 196, + "id": 199, "name": "Identifier", - "src": "1624:13:1" + "src": "1662:13:1" }, { "attributes": { @@ -2177,23 +2247,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 494, + "referencedDeclaration": 497, "type": "uint256", "value": "now" }, - "id": 197, + "id": 200, "name": "Identifier", - "src": "1640:3:1" + "src": "1678:3:1" } ], - "id": 198, + "id": 201, "name": "Assignment", - "src": "1624:19:1" + "src": "1662:19:1" } ], - "id": 199, + "id": 202, "name": "ExpressionStatement", - "src": "1624:19:1" + "src": "1662:19:1" }, { "children": [ @@ -2214,13 +2284,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 88, + "referencedDeclaration": 91, "type": "uint256", "value": "lastActivityDate" }, - "id": 200, + "id": 203, "name": "Identifier", - "src": "1649:16:1" + "src": "1687:16:1" }, { "attributes": { @@ -2228,33 +2298,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 494, + "referencedDeclaration": 497, "type": "uint256", "value": "now" }, - "id": 201, + "id": 204, "name": "Identifier", - "src": "1668:3:1" + "src": "1706:3:1" } ], - "id": 202, + "id": 205, "name": "Assignment", - "src": "1649:22:1" + "src": "1687:22:1" } ], - "id": 203, + "id": 206, "name": "ExpressionStatement", - "src": "1649:22:1" + "src": "1687:22:1" } ], - "id": 204, + "id": 207, "name": "Block", - "src": "1488:188:1" + "src": "1526:188:1" } ], - "id": 205, + "id": 208, "name": "FunctionDefinition", - "src": "1416:260:1" + "src": "1454:260:1" }, { "attributes": { @@ -2266,7 +2336,7 @@ ], "name": "getRole", "payable": false, - "scope": 480, + "scope": 483, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -2279,9 +2349,9 @@ ] }, "children": [], - "id": 206, + "id": 209, "name": "ParameterList", - "src": "1696:2:1" + "src": "1734:2:1" }, { "children": [ @@ -2289,7 +2359,7 @@ "attributes": { "constant": false, "name": "", - "scope": 232, + "scope": 235, "stateVariable": false, "storageLocation": "default", "type": "enum Project.Role", @@ -2304,19 +2374,19 @@ "referencedDeclaration": 67, "type": "enum Project.Role" }, - "id": 207, + "id": 210, "name": "UserDefinedTypeName", - "src": "1720:4:1" + "src": "1758:4:1" } ], - "id": 208, + "id": 211, "name": "VariableDeclaration", - "src": "1720:4:1" + "src": "1758:4:1" } ], - "id": 209, + "id": 212, "name": "ParameterList", - "src": "1719:6:1" + "src": "1757:6:1" }, { "children": [ @@ -2358,18 +2428,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 492, + "referencedDeclaration": 495, "type": "msg", "value": "msg" }, - "id": 210, + "id": 213, "name": "Identifier", - "src": "1736:3:1" + "src": "1774:3:1" } ], - "id": 211, + "id": 214, "name": "MemberAccess", - "src": "1736:10:1" + "src": "1774:10:1" }, { "attributes": { @@ -2377,24 +2447,24 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 73, + "referencedDeclaration": 76, "type": "address", "value": "clientAddress" }, - "id": 212, + "id": 215, "name": "Identifier", - "src": "1750:13:1" + "src": "1788:13:1" } ], - "id": 213, + "id": 216, "name": "BinaryOperation", - "src": "1736:27:1" + "src": "1774:27:1" }, { "children": [ { "attributes": { - "functionReturnParameters": 209 + "functionReturnParameters": 212 }, "children": [ { @@ -2419,29 +2489,29 @@ "type": "type(enum Project.Role)", "value": "Role" }, - "id": 214, + "id": 217, "name": "Identifier", - "src": "1780:4:1" + "src": "1818:4:1" } ], - "id": 215, + "id": 218, "name": "MemberAccess", - "src": "1780:11:1" + "src": "1818:11:1" } ], - "id": 216, + "id": 219, "name": "Return", - "src": "1773:18:1" + "src": "1811:18:1" } ], - "id": 217, + "id": 220, "name": "Block", - "src": "1765:33:1" + "src": "1803:33:1" } ], - "id": 218, + "id": 221, "name": "IfStatement", - "src": "1732:66:1" + "src": "1770:66:1" }, { "attributes": { @@ -2481,18 +2551,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 492, + "referencedDeclaration": 495, "type": "msg", "value": "msg" }, - "id": 219, + "id": 222, "name": "Identifier", - "src": "1807:3:1" + "src": "1845:3:1" } ], - "id": 220, + "id": 223, "name": "MemberAccess", - "src": "1807:10:1" + "src": "1845:10:1" }, { "attributes": { @@ -2500,24 +2570,24 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 75, + "referencedDeclaration": 78, "type": "address", "value": "contractorAddress" }, - "id": 221, + "id": 224, "name": "Identifier", - "src": "1821:17:1" + "src": "1859:17:1" } ], - "id": 222, + "id": 225, "name": "BinaryOperation", - "src": "1807:31:1" + "src": "1845:31:1" }, { "children": [ { "attributes": { - "functionReturnParameters": 209 + "functionReturnParameters": 212 }, "children": [ { @@ -2542,33 +2612,33 @@ "type": "type(enum Project.Role)", "value": "Role" }, - "id": 223, + "id": 226, "name": "Identifier", - "src": "1855:4:1" + "src": "1893:4:1" } ], - "id": 224, + "id": 227, "name": "MemberAccess", - "src": "1855:15:1" + "src": "1893:15:1" } ], - "id": 225, + "id": 228, "name": "Return", - "src": "1848:22:1" + "src": "1886:22:1" } ], - "id": 226, + "id": 229, "name": "Block", - "src": "1840:37:1" + "src": "1878:37:1" } ], - "id": 227, + "id": 230, "name": "IfStatement", - "src": "1803:74:1" + "src": "1841:74:1" }, { "attributes": { - "functionReturnParameters": 209 + "functionReturnParameters": 212 }, "children": [ { @@ -2593,29 +2663,29 @@ "type": "type(enum Project.Role)", "value": "Role" }, - "id": 228, + "id": 231, "name": "Identifier", - "src": "1889:4:1" + "src": "1927:4:1" } ], - "id": 229, + "id": 232, "name": "MemberAccess", - "src": "1889:13:1" + "src": "1927:13:1" } ], - "id": 230, + "id": 233, "name": "Return", - "src": "1882:20:1" + "src": "1920:20:1" } ], - "id": 231, + "id": 234, "name": "Block", - "src": "1726:181:1" + "src": "1764:181:1" } ], - "id": 232, + "id": 235, "name": "FunctionDefinition", - "src": "1680:227:1" + "src": "1718:227:1" }, { "attributes": { @@ -2627,7 +2697,7 @@ ], "name": "getPrepay", "payable": false, - "scope": 480, + "scope": 483, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -2640,9 +2710,9 @@ ] }, "children": [], - "id": 233, + "id": 236, "name": "ParameterList", - "src": "1929:2:1" + "src": "1967:2:1" }, { "children": [ @@ -2650,7 +2720,7 @@ "attributes": { "constant": false, "name": "", - "scope": 250, + "scope": 253, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2663,26 +2733,26 @@ "name": "uint256", "type": "uint256" }, - "id": 234, + "id": 237, "name": "ElementaryTypeName", - "src": "1953:7:1" + "src": "1991:7:1" } ], - "id": 235, + "id": 238, "name": "VariableDeclaration", - "src": "1953:7:1" + "src": "1991:7:1" } ], - "id": 236, + "id": 239, "name": "ParameterList", - "src": "1952:9:1" + "src": "1990:9:1" }, { "children": [ { "attributes": { "assignments": [ - 238 + 241 ] }, "children": [ @@ -2690,7 +2760,7 @@ "attributes": { "constant": false, "name": "priceCap", - "scope": 250, + "scope": 253, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2703,14 +2773,14 @@ "name": "uint256", "type": "uint256" }, - "id": 237, + "id": 240, "name": "ElementaryTypeName", - "src": "1968:7:1" + "src": "2006:7:1" } ], - "id": 238, + "id": 241, "name": "VariableDeclaration", - "src": "1968:16:1" + "src": "2006:16:1" }, { "attributes": { @@ -2738,27 +2808,27 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 263, + "referencedDeclaration": 266, "type": "function () view returns (uint256)", "value": "getPriceCap" }, - "id": 239, + "id": 242, "name": "Identifier", - "src": "1987:11:1" + "src": "2025:11:1" } ], - "id": 240, + "id": 243, "name": "FunctionCall", - "src": "1987:13:1" + "src": "2025:13:1" } ], - "id": 241, + "id": 244, "name": "VariableDeclarationStatement", - "src": "1968:32:1" + "src": "2006:32:1" }, { "attributes": { - "functionReturnParameters": 236 + "functionReturnParameters": 239 }, "children": [ { @@ -2808,13 +2878,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 238, + "referencedDeclaration": 241, "type": "uint256", "value": "priceCap" }, - "id": 242, + "id": 245, "name": "Identifier", - "src": "2014:8:1" + "src": "2052:8:1" }, { "attributes": { @@ -2822,23 +2892,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 77, + "referencedDeclaration": 80, "type": "uint32", "value": "prepayFractionThousands" }, - "id": 243, + "id": 246, "name": "Identifier", - "src": "2025:23:1" + "src": "2063:23:1" } ], - "id": 244, + "id": 247, "name": "BinaryOperation", - "src": "2014:34:1" + "src": "2052:34:1" } ], - "id": 245, + "id": 248, "name": "TupleExpression", - "src": "2013:36:1" + "src": "2051:36:1" }, { "attributes": { @@ -2853,29 +2923,29 @@ "type": "int_const 1000", "value": "1000" }, - "id": 246, + "id": 249, "name": "Literal", - "src": "2052:4:1" + "src": "2090:4:1" } ], - "id": 247, + "id": 250, "name": "BinaryOperation", - "src": "2013:43:1" + "src": "2051:43:1" } ], - "id": 248, + "id": 251, "name": "Return", - "src": "2006:50:1" + "src": "2044:50:1" } ], - "id": 249, + "id": 252, "name": "Block", - "src": "1962:99:1" + "src": "2000:99:1" } ], - "id": 250, + "id": 253, "name": "FunctionDefinition", - "src": "1911:150:1" + "src": "1949:150:1" }, { "attributes": { @@ -2887,7 +2957,7 @@ ], "name": "getPriceCap", "payable": false, - "scope": 480, + "scope": 483, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -2900,9 +2970,9 @@ ] }, "children": [], - "id": 251, + "id": 254, "name": "ParameterList", - "src": "2085:2:1" + "src": "2123:2:1" }, { "children": [ @@ -2910,7 +2980,7 @@ "attributes": { "constant": false, "name": "", - "scope": 263, + "scope": 266, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -2923,25 +2993,25 @@ "name": "uint256", "type": "uint256" }, - "id": 252, + "id": 255, "name": "ElementaryTypeName", - "src": "2109:7:1" + "src": "2147:7:1" } ], - "id": 253, + "id": 256, "name": "VariableDeclaration", - "src": "2109:7:1" + "src": "2147:7:1" } ], - "id": 254, + "id": 257, "name": "ParameterList", - "src": "2108:9:1" + "src": "2146:9:1" }, { "children": [ { "attributes": { - "functionReturnParameters": 254 + "functionReturnParameters": 257 }, "children": [ { @@ -2991,13 +3061,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 85, + "referencedDeclaration": 88, "type": "uint256", "value": "hourlyRate" }, - "id": 255, + "id": 258, "name": "Identifier", - "src": "2132:10:1" + "src": "2170:10:1" }, { "attributes": { @@ -3005,23 +3075,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 79, + "referencedDeclaration": 82, "type": "uint32", "value": "timeCapMinutes" }, - "id": 256, + "id": 259, "name": "Identifier", - "src": "2145:14:1" + "src": "2183:14:1" } ], - "id": 257, + "id": 260, "name": "BinaryOperation", - "src": "2132:27:1" + "src": "2170:27:1" } ], - "id": 258, + "id": 261, "name": "TupleExpression", - "src": "2131:29:1" + "src": "2169:29:1" }, { "attributes": { @@ -3036,29 +3106,29 @@ "type": "int_const 60", "value": "60" }, - "id": 259, + "id": 262, "name": "Literal", - "src": "2163:2:1" + "src": "2201:2:1" } ], - "id": 260, + "id": 263, "name": "BinaryOperation", - "src": "2131:34:1" + "src": "2169:34:1" } ], - "id": 261, + "id": 264, "name": "Return", - "src": "2124:41:1" + "src": "2162:41:1" } ], - "id": 262, + "id": 265, "name": "Block", - "src": "2118:52:1" + "src": "2156:52:1" } ], - "id": 263, + "id": 266, "name": "FunctionDefinition", - "src": "2065:105:1" + "src": "2103:105:1" }, { "attributes": { @@ -3070,7 +3140,7 @@ ], "name": "availableForWithdraw", "payable": false, - "scope": 480, + "scope": 483, "stateMutability": "view", "superFunction": null, "visibility": "public" @@ -3083,9 +3153,9 @@ ] }, "children": [], - "id": 264, + "id": 267, "name": "ParameterList", - "src": "2203:2:1" + "src": "2241:2:1" }, { "children": [ @@ -3093,7 +3163,7 @@ "attributes": { "constant": false, "name": "", - "scope": 332, + "scope": 335, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -3106,19 +3176,19 @@ "name": "uint", "type": "uint256" }, - "id": 265, + "id": 268, "name": "ElementaryTypeName", - "src": "2227:4:1" + "src": "2265:4:1" } ], - "id": 266, + "id": 269, "name": "VariableDeclaration", - "src": "2227:4:1" + "src": "2265:4:1" } ], - "id": 267, + "id": 270, "name": "ParameterList", - "src": "2226:6:1" + "src": "2264:6:1" }, { "children": [ @@ -3148,13 +3218,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 71, + "referencedDeclaration": 72, "type": "enum Project.State", "value": "state" }, - "id": 268, + "id": 271, "name": "Identifier", - "src": "2243:5:1" + "src": "2281:5:1" }, { "attributes": { @@ -3178,25 +3248,25 @@ "type": "type(enum Project.State)", "value": "State" }, - "id": 269, + "id": 272, "name": "Identifier", - "src": "2252:5:1" + "src": "2290:5:1" } ], - "id": 270, + "id": 273, "name": "MemberAccess", - "src": "2252:13:1" + "src": "2290:13:1" } ], - "id": 271, + "id": 274, "name": "BinaryOperation", - "src": "2243:22:1" + "src": "2281:22:1" }, { "children": [ { "attributes": { - "functionReturnParameters": 267 + "functionReturnParameters": 270 }, "children": [ { @@ -3212,29 +3282,29 @@ "type": "int_const 0", "value": "0" }, - "id": 272, + "id": 275, "name": "Literal", - "src": "2282:1:1" + "src": "2320:1:1" } ], - "id": 273, + "id": 276, "name": "Return", - "src": "2275:8:1" + "src": "2313:8:1" } ], - "id": 274, + "id": 277, "name": "Block", - "src": "2267:23:1" + "src": "2305:23:1" } ], - "id": 275, + "id": 278, "name": "IfStatement", - "src": "2239:51:1" + "src": "2277:51:1" }, { "attributes": { "assignments": [ - 277 + 280 ] }, "children": [ @@ -3242,7 +3312,7 @@ "attributes": { "constant": false, "name": "role", - "scope": 332, + "scope": 335, "stateVariable": false, "storageLocation": "default", "type": "enum Project.Role", @@ -3257,14 +3327,14 @@ "referencedDeclaration": 67, "type": "enum Project.Role" }, - "id": 276, + "id": 279, "name": "UserDefinedTypeName", - "src": "2296:4:1" + "src": "2334:4:1" } ], - "id": 277, + "id": 280, "name": "VariableDeclaration", - "src": "2296:9:1" + "src": "2334:9:1" }, { "attributes": { @@ -3292,23 +3362,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 232, + "referencedDeclaration": 235, "type": "function () view returns (enum Project.Role)", "value": "getRole" }, - "id": 278, + "id": 281, "name": "Identifier", - "src": "2308:7:1" + "src": "2346:7:1" } ], - "id": 279, + "id": 282, "name": "FunctionCall", - "src": "2308:9:1" + "src": "2346:9:1" } ], - "id": 280, + "id": 283, "name": "VariableDeclarationStatement", - "src": "2296:21:1" + "src": "2334:21:1" }, { "attributes": { @@ -3336,13 +3406,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 277, + "referencedDeclaration": 280, "type": "enum Project.Role", "value": "role" }, - "id": 281, + "id": 284, "name": "Identifier", - "src": "2328:4:1" + "src": "2366:4:1" }, { "attributes": { @@ -3366,25 +3436,25 @@ "type": "type(enum Project.Role)", "value": "Role" }, - "id": 282, + "id": 285, "name": "Identifier", - "src": "2336:4:1" + "src": "2374:4:1" } ], - "id": 283, + "id": 286, "name": "MemberAccess", - "src": "2336:13:1" + "src": "2374:13:1" } ], - "id": 284, + "id": 287, "name": "BinaryOperation", - "src": "2328:21:1" + "src": "2366:21:1" }, { "children": [ { "attributes": { - "functionReturnParameters": 267 + "functionReturnParameters": 270 }, "children": [ { @@ -3400,24 +3470,24 @@ "type": "int_const 0", "value": "0" }, - "id": 285, + "id": 288, "name": "Literal", - "src": "2366:1:1" + "src": "2404:1:1" } ], - "id": 286, + "id": 289, "name": "Return", - "src": "2359:8:1" + "src": "2397:8:1" } ], - "id": 287, + "id": 290, "name": "Block", - "src": "2351:23:1" + "src": "2389:23:1" } ], - "id": 288, + "id": 291, "name": "IfStatement", - "src": "2324:50:1" + "src": "2362:50:1" }, { "children": [ @@ -3447,13 +3517,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 483, + "referencedDeclaration": 486, "type": "function (bool) pure", "value": "assert" }, - "id": 289, + "id": 292, "name": "Identifier", - "src": "2380:6:1" + "src": "2418:6:1" }, { "attributes": { @@ -3476,13 +3546,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 95, + "referencedDeclaration": 98, "type": "uint256", "value": "contractorCredit" }, - "id": 290, + "id": 293, "name": "Identifier", - "src": "2387:16:1" + "src": "2425:16:1" }, { "attributes": { @@ -3490,33 +3560,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 98, + "referencedDeclaration": 101, "type": "uint256", "value": "contractorDebit" }, - "id": 291, + "id": 294, "name": "Identifier", - "src": "2407:15:1" + "src": "2445:15:1" } ], - "id": 292, + "id": 295, "name": "BinaryOperation", - "src": "2387:35:1" + "src": "2425:35:1" } ], - "id": 293, + "id": 296, "name": "FunctionCall", - "src": "2380:43:1" + "src": "2418:43:1" } ], - "id": 294, + "id": 297, "name": "ExpressionStatement", - "src": "2380:43:1" + "src": "2418:43:1" }, { "attributes": { "assignments": [ - 296 + 299 ] }, "children": [ @@ -3524,7 +3594,7 @@ "attributes": { "constant": false, "name": "availableToContractor", - "scope": 332, + "scope": 335, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -3537,14 +3607,14 @@ "name": "uint256", "type": "uint256" }, - "id": 295, + "id": 298, "name": "ElementaryTypeName", - "src": "2429:7:1" + "src": "2467:7:1" } ], - "id": 296, + "id": 299, "name": "VariableDeclaration", - "src": "2429:29:1" + "src": "2467:29:1" }, { "attributes": { @@ -3567,13 +3637,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 95, + "referencedDeclaration": 98, "type": "uint256", "value": "contractorCredit" }, - "id": 297, + "id": 300, "name": "Identifier", - "src": "2461:16:1" + "src": "2499:16:1" }, { "attributes": { @@ -3581,23 +3651,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 98, + "referencedDeclaration": 101, "type": "uint256", "value": "contractorDebit" }, - "id": 298, + "id": 301, "name": "Identifier", - "src": "2480:15:1" + "src": "2518:15:1" } ], - "id": 299, + "id": 302, "name": "BinaryOperation", - "src": "2461:34:1" + "src": "2499:34:1" } ], - "id": 300, + "id": 303, "name": "VariableDeclarationStatement", - "src": "2429:66:1" + "src": "2467:66:1" }, { "attributes": { @@ -3625,13 +3695,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 277, + "referencedDeclaration": 280, "type": "enum Project.Role", "value": "role" }, - "id": 301, + "id": 304, "name": "Identifier", - "src": "2506:4:1" + "src": "2544:4:1" }, { "attributes": { @@ -3655,25 +3725,25 @@ "type": "type(enum Project.Role)", "value": "Role" }, - "id": 302, + "id": 305, "name": "Identifier", - "src": "2514:4:1" + "src": "2552:4:1" } ], - "id": 303, + "id": 306, "name": "MemberAccess", - "src": "2514:15:1" + "src": "2552:15:1" } ], - "id": 304, + "id": 307, "name": "BinaryOperation", - "src": "2506:23:1" + "src": "2544:23:1" }, { "children": [ { "attributes": { - "functionReturnParameters": 267 + "functionReturnParameters": 270 }, "children": [ { @@ -3682,28 +3752,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 296, + "referencedDeclaration": 299, "type": "uint256", "value": "availableToContractor" }, - "id": 305, + "id": 308, "name": "Identifier", - "src": "2546:21:1" + "src": "2584:21:1" } ], - "id": 306, + "id": 309, "name": "Return", - "src": "2539:28:1" + "src": "2577:28:1" } ], - "id": 307, + "id": 310, "name": "Block", - "src": "2531:43:1" + "src": "2569:43:1" } ], - "id": 308, + "id": 311, "name": "IfStatement", - "src": "2502:72:1" + "src": "2540:72:1" }, { "attributes": { @@ -3731,13 +3801,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 277, + "referencedDeclaration": 280, "type": "enum Project.Role", "value": "role" }, - "id": 309, + "id": 312, "name": "Identifier", - "src": "2584:4:1" + "src": "2622:4:1" }, { "attributes": { @@ -3761,19 +3831,19 @@ "type": "type(enum Project.Role)", "value": "Role" }, - "id": 310, + "id": 313, "name": "Identifier", - "src": "2592:4:1" + "src": "2630:4:1" } ], - "id": 311, + "id": 314, "name": "MemberAccess", - "src": "2592:11:1" + "src": "2630:11:1" } ], - "id": 312, + "id": 315, "name": "BinaryOperation", - "src": "2584:19:1" + "src": "2622:19:1" }, { "children": [ @@ -3805,13 +3875,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 483, + "referencedDeclaration": 486, "type": "function (bool) pure", "value": "assert" }, - "id": 313, + "id": 316, "name": "Identifier", - "src": "2613:6:1" + "src": "2651:6:1" }, { "attributes": { @@ -3846,18 +3916,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 505, + "referencedDeclaration": 508, "type": "contract Project", "value": "this" }, - "id": 314, + "id": 317, "name": "Identifier", - "src": "2620:4:1" + "src": "2658:4:1" } ], - "id": 315, + "id": 318, "name": "MemberAccess", - "src": "2620:12:1" + "src": "2658:12:1" }, { "attributes": { @@ -3865,32 +3935,32 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 296, + "referencedDeclaration": 299, "type": "uint256", "value": "availableToContractor" }, - "id": 316, + "id": 319, "name": "Identifier", - "src": "2636:21:1" + "src": "2674:21:1" } ], - "id": 317, + "id": 320, "name": "BinaryOperation", - "src": "2620:37:1" + "src": "2658:37:1" } ], - "id": 318, + "id": 321, "name": "FunctionCall", - "src": "2613:45:1" + "src": "2651:45:1" } ], - "id": 319, + "id": 322, "name": "ExpressionStatement", - "src": "2613:45:1" + "src": "2651:45:1" }, { "attributes": { - "functionReturnParameters": 267 + "functionReturnParameters": 270 }, "children": [ { @@ -3926,18 +3996,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 505, + "referencedDeclaration": 508, "type": "contract Project", "value": "this" }, - "id": 320, + "id": 323, "name": "Identifier", - "src": "2673:4:1" + "src": "2711:4:1" } ], - "id": 321, + "id": 324, "name": "MemberAccess", - "src": "2673:12:1" + "src": "2711:12:1" }, { "attributes": { @@ -3945,33 +4015,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 296, + "referencedDeclaration": 299, "type": "uint256", "value": "availableToContractor" }, - "id": 322, + "id": 325, "name": "Identifier", - "src": "2688:21:1" + "src": "2726:21:1" } ], - "id": 323, + "id": 326, "name": "BinaryOperation", - "src": "2673:36:1" + "src": "2711:36:1" } ], - "id": 324, + "id": 327, "name": "Return", - "src": "2666:43:1" + "src": "2704:43:1" } ], - "id": 325, + "id": 328, "name": "Block", - "src": "2605:111:1" + "src": "2643:111:1" } ], - "id": 326, + "id": 329, "name": "IfStatement", - "src": "2580:136:1" + "src": "2618:136:1" }, { "children": [ @@ -4001,13 +4071,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 483, + "referencedDeclaration": 486, "type": "function (bool) pure", "value": "assert" }, - "id": 327, + "id": 330, "name": "Identifier", - "src": "2722:6:1" + "src": "2760:6:1" }, { "attributes": { @@ -4022,29 +4092,29 @@ "type": "bool", "value": "false" }, - "id": 328, + "id": 331, "name": "Literal", - "src": "2729:5:1" + "src": "2767:5:1" } ], - "id": 329, + "id": 332, "name": "FunctionCall", - "src": "2722:13:1" + "src": "2760:13:1" } ], - "id": 330, + "id": 333, "name": "ExpressionStatement", - "src": "2722:13:1" + "src": "2760:13:1" } ], - "id": 331, + "id": 334, "name": "Block", - "src": "2233:507:1" + "src": "2271:507:1" } ], - "id": 332, + "id": 335, "name": "FunctionDefinition", - "src": "2174:566:1" + "src": "2212:566:1" }, { "attributes": { @@ -4053,7 +4123,7 @@ "isConstructor": false, "name": "setBillableTime", "payable": false, - "scope": 480, + "scope": 483, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -4065,7 +4135,7 @@ "attributes": { "constant": false, "name": "timeMinutes", - "scope": 358, + "scope": 361, "stateVariable": false, "storageLocation": "default", "type": "uint32", @@ -4078,20 +4148,20 @@ "name": "uint32", "type": "uint32" }, - "id": 333, + "id": 336, "name": "ElementaryTypeName", - "src": "2769:6:1" + "src": "2807:6:1" } ], - "id": 334, + "id": 337, "name": "VariableDeclaration", - "src": "2769:18:1" + "src": "2807:18:1" }, { "attributes": { "constant": false, "name": "comment", - "scope": 358, + "scope": 361, "stateVariable": false, "storageLocation": "default", "type": "string calldata", @@ -4104,19 +4174,19 @@ "name": "string", "type": "string storage pointer" }, - "id": 335, + "id": 338, "name": "ElementaryTypeName", - "src": "2789:6:1" + "src": "2827:6:1" } ], - "id": 336, + "id": 339, "name": "VariableDeclaration", - "src": "2789:14:1" + "src": "2827:14:1" } ], - "id": 337, + "id": 340, "name": "ParameterList", - "src": "2768:36:1" + "src": "2806:36:1" }, { "attributes": { @@ -4125,9 +4195,9 @@ ] }, "children": [], - "id": 344, + "id": 347, "name": "ParameterList", - "src": "2861:0:1" + "src": "2899:0:1" }, { "attributes": { @@ -4142,18 +4212,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 154, + "referencedDeclaration": 157, "type": "modifier ()", "value": "onlyContractor" }, - "id": 338, + "id": 341, "name": "Identifier", - "src": "2809:14:1" + "src": "2847:14:1" } ], - "id": 339, + "id": 342, "name": "ModifierInvocation", - "src": "2809:14:1" + "src": "2847:14:1" }, { "children": [ @@ -4163,13 +4233,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 177, + "referencedDeclaration": 180, "type": "modifier (enum Project.State)", "value": "onlyAtState" }, - "id": 340, + "id": 343, "name": "Identifier", - "src": "2824:11:1" + "src": "2862:11:1" }, { "attributes": { @@ -4193,19 +4263,19 @@ "type": "type(enum Project.State)", "value": "State" }, - "id": 341, + "id": 344, "name": "Identifier", - "src": "2836:5:1" + "src": "2874:5:1" } ], - "id": 342, + "id": 345, "name": "MemberAccess", - "src": "2836:12:1" + "src": "2874:12:1" } ], - "id": 343, + "id": 346, "name": "ModifierInvocation", - "src": "2824:25:1" + "src": "2862:25:1" }, { "children": [ @@ -4228,13 +4298,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 81, + "referencedDeclaration": 84, "type": "uint32", "value": "minutesReported" }, - "id": 345, + "id": 348, "name": "Identifier", - "src": "2867:15:1" + "src": "2905:15:1" }, { "attributes": { @@ -4242,23 +4312,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 334, + "referencedDeclaration": 337, "type": "uint32", "value": "timeMinutes" }, - "id": 346, + "id": 349, "name": "Identifier", - "src": "2885:11:1" + "src": "2923:11:1" } ], - "id": 347, + "id": 350, "name": "Assignment", - "src": "2867:29:1" + "src": "2905:29:1" } ], - "id": 348, + "id": 351, "name": "ExpressionStatement", - "src": "2867:29:1" + "src": "2905:29:1" }, { "children": [ @@ -4279,13 +4349,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 83, + "referencedDeclaration": 86, "type": "string storage ref", "value": "contractorComment" }, - "id": 349, + "id": 352, "name": "Identifier", - "src": "2902:17:1" + "src": "2940:17:1" }, { "attributes": { @@ -4293,23 +4363,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 336, + "referencedDeclaration": 339, "type": "string calldata", "value": "comment" }, - "id": 350, + "id": 353, "name": "Identifier", - "src": "2922:7:1" + "src": "2960:7:1" } ], - "id": 351, + "id": 354, "name": "Assignment", - "src": "2902:27:1" + "src": "2940:27:1" } ], - "id": 352, + "id": 355, "name": "ExpressionStatement", - "src": "2902:27:1" + "src": "2940:27:1" }, { "children": [ @@ -4330,13 +4400,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 88, + "referencedDeclaration": 91, "type": "uint256", "value": "lastActivityDate" }, - "id": 353, + "id": 356, "name": "Identifier", - "src": "2935:16:1" + "src": "2973:16:1" }, { "attributes": { @@ -4344,33 +4414,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 494, + "referencedDeclaration": 497, "type": "uint256", "value": "now" }, - "id": 354, + "id": 357, "name": "Identifier", - "src": "2954:3:1" + "src": "2992:3:1" } ], - "id": 355, + "id": 358, "name": "Assignment", - "src": "2935:22:1" + "src": "2973:22:1" } ], - "id": 356, + "id": 359, "name": "ExpressionStatement", - "src": "2935:22:1" + "src": "2973:22:1" } ], - "id": 357, + "id": 360, "name": "Block", - "src": "2861:101:1" + "src": "2899:101:1" } ], - "id": 358, + "id": 361, "name": "FunctionDefinition", - "src": "2744:218:1" + "src": "2782:218:1" }, { "attributes": { @@ -4382,7 +4452,7 @@ ], "name": "approve", "payable": false, - "scope": 480, + "scope": 483, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -4395,9 +4465,9 @@ ] }, "children": [], - "id": 359, + "id": 362, "name": "ParameterList", - "src": "2982:2:1" + "src": "3020:2:1" }, { "attributes": { @@ -4406,9 +4476,9 @@ ] }, "children": [], - "id": 360, + "id": 363, "name": "ParameterList", - "src": "2994:0:1" + "src": "3032:0:1" }, { "children": [ @@ -4431,13 +4501,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 71, + "referencedDeclaration": 72, "type": "enum Project.State", "value": "state" }, - "id": 361, + "id": 364, "name": "Identifier", - "src": "3000:5:1" + "src": "3038:5:1" }, { "attributes": { @@ -4461,24 +4531,24 @@ "type": "type(enum Project.State)", "value": "State" }, - "id": 362, + "id": 365, "name": "Identifier", - "src": "3008:5:1" + "src": "3046:5:1" } ], - "id": 363, + "id": 366, "name": "MemberAccess", - "src": "3008:14:1" + "src": "3046:14:1" } ], - "id": 364, + "id": 367, "name": "Assignment", - "src": "3000:22:1" + "src": "3038:22:1" } ], - "id": 365, + "id": 368, "name": "ExpressionStatement", - "src": "3000:22:1" + "src": "3038:22:1" }, { "children": [ @@ -4499,13 +4569,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 92, + "referencedDeclaration": 95, "type": "uint256", "value": "endDate" }, - "id": 366, + "id": 369, "name": "Identifier", - "src": "3028:7:1" + "src": "3066:7:1" }, { "attributes": { @@ -4513,23 +4583,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 494, + "referencedDeclaration": 497, "type": "uint256", "value": "now" }, - "id": 367, + "id": 370, "name": "Identifier", - "src": "3038:3:1" + "src": "3076:3:1" } ], - "id": 368, + "id": 371, "name": "Assignment", - "src": "3028:13:1" + "src": "3066:13:1" } ], - "id": 369, + "id": 372, "name": "ExpressionStatement", - "src": "3028:13:1" + "src": "3066:13:1" }, { "children": [ @@ -4550,13 +4620,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 88, + "referencedDeclaration": 91, "type": "uint256", "value": "lastActivityDate" }, - "id": 370, + "id": 373, "name": "Identifier", - "src": "3047:16:1" + "src": "3085:16:1" }, { "attributes": { @@ -4564,28 +4634,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 494, + "referencedDeclaration": 497, "type": "uint256", "value": "now" }, - "id": 371, + "id": 374, "name": "Identifier", - "src": "3066:3:1" + "src": "3104:3:1" } ], - "id": 372, + "id": 375, "name": "Assignment", - "src": "3047:22:1" + "src": "3085:22:1" } ], - "id": 373, + "id": 376, "name": "ExpressionStatement", - "src": "3047:22:1" + "src": "3085:22:1" }, { "attributes": { "assignments": [ - 375 + 378 ] }, "children": [ @@ -4593,7 +4663,7 @@ "attributes": { "constant": false, "name": "approvedPrice", - "scope": 393, + "scope": 396, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -4606,14 +4676,14 @@ "name": "uint256", "type": "uint256" }, - "id": 374, + "id": 377, "name": "ElementaryTypeName", - "src": "3076:7:1" + "src": "3114:7:1" } ], - "id": 375, + "id": 378, "name": "VariableDeclaration", - "src": "3076:21:1" + "src": "3114:21:1" }, { "attributes": { @@ -4662,13 +4732,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 85, + "referencedDeclaration": 88, "type": "uint256", "value": "hourlyRate" }, - "id": 376, + "id": 379, "name": "Identifier", - "src": "3101:10:1" + "src": "3139:10:1" }, { "attributes": { @@ -4676,23 +4746,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 81, + "referencedDeclaration": 84, "type": "uint32", "value": "minutesReported" }, - "id": 377, + "id": 380, "name": "Identifier", - "src": "3114:15:1" + "src": "3152:15:1" } ], - "id": 378, + "id": 381, "name": "BinaryOperation", - "src": "3101:28:1" + "src": "3139:28:1" } ], - "id": 379, + "id": 382, "name": "TupleExpression", - "src": "3100:30:1" + "src": "3138:30:1" }, { "attributes": { @@ -4707,19 +4777,19 @@ "type": "int_const 60", "value": "60" }, - "id": 380, + "id": 383, "name": "Literal", - "src": "3133:2:1" + "src": "3171:2:1" } ], - "id": 381, + "id": 384, "name": "BinaryOperation", - "src": "3100:35:1" + "src": "3138:35:1" } ], - "id": 382, + "id": 385, "name": "VariableDeclarationStatement", - "src": "3076:59:1" + "src": "3114:59:1" }, { "attributes": { @@ -4747,13 +4817,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 375, + "referencedDeclaration": 378, "type": "uint256", "value": "approvedPrice" }, - "id": 383, + "id": 386, "name": "Identifier", - "src": "3145:13:1" + "src": "3183:13:1" }, { "attributes": { @@ -4761,18 +4831,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 95, + "referencedDeclaration": 98, "type": "uint256", "value": "contractorCredit" }, - "id": 384, + "id": 387, "name": "Identifier", - "src": "3161:16:1" + "src": "3199:16:1" } ], - "id": 385, + "id": 388, "name": "BinaryOperation", - "src": "3145:32:1" + "src": "3183:32:1" }, { "children": [ @@ -4795,13 +4865,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 95, + "referencedDeclaration": 98, "type": "uint256", "value": "contractorCredit" }, - "id": 386, + "id": 389, "name": "Identifier", - "src": "3187:16:1" + "src": "3225:16:1" }, { "attributes": { @@ -4809,43 +4879,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 375, + "referencedDeclaration": 378, "type": "uint256", "value": "approvedPrice" }, - "id": 387, + "id": 390, "name": "Identifier", - "src": "3206:13:1" + "src": "3244:13:1" } ], - "id": 388, + "id": 391, "name": "Assignment", - "src": "3187:32:1" + "src": "3225:32:1" } ], - "id": 389, + "id": 392, "name": "ExpressionStatement", - "src": "3187:32:1" + "src": "3225:32:1" } ], - "id": 390, + "id": 393, "name": "Block", - "src": "3179:47:1" + "src": "3217:47:1" } ], - "id": 391, + "id": 394, "name": "IfStatement", - "src": "3141:85:1" + "src": "3179:85:1" } ], - "id": 392, + "id": 395, "name": "Block", - "src": "2994:236:1" + "src": "3032:236:1" } ], - "id": 393, + "id": 396, "name": "FunctionDefinition", - "src": "2966:264:1" + "src": "3004:264:1" }, { "attributes": { @@ -4854,7 +4924,7 @@ "isConstructor": false, "name": "cancel", "payable": false, - "scope": 480, + "scope": 483, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -4867,9 +4937,9 @@ ] }, "children": [], - "id": 394, + "id": 397, "name": "ParameterList", - "src": "3249:2:1" + "src": "3287:2:1" }, { "attributes": { @@ -4878,9 +4948,9 @@ ] }, "children": [], - "id": 401, + "id": 404, "name": "ParameterList", - "src": "3298:0:1" + "src": "3336:0:1" }, { "attributes": { @@ -4895,18 +4965,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 165, + "referencedDeclaration": 168, "type": "modifier ()", "value": "onlyClient" }, - "id": 395, + "id": 398, "name": "Identifier", - "src": "3252:10:1" + "src": "3290:10:1" } ], - "id": 396, + "id": 399, "name": "ModifierInvocation", - "src": "3252:10:1" + "src": "3290:10:1" }, { "children": [ @@ -4916,13 +4986,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 177, + "referencedDeclaration": 180, "type": "modifier (enum Project.State)", "value": "onlyAtState" }, - "id": 397, + "id": 400, "name": "Identifier", - "src": "3263:11:1" + "src": "3301:11:1" }, { "attributes": { @@ -4946,19 +5016,19 @@ "type": "type(enum Project.State)", "value": "State" }, - "id": 398, + "id": 401, "name": "Identifier", - "src": "3275:5:1" + "src": "3313:5:1" } ], - "id": 399, + "id": 402, "name": "MemberAccess", - "src": "3275:12:1" + "src": "3313:12:1" } ], - "id": 400, + "id": 403, "name": "ModifierInvocation", - "src": "3263:25:1" + "src": "3301:25:1" }, { "children": [ @@ -4981,13 +5051,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 71, + "referencedDeclaration": 72, "type": "enum Project.State", "value": "state" }, - "id": 402, + "id": 405, "name": "Identifier", - "src": "3304:5:1" + "src": "3342:5:1" }, { "attributes": { @@ -5011,24 +5081,24 @@ "type": "type(enum Project.State)", "value": "State" }, - "id": 403, + "id": 406, "name": "Identifier", - "src": "3312:5:1" + "src": "3350:5:1" } ], - "id": 404, + "id": 407, "name": "MemberAccess", - "src": "3312:15:1" + "src": "3350:15:1" } ], - "id": 405, + "id": 408, "name": "Assignment", - "src": "3304:23:1" + "src": "3342:23:1" } ], - "id": 406, + "id": 409, "name": "ExpressionStatement", - "src": "3304:23:1" + "src": "3342:23:1" }, { "children": [ @@ -5049,13 +5119,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 92, + "referencedDeclaration": 95, "type": "uint256", "value": "endDate" }, - "id": 407, + "id": 410, "name": "Identifier", - "src": "3333:7:1" + "src": "3371:7:1" }, { "attributes": { @@ -5063,23 +5133,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 494, + "referencedDeclaration": 497, "type": "uint256", "value": "now" }, - "id": 408, + "id": 411, "name": "Identifier", - "src": "3343:3:1" + "src": "3381:3:1" } ], - "id": 409, + "id": 412, "name": "Assignment", - "src": "3333:13:1" + "src": "3371:13:1" } ], - "id": 410, + "id": 413, "name": "ExpressionStatement", - "src": "3333:13:1" + "src": "3371:13:1" }, { "children": [ @@ -5100,13 +5170,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 88, + "referencedDeclaration": 91, "type": "uint256", "value": "lastActivityDate" }, - "id": 411, + "id": 414, "name": "Identifier", - "src": "3352:16:1" + "src": "3390:16:1" }, { "attributes": { @@ -5114,33 +5184,33 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 494, + "referencedDeclaration": 497, "type": "uint256", "value": "now" }, - "id": 412, + "id": 415, "name": "Identifier", - "src": "3371:3:1" + "src": "3409:3:1" } ], - "id": 413, + "id": 416, "name": "Assignment", - "src": "3352:22:1" + "src": "3390:22:1" } ], - "id": 414, + "id": 417, "name": "ExpressionStatement", - "src": "3352:22:1" + "src": "3390:22:1" } ], - "id": 415, + "id": 418, "name": "Block", - "src": "3298:81:1" + "src": "3336:81:1" } ], - "id": 416, + "id": 419, "name": "FunctionDefinition", - "src": "3234:145:1" + "src": "3272:145:1" }, { "attributes": { @@ -5152,7 +5222,7 @@ ], "name": "withdraw", "payable": false, - "scope": 480, + "scope": 483, "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" @@ -5165,9 +5235,9 @@ ] }, "children": [], - "id": 417, + "id": 420, "name": "ParameterList", - "src": "3400:2:1" + "src": "3438:2:1" }, { "attributes": { @@ -5176,9 +5246,9 @@ ] }, "children": [], - "id": 418, + "id": 421, "name": "ParameterList", - "src": "3410:0:1" + "src": "3448:0:1" }, { "children": [ @@ -5201,13 +5271,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 88, + "referencedDeclaration": 91, "type": "uint256", "value": "lastActivityDate" }, - "id": 419, + "id": 422, "name": "Identifier", - "src": "3416:16:1" + "src": "3454:16:1" }, { "attributes": { @@ -5215,28 +5285,28 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 494, + "referencedDeclaration": 497, "type": "uint256", "value": "now" }, - "id": 420, + "id": 423, "name": "Identifier", - "src": "3435:3:1" + "src": "3473:3:1" } ], - "id": 421, + "id": 424, "name": "Assignment", - "src": "3416:22:1" + "src": "3454:22:1" } ], - "id": 422, + "id": 425, "name": "ExpressionStatement", - "src": "3416:22:1" + "src": "3454:22:1" }, { "attributes": { "assignments": [ - 424 + 427 ] }, "children": [ @@ -5244,7 +5314,7 @@ "attributes": { "constant": false, "name": "toBeSent", - "scope": 455, + "scope": 458, "stateVariable": false, "storageLocation": "default", "type": "uint256", @@ -5257,14 +5327,14 @@ "name": "uint256", "type": "uint256" }, - "id": 423, + "id": 426, "name": "ElementaryTypeName", - "src": "3444:7:1" + "src": "3482:7:1" } ], - "id": 424, + "id": 427, "name": "VariableDeclaration", - "src": "3444:16:1" + "src": "3482:16:1" }, { "attributes": { @@ -5292,23 +5362,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 332, + "referencedDeclaration": 335, "type": "function () view returns (uint256)", "value": "availableForWithdraw" }, - "id": 425, + "id": 428, "name": "Identifier", - "src": "3463:20:1" + "src": "3501:20:1" } ], - "id": 426, + "id": 429, "name": "FunctionCall", - "src": "3463:22:1" + "src": "3501:22:1" } ], - "id": 427, + "id": 430, "name": "VariableDeclarationStatement", - "src": "3444:41:1" + "src": "3482:41:1" }, { "attributes": { @@ -5336,13 +5406,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 424, + "referencedDeclaration": 427, "type": "uint256", "value": "toBeSent" }, - "id": 428, + "id": 431, "name": "Identifier", - "src": "3495:8:1" + "src": "3533:8:1" }, { "attributes": { @@ -5357,14 +5427,14 @@ "type": "int_const 0", "value": "0" }, - "id": 429, + "id": 432, "name": "Literal", - "src": "3506:1:1" + "src": "3544:1:1" } ], - "id": 430, + "id": 433, "name": "BinaryOperation", - "src": "3495:12:1" + "src": "3533:12:1" }, { "children": [ @@ -5414,18 +5484,18 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 232, + "referencedDeclaration": 235, "type": "function () view returns (enum Project.Role)", "value": "getRole" }, - "id": 431, + "id": 434, "name": "Identifier", - "src": "3521:7:1" + "src": "3559:7:1" } ], - "id": 432, + "id": 435, "name": "FunctionCall", - "src": "3521:9:1" + "src": "3559:9:1" }, { "attributes": { @@ -5449,19 +5519,19 @@ "type": "type(enum Project.Role)", "value": "Role" }, - "id": 433, + "id": 436, "name": "Identifier", - "src": "3534:4:1" + "src": "3572:4:1" } ], - "id": 434, + "id": 437, "name": "MemberAccess", - "src": "3534:15:1" + "src": "3572:15:1" } ], - "id": 435, + "id": 438, "name": "BinaryOperation", - "src": "3521:28:1" + "src": "3559:28:1" }, { "children": [ @@ -5484,13 +5554,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 98, + "referencedDeclaration": 101, "type": "uint256", "value": "contractorDebit" }, - "id": 436, + "id": 439, "name": "Identifier", - "src": "3561:15:1" + "src": "3599:15:1" }, { "attributes": { @@ -5513,13 +5583,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 98, + "referencedDeclaration": 101, "type": "uint256", "value": "contractorDebit" }, - "id": 437, + "id": 440, "name": "Identifier", - "src": "3579:15:1" + "src": "3617:15:1" }, { "attributes": { @@ -5527,38 +5597,38 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 424, + "referencedDeclaration": 427, "type": "uint256", "value": "toBeSent" }, - "id": 438, + "id": 441, "name": "Identifier", - "src": "3597:8:1" + "src": "3635:8:1" } ], - "id": 439, + "id": 442, "name": "BinaryOperation", - "src": "3579:26:1" + "src": "3617:26:1" } ], - "id": 440, + "id": 443, "name": "Assignment", - "src": "3561:44:1" + "src": "3599:44:1" } ], - "id": 441, + "id": 444, "name": "ExpressionStatement", - "src": "3561:44:1" + "src": "3599:44:1" } ], - "id": 442, + "id": 445, "name": "Block", - "src": "3551:63:1" + "src": "3589:63:1" } ], - "id": 443, + "id": 446, "name": "IfStatement", - "src": "3517:97:1" + "src": "3555:97:1" }, { "children": [ @@ -5612,23 +5682,23 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 492, + "referencedDeclaration": 495, "type": "msg", "value": "msg" }, - "id": 444, + "id": 447, "name": "Identifier", - "src": "3621:3:1" + "src": "3659:3:1" } ], - "id": 447, + "id": 450, "name": "MemberAccess", - "src": "3621:10:1" + "src": "3659:10:1" } ], - "id": 448, + "id": 451, "name": "MemberAccess", - "src": "3621:19:1" + "src": "3659:19:1" }, { "attributes": { @@ -5636,43 +5706,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 424, + "referencedDeclaration": 427, "type": "uint256", "value": "toBeSent" }, - "id": 449, + "id": 452, "name": "Identifier", - "src": "3641:8:1" + "src": "3679:8:1" } ], - "id": 450, + "id": 453, "name": "FunctionCall", - "src": "3621:29:1" + "src": "3659:29:1" } ], - "id": 451, + "id": 454, "name": "ExpressionStatement", - "src": "3621:29:1" + "src": "3659:29:1" } ], - "id": 452, + "id": 455, "name": "Block", - "src": "3509:148:1" + "src": "3547:148:1" } ], - "id": 453, + "id": 456, "name": "IfStatement", - "src": "3491:166:1" + "src": "3529:166:1" } ], - "id": 454, + "id": 457, "name": "Block", - "src": "3410:251:1" + "src": "3448:251:1" } ], - "id": 455, + "id": 458, "name": "FunctionDefinition", - "src": "3383:278:1" + "src": "3421:278:1" }, { "attributes": { @@ -5684,7 +5754,7 @@ ], "name": "leaveFeedback", "payable": false, - "scope": 480, + "scope": 483, "stateMutability": "nonpayable", "superFunction": null, "visibility": "external" @@ -5696,7 +5766,7 @@ "attributes": { "constant": false, "name": "positive", - "scope": 479, + "scope": 482, "stateVariable": false, "storageLocation": "default", "type": "bool", @@ -5709,20 +5779,20 @@ "name": "bool", "type": "bool" }, - "id": 456, + "id": 459, "name": "ElementaryTypeName", - "src": "3688:4:1" + "src": "3726:4:1" } ], - "id": 457, + "id": 460, "name": "VariableDeclaration", - "src": "3688:13:1" + "src": "3726:13:1" }, { "attributes": { "constant": false, "name": "comment", - "scope": 479, + "scope": 482, "stateVariable": false, "storageLocation": "default", "type": "string calldata", @@ -5735,19 +5805,19 @@ "name": "string", "type": "string storage pointer" }, - "id": 458, + "id": 461, "name": "ElementaryTypeName", - "src": "3703:6:1" + "src": "3741:6:1" } ], - "id": 459, + "id": 462, "name": "VariableDeclaration", - "src": "3703:14:1" + "src": "3741:14:1" } ], - "id": 460, + "id": 463, "name": "ParameterList", - "src": "3687:31:1" + "src": "3725:31:1" }, { "attributes": { @@ -5756,9 +5826,9 @@ ] }, "children": [], - "id": 461, + "id": 464, "name": "ParameterList", - "src": "3728:0:1" + "src": "3766:0:1" }, { "children": [ @@ -5790,13 +5860,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 495, + "referencedDeclaration": 498, "type": "function (bool) pure", "value": "require" }, - "id": 462, + "id": 465, "name": "Identifier", - "src": "3734:7:1" + "src": "3772:7:1" }, { "attributes": { @@ -5834,13 +5904,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 71, + "referencedDeclaration": 72, "type": "enum Project.State", "value": "state" }, - "id": 463, + "id": 466, "name": "Identifier", - "src": "3742:5:1" + "src": "3780:5:1" }, { "attributes": { @@ -5864,19 +5934,19 @@ "type": "type(enum Project.State)", "value": "State" }, - "id": 464, + "id": 467, "name": "Identifier", - "src": "3751:5:1" + "src": "3789:5:1" } ], - "id": 465, + "id": 468, "name": "MemberAccess", - "src": "3751:14:1" + "src": "3789:14:1" } ], - "id": 466, + "id": 469, "name": "BinaryOperation", - "src": "3742:23:1" + "src": "3780:23:1" }, { "attributes": { @@ -5899,13 +5969,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 71, + "referencedDeclaration": 72, "type": "enum Project.State", "value": "state" }, - "id": 467, + "id": 470, "name": "Identifier", - "src": "3769:5:1" + "src": "3807:5:1" }, { "attributes": { @@ -5929,34 +5999,34 @@ "type": "type(enum Project.State)", "value": "State" }, - "id": 468, + "id": 471, "name": "Identifier", - "src": "3778:5:1" + "src": "3816:5:1" } ], - "id": 469, + "id": 472, "name": "MemberAccess", - "src": "3778:15:1" + "src": "3816:15:1" } ], - "id": 470, + "id": 473, "name": "BinaryOperation", - "src": "3769:24:1" + "src": "3807:24:1" } ], - "id": 471, + "id": 474, "name": "BinaryOperation", - "src": "3742:51:1" + "src": "3780:51:1" } ], - "id": 472, + "id": 475, "name": "FunctionCall", - "src": "3734:60:1" + "src": "3772:60:1" } ], - "id": 473, + "id": 476, "name": "ExpressionStatement", - "src": "3734:60:1" + "src": "3772:60:1" }, { "children": [ @@ -5977,13 +6047,13 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 88, + "referencedDeclaration": 91, "type": "uint256", "value": "lastActivityDate" }, - "id": 474, + "id": 477, "name": "Identifier", - "src": "3812:16:1" + "src": "3850:16:1" }, { "attributes": { @@ -5991,43 +6061,43 @@ "overloadedDeclarations": [ null ], - "referencedDeclaration": 494, + "referencedDeclaration": 497, "type": "uint256", "value": "now" }, - "id": 475, + "id": 478, "name": "Identifier", - "src": "3831:3:1" + "src": "3869:3:1" } ], - "id": 476, + "id": 479, "name": "Assignment", - "src": "3812:22:1" + "src": "3850:22:1" } ], - "id": 477, + "id": 480, "name": "ExpressionStatement", - "src": "3812:22:1" + "src": "3850:22:1" } ], - "id": 478, + "id": 481, "name": "Block", - "src": "3728:111:1" + "src": "3766:111:1" } ], - "id": 479, + "id": 482, "name": "FunctionDefinition", - "src": "3665:174:1" + "src": "3703:174:1" } ], - "id": 480, + "id": 483, "name": "ContractDefinition", - "src": "26:3816:1" + "src": "26:3854:1" } ], - "id": 481, + "id": 484, "name": "SourceUnit", - "src": "0:3843:1" + "src": "0:3881:1" }, "compiler": { "name": "solc", @@ -6035,5 +6105,5 @@ }, "networks": {}, "schemaVersion": "1.0.1", - "updatedAt": "2017-11-12T16:36:28.812Z" + "updatedAt": "2017-11-22T17:16:55.393Z" } \ No newline at end of file diff --git a/contracts/Project.sol b/contracts/Project.sol index d026359..624fd32 100644 --- a/contracts/Project.sol +++ b/contracts/Project.sol @@ -15,8 +15,10 @@ contract Project { Client } - string public name; + uint16 public constant version = 1; + State public state; + string public name; address public clientAddress; address public contractorAddress; @@ -27,7 +29,7 @@ contract Project { uint32 public minutesReported; // making this public breaks Solidity compiler so it starts to output invalid ABI - string private contractorComment; + string public contractorComment; uint256 public hourlyRate; diff --git a/web/src/components/contract-progress.js b/web/src/components/contract-progress.js index 4963c94..5eaf5b3 100644 --- a/web/src/components/contract-progress.js +++ b/web/src/components/contract-progress.js @@ -14,12 +14,12 @@ export default class ContractProgress extends React.Component { }) } - onUpdateClick = (hours, comment) => { + onUpdateClick = (hours, contractorComment) => { this.setState({ isEditing: false }) - this.props.actions.setBillableTime(this.props.address, hours, comment) + this.props.actions.setBillableTime(this.props.address, hours, contractorComment) } onCancelClick = () => { @@ -31,17 +31,9 @@ export default class ContractProgress extends React.Component { render () { const { role, - state, - name, - clientAddress, - contractorAddress, - hourlyRate, timeCapMinutes, - prepayFraction, minutesReported, - comment, - available, - totalContractEth, + contractorComment, } = this.props const { isEditing } = this.state @@ -55,8 +47,8 @@ export default class ContractProgress extends React.Component { COMMENT this.comment = comment} - defaultValue={comment} /> + innerRef={commentNode => this.commentNode = commentNode} + defaultValue={contractorComment} /> TIME SPENT @@ -73,7 +65,7 @@ export default class ContractProgress extends React.Component {