@daostack/access_control
Version:
Capability-based access control for Ethereum smart contracts.
577 lines (576 loc) • 277 kB
JSON
{
"contractName": "Company",
"abi": [
{
"constant": true,
"inputs": [
{
"name": "interfaceID",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_id",
"type": "bytes32"
},
{
"name": "_to",
"type": "address"
}
],
"name": "assignFullKey",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
},
{
"name": "",
"type": "address"
}
],
"name": "keys",
"outputs": [
{
"name": "exists",
"type": "bool"
},
{
"name": "assignable",
"type": "bool"
},
{
"name": "start",
"type": "uint256"
},
{
"name": "expiration",
"type": "uint256"
},
{
"name": "uses",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_expiration",
"type": "uint256"
}
],
"name": "isValidExpiration",
"outputs": [
{
"name": "valid",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_id",
"type": "bytes32"
}
],
"name": "revokeKey",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_id",
"type": "bytes32"
},
{
"name": "_owner",
"type": "address"
}
],
"name": "unlockable",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "_id",
"type": "bytes32"
},
{
"name": "_owner",
"type": "address"
}
],
"name": "getKey",
"outputs": [
{
"name": "",
"type": "bool"
},
{
"name": "",
"type": "bool"
},
{
"name": "",
"type": "uint256"
},
{
"name": "",
"type": "uint256"
},
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_id",
"type": "bytes32"
},
{
"name": "_to",
"type": "address"
},
{
"name": "_assignable",
"type": "bool"
},
{
"name": "_start",
"type": "uint256"
},
{
"name": "_expiration",
"type": "uint256"
},
{
"name": "_uses",
"type": "uint256"
}
],
"name": "assignKey",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"name": "_coo",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_id",
"type": "bytes32"
},
{
"indexed": true,
"name": "_from",
"type": "address"
},
{
"indexed": true,
"name": "_to",
"type": "address"
},
{
"indexed": false,
"name": "_assignable",
"type": "bool"
},
{
"indexed": false,
"name": "_start",
"type": "uint256"
},
{
"indexed": false,
"name": "_expiration",
"type": "uint256"
},
{
"indexed": false,
"name": "_uses",
"type": "uint256"
}
],
"name": "AssignKey",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "_id",
"type": "bytes32"
},
{
"indexed": true,
"name": "_owner",
"type": "address"
}
],
"name": "RevokeKey",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "_hrCompany",
"type": "address"
},
{
"name": "nEmployees",
"type": "uint80"
}
],
"name": "hireHRCompany",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_hrCompany",
"type": "address"
}
],
"name": "fireHRCompany",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_employee",
"type": "address"
},
{
"name": "_salary",
"type": "uint256"
}
],
"name": "registerEmployee",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_employee",
"type": "address"
}
],
"name": "payout",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x60806040523480156200001157600080fd5b5060405160208062001a808339810160405251620000597f6d616e6167654852436f6d70616e790000000000000000000000000000000000336401000000006200007f810204565b60028054600160a060020a031916600160a060020a03929092169190911790556200027f565b6200009a82826001600080806401000000006200009e810204565b5050565b811580620000ab57508183105b15156200013f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f53746172742074696d65206d757374206265207374726963746c79206c65737360448201527f207468616e2065787069726174696f6e00000000000000000000000000000000606482015290519081900360840190fd5b620001538264010000000062000269810204565b1515620001c157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f45787069726174696f6e206d75737420626520696e2074686520667574757265604482015290519081900360640190fd5b600086815260208181526040808320600160a060020a0389168085529083528184208054891515610100810261ff001960ff19909316600190811793909316178355908201899055600282018890556003909101869055825190815292830187905282820186905260608301859052905190929189917f6bb983ad4fd27414749e3cd41e18f0e39e54a860dad0a7ccb2a2ecb902226e179181900360800190a4505050505050565b6000811580620002795750428210155b92915050565b6117f1806200028f6000396000f3006080604052600436106100b95763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a781146100be5780630b7e9c441461010c57806313fb5c3d1461013c5780632903b8ee1461016d57806334fdfc58146101cb57806343751d60146101f9578063572f221014610211578063719af01f1461022957806374a17f251461025a578063baf81f6514610297578063bc4f5a33146102c8578063ca68289714610307575b600080fd5b3480156100ca57600080fd5b506100f87fffffffff0000000000000000000000000000000000000000000000000000000060043516610338565b604080519115158252519081900360200190f35b34801561011857600080fd5b5061013a73ffffffffffffffffffffffffffffffffffffffff600435166103d3565b005b34801561014857600080fd5b5061013a60043573ffffffffffffffffffffffffffffffffffffffff60243516610639565b34801561017957600080fd5b5061019e60043573ffffffffffffffffffffffffffffffffffffffff602435166106c8565b60408051951515865293151560208601528484019290925260608401526080830152519081900360a00190f35b3480156101d757600080fd5b5061013a73ffffffffffffffffffffffffffffffffffffffff60043516610702565b34801561020557600080fd5b506100f86004356107c7565b34801561021d57600080fd5b5061013a6004356107d8565b34801561023557600080fd5b506100f860043573ffffffffffffffffffffffffffffffffffffffff602435166107e5565b34801561026657600080fd5b5061013a73ffffffffffffffffffffffffffffffffffffffff6004351669ffffffffffffffffffff60243516610892565b3480156102a357600080fd5b5061019e60043573ffffffffffffffffffffffffffffffffffffffff60243516610965565b3480156102d457600080fd5b5061013a60043573ffffffffffffffffffffffffffffffffffffffff60243516604435151560643560843560a4356109b8565b34801561031357600080fd5b5061013a73ffffffffffffffffffffffffffffffffffffffff60043516602435611163565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103cb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f33f9cb6400000000000000000000000000000000000000000000000000000000145b90505b919050565b604080517f7061796f7574000000000000000000000000000000000000000000000000000081526c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8416026006820152905190819003601a01902060009061043c9061138f565b8015156104aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e73756666696369656e74207065726d697373696f6e730000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120549250821161053f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f456d706c6f796565206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600081815260016020819052604090912001546108fc9062278d009042038502049081150290604051600060405180830381858888f193505050501580156105a2573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff80841660008181526001602081905260408083204290830181905581517f7061796f7574000000000000000000000000000000000000000000000000000081526c010000000000000000000000009095026006860152905193849003601a0190932060025461063495919491169262278d0090910190826113bb565b505050565b610641611791565b5060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452825291829020825160a081018452815460ff80821615158352610100909104161515928101839052600182015493810184905260028201546060820181905260039092015460808201819052909361063493879387939192916109b8565b6000602081815292815260408082209093529081522080546001820154600283015460039093015460ff8084169461010090940416929085565b61072b7f6d616e6167654852436f6d70616e79000000000000000000000000000000000061138f565b80151561079957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e73756666696369656e74207065726d697373696f6e730000000000000000604482015290519081900360640190fd5b6107c37f7265676973746572456d706c6f79656500000000000000000000000000000000836115c0565b5050565b60008115806103cb57505042111590565b6107e281336115c0565b50565b60006107ef611791565b5060008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452825291829020825160a081018452815460ff808216158015808552610100909304909116151594830194909452600183015494820194909452600282015460608201526003909101546080820152919061087a575061087a81606001516107c7565b801561088a575042816040015111155b949350505050565b6108bb7f6d616e6167654852436f6d70616e79000000000000000000000000000000000061138f565b80151561092957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e73756666696369656e74207065726d697373696f6e730000000000000000604482015290519081900360640190fd5b6106347f7265676973746572456d706c6f796565000000000000000000000000000000008460008060008769ffffffffffffffffffff166113bb565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff939093168452919052902080546001820154600283015460039093015460ff8084169561010090940416939192565b6109c0611791565b6109c8611791565b6000888152602081815260408083203384528252808320815160a081018352815460ff808216158015808552610100909304909116151595830195909552600183015493820193909352600282015460608201526003909101546080820152945090610a3c5750610a3c83606001516107c7565b1515610aa957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f496e76616c6964206b6579000000000000000000000000000000000000000000604482015290519081900360640190fd5b82602001511515610b1b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4b6579206973206e6f742061737369676e61626c650000000000000000000000604482015290519081900360640190fd5b428360400151111580610b32575082604001518610155b1515610bc557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f43616e6e6f7420726564756365206b657927732066757475726520737461727460448201527f2074696d65000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60608301511580610be5575082606001518511158015610be55750600085115b1515610c5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f43616e6e6f7420657874656e64206b657927732065787069726174696f6e0000604482015290519081900360640190fd5b841580610c5e57508486105b1515610cf157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f53746172742074696d65206d757374206265207374726963746c79206c65737360448201527f207468616e2065787069726174696f6e00000000000000000000000000000000606482015290519081900360840190fd5b610cfa856107c7565b1515610d6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f45787069726174696f6e206d75737420626520696e2074686520667574757265604482015290519081900360640190fd5b60808301511580610d87575082608001518411158015610d875750600084115b1515610df457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f7567682075736573206176616961626c650000000000000000604482015290519081900360640190fd5b60008981526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c168452825291829020825160a081018452815460ff80821615158352610100909104161515928101929092526001810154928201929092526002820154606082015260039091015460808201529150610e7289896107e5565b80610e805750428260400151115b9050801580610ecd575086151582602001511515148015610ea45750848260600151145b8015610ecd575042826040015111158015610ebf5750428611155b80610ecd5750858260400151145b1515610f6057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f43616e6e6f74206d6572676520696e746f20726563657065696e742773206b6560448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610f6a8985611655565b610f7489896107e5565b1561100c5760808201511561100757831515610fc05760008981526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c168452909152812060030155611007565b6080820151610fd5908563ffffffff61176c16565b60008a81526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020600301555b6110f2565b60a0604051908101604052806001151581526020018815158152602001878152602001868152602001858152506000808b6000191660001916815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff0219169083151502179055506040820151816001015560608201518160020155608082015181600301559050505b6040805188151581526020810188905280820187905260608101869052905173ffffffffffffffffffffffffffffffffffffffff8a169133918c917f6bb983ad4fd27414749e3cd41e18f0e39e54a860dad0a7ccb2a2ecb902226e17919081900360800190a4505050505050505050565b61118c7f7265676973746572456d706c6f7965650000000000000000000000000000000061138f565b8015156111fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e73756666696369656e74207065726d697373696f6e730000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020541561128c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f456d706c6f79656520616c726561647920726567697374657265640000000000604482015290519081900360640190fd5b600082116112fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f53616c617279206d7573742062652067726561746572207468616e207a65726f604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602081905260408083208781554290830181905581517f7061796f7574000000000000000000000000000000000000000000000000000081526c010000000000000000000000009095026006860152905193849003601a0190932060025461063495919491169262278d0090910190826113bb565b600061139b82336107e5565b156113b3576113ab826001611655565b5060016103ce565b506000919050565b8115806113c757508183105b151561145a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f53746172742074696d65206d757374206265207374726963746c79206c65737360448201527f207468616e2065787069726174696f6e00000000000000000000000000000000606482015290519081900360840190fd5b611463826107c7565b15156114d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f45787069726174696f6e206d75737420626520696e2074686520667574757265604482015290519081900360640190fd5b60008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8916808552908352818420805489151561010081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909316600190811793909316178355908201899055600282018890556003909101869055825190815292830187905282820186905260608301859052905190929189917f6bb983ad4fd27414749e3cd41e18f0e39e54a860dad0a7ccb2a2ecb902226e179181900360800190a4505050505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000168155600181018490556002810184905560030183905551909184917ffed57faa4b67e0f08c65114689e4d61da45604656746dbbd5218f0ed1286ce299190a35050565b61165d611791565b506000828152602081815260408083203384528252808320815160a081018352815460ff80821615158352610100909104161515938101939093526001810154918301919091526002810154606083015260030154608082018190529091101561063457818160800151141561172157600083815260208181526040808320338452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000168155600181018290556002810182905560030155610634565b60008381526020818152604080832033845290915290206003015461174c908363ffffffff61177f16565b600084815260208181526040808320338452909152902060030155505050565b8181018281101561177957fe5b92915050565b60008282111561178b57fe5b50900390565b60a06040519081016040528060001515815260200160001515815260200160008152602001600081526020016000815250905600a165627a7a7230582021dcab150d46c75973414b78bc14e0cfc84cd7d1a122070f5184ba2e580cb0310029",
"deployedBytecode": "0x6080604052600436106100b95763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301ffc9a781146100be5780630b7e9c441461010c57806313fb5c3d1461013c5780632903b8ee1461016d57806334fdfc58146101cb57806343751d60146101f9578063572f221014610211578063719af01f1461022957806374a17f251461025a578063baf81f6514610297578063bc4f5a33146102c8578063ca68289714610307575b600080fd5b3480156100ca57600080fd5b506100f87fffffffff0000000000000000000000000000000000000000000000000000000060043516610338565b604080519115158252519081900360200190f35b34801561011857600080fd5b5061013a73ffffffffffffffffffffffffffffffffffffffff600435166103d3565b005b34801561014857600080fd5b5061013a60043573ffffffffffffffffffffffffffffffffffffffff60243516610639565b34801561017957600080fd5b5061019e60043573ffffffffffffffffffffffffffffffffffffffff602435166106c8565b60408051951515865293151560208601528484019290925260608401526080830152519081900360a00190f35b3480156101d757600080fd5b5061013a73ffffffffffffffffffffffffffffffffffffffff60043516610702565b34801561020557600080fd5b506100f86004356107c7565b34801561021d57600080fd5b5061013a6004356107d8565b34801561023557600080fd5b506100f860043573ffffffffffffffffffffffffffffffffffffffff602435166107e5565b34801561026657600080fd5b5061013a73ffffffffffffffffffffffffffffffffffffffff6004351669ffffffffffffffffffff60243516610892565b3480156102a357600080fd5b5061019e60043573ffffffffffffffffffffffffffffffffffffffff60243516610965565b3480156102d457600080fd5b5061013a60043573ffffffffffffffffffffffffffffffffffffffff60243516604435151560643560843560a4356109b8565b34801561031357600080fd5b5061013a73ffffffffffffffffffffffffffffffffffffffff60043516602435611163565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a70000000000000000000000000000000000000000000000000000000014806103cb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f33f9cb6400000000000000000000000000000000000000000000000000000000145b90505b919050565b604080517f7061796f7574000000000000000000000000000000000000000000000000000081526c0100000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8416026006820152905190819003601a01902060009061043c9061138f565b8015156104aa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e73756666696369656e74207065726d697373696f6e730000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260408120549250821161053f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f456d706c6f796565206973206e6f742072656769737465726564000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600081815260016020819052604090912001546108fc9062278d009042038502049081150290604051600060405180830381858888f193505050501580156105a2573d6000803e3d6000fd5b5073ffffffffffffffffffffffffffffffffffffffff80841660008181526001602081905260408083204290830181905581517f7061796f7574000000000000000000000000000000000000000000000000000081526c010000000000000000000000009095026006860152905193849003601a0190932060025461063495919491169262278d0090910190826113bb565b505050565b610641611791565b5060008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff85168452825291829020825160a081018452815460ff80821615158352610100909104161515928101839052600182015493810184905260028201546060820181905260039092015460808201819052909361063493879387939192916109b8565b6000602081815292815260408082209093529081522080546001820154600283015460039093015460ff8084169461010090940416929085565b61072b7f6d616e6167654852436f6d70616e79000000000000000000000000000000000061138f565b80151561079957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e73756666696369656e74207065726d697373696f6e730000000000000000604482015290519081900360640190fd5b6107c37f7265676973746572456d706c6f79656500000000000000000000000000000000836115c0565b5050565b60008115806103cb57505042111590565b6107e281336115c0565b50565b60006107ef611791565b5060008381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452825291829020825160a081018452815460ff808216158015808552610100909304909116151594830194909452600183015494820194909452600282015460608201526003909101546080820152919061087a575061087a81606001516107c7565b801561088a575042816040015111155b949350505050565b6108bb7f6d616e6167654852436f6d70616e79000000000000000000000000000000000061138f565b80151561092957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e73756666696369656e74207065726d697373696f6e730000000000000000604482015290519081900360640190fd5b6106347f7265676973746572456d706c6f796565000000000000000000000000000000008460008060008769ffffffffffffffffffff166113bb565b60009182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff939093168452919052902080546001820154600283015460039093015460ff8084169561010090940416939192565b6109c0611791565b6109c8611791565b6000888152602081815260408083203384528252808320815160a081018352815460ff808216158015808552610100909304909116151595830195909552600183015493820193909352600282015460608201526003909101546080820152945090610a3c5750610a3c83606001516107c7565b1515610aa957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f496e76616c6964206b6579000000000000000000000000000000000000000000604482015290519081900360640190fd5b82602001511515610b1b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4b6579206973206e6f742061737369676e61626c650000000000000000000000604482015290519081900360640190fd5b428360400151111580610b32575082604001518610155b1515610bc557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f43616e6e6f7420726564756365206b657927732066757475726520737461727460448201527f2074696d65000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60608301511580610be5575082606001518511158015610be55750600085115b1515610c5257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f43616e6e6f7420657874656e64206b657927732065787069726174696f6e0000604482015290519081900360640190fd5b841580610c5e57508486105b1515610cf157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f53746172742074696d65206d757374206265207374726963746c79206c65737360448201527f207468616e2065787069726174696f6e00000000000000000000000000000000606482015290519081900360840190fd5b610cfa856107c7565b1515610d6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f45787069726174696f6e206d75737420626520696e2074686520667574757265604482015290519081900360640190fd5b60808301511580610d87575082608001518411158015610d875750600084115b1515610df457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f4e6f7420656e6f7567682075736573206176616961626c650000000000000000604482015290519081900360640190fd5b60008981526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c168452825291829020825160a081018452815460ff80821615158352610100909104161515928101929092526001810154928201929092526002820154606082015260039091015460808201529150610e7289896107e5565b80610e805750428260400151115b9050801580610ecd575086151582602001511515148015610ea45750848260600151145b8015610ecd575042826040015111158015610ebf5750428611155b80610ecd5750858260400151145b1515610f6057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602160248201527f43616e6e6f74206d6572676520696e746f20726563657065696e742773206b6560448201527f7900000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b610f6a8985611655565b610f7489896107e5565b1561100c5760808201511561100757831515610fc05760008981526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8c168452909152812060030155611007565b6080820151610fd5908563ffffffff61176c16565b60008a81526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8d1684529091529020600301555b6110f2565b60a0604051908101604052806001151581526020018815158152602001878152602001868152602001858152506000808b6000191660001916815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff0219169083151502179055506040820151816001015560608201518160020155608082015181600301559050505b6040805188151581526020810188905280820187905260608101869052905173ffffffffffffffffffffffffffffffffffffffff8a169133918c917f6bb983ad4fd27414749e3cd41e18f0e39e54a860dad0a7ccb2a2ecb902226e17919081900360800190a4505050505050505050565b61118c7f7265676973746572456d706c6f7965650000000000000000000000000000000061138f565b8015156111fa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f496e73756666696369656e74207065726d697373696f6e730000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020541561128c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f456d706c6f79656520616c726561647920726567697374657265640000000000604482015290519081900360640190fd5b600082116112fb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f53616c617279206d7573742062652067726561746572207468616e207a65726f604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602081905260408083208781554290830181905581517f7061796f7574000000000000000000000000000000000000000000000000000081526c010000000000000000000000009095026006860152905193849003601a0190932060025461063495919491169262278d0090910190826113bb565b600061139b82336107e5565b156113b3576113ab826001611655565b5060016103ce565b506000919050565b8115806113c757508183105b151561145a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f53746172742074696d65206d757374206265207374726963746c79206c65737360448201527f207468616e2065787069726174696f6e00000000000000000000000000000000606482015290519081900360840190fd5b611463826107c7565b15156114d057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f45787069726174696f6e206d75737420626520696e2074686520667574757265604482015290519081900360640190fd5b60008681526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8916808552908352818420805489151561010081027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909316600190811793909316178355908201899055600282018890556003909101869055825190815292830187905282820186905260608301859052905190929189917f6bb983ad4fd27414749e3cd41e18f0e39e54a860dad0a7ccb2a2ecb902226e179181900360800190a4505050505050565b60008281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000168155600181018490556002810184905560030183905551909184917ffed57faa4b67e0f08c65114689e4d61da45604656746dbbd5218f0ed1286ce299190a35050565b61165d611791565b506000828152602081815260408083203384528252808320815160a081018352815460ff80821615158352610100909104161515938101939093526001810154918301919091526002810154606083015260030154608082018190529091101561063457818160800151141561172157600083815260208181526040808320338452909152812080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000168155600181018290556002810182905560030155610634565b60008381526020818152604080832033845290915290206003015461174c908363ffffffff61177f16565b600084815260208181526040808320338452909152902060030155505050565b8181018281101561177957fe5b92915050565b60008282111561178b57fe5b50900390565b60a06040519081016040528060001515815260200160001515815260200160008152602001600081526020016000815250905600a165627a7a7230582021dcab150d46c75973414b78bc14e0cfc84cd7d1a122070f5184ba2e580cb0310029",
"sourceMap": "58:2696:6:-;;;236:177;8:9:-1;5:2;;;30:1;27;20:12;5:2;236:177:6;;;;;;;;;;;;;343:43;;375:10;343:12;;;;:43;:::i;:::-;396:3;:10;;-1:-1:-1;;;;;;396:10:6;-1:-1:-1;;;;;396:10:6;;;;;;;;;;58:2696;;7663:215:5;7756:115;7778:3;7795;7812:4;7830:1;;;7756:8;;;;:115;:::i;:::-;7663:215;;:::o;6734:761::-;6924:16;;;:40;;;6953:11;6944:6;:20;6924:40;6916:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7035:30;7053:11;7035:17;;;;:30;:::i;:::-;7027:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7113:4;:9;;;;;;;;;;;-1:-1:-1;;;;;7113:14:5;;;;;;;;;;;:28;;7151:39;;;7113:28;7151:39;;-1:-1:-1;;;;7113:28:5;;;7137:4;7113:28;;;7151:39;;;;;;;7200:20;;;:29;;;7239:25;;;:39;;;7288:19;;;;:27;;;7331:157;;;;;;;;;;;;;;;;;;;;;;;;;7113:14;;:4;:9;;7331:157;;;;;;;;;6734:761;;;;;;:::o;2219:202::-;2285:10;2376:16;;;:38;;;2411:3;2396:11;:18;;2376:38;2369:45;2219:202;-1:-1:-1;;2219:202:5:o;58:2696:6:-;;;;;;;",
"deployedSourceMap": "58:2696:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1050:481:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1050:481:5;;;;;;;;;;;;;;;;;;;;;;;;;1976:776:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1976:776:6;;;;;;;;;5592:294:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5592:294:5;;;;;;;;;164:55:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;164:55:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:255:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;956:255:6;;;;;;;2219:202:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2219:202:5;;;;;5956:87;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;5956:87:5;;;;;2551:273;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;2551:273:5;;;;;;;;;419:531:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;419:531:6;;;;;;;;;;;1724:327:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1724:327:5;;;;;;;;;3267:2196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3267:2196:5;;;;;;;;;;;;;;;;;;;1217:753:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;1217:753:6;;;;;;;;;1050:481:5;1120:4;1155:46;;;1170:31;1155:46;;:347;;-1:-1:-1;1298:204:5;;;1325:177;1298:204;1155:347;1136:366;;1050:481;;;;:::o;1976:776:6:-;2101:29;;;;;;;;;;;;;;;;;;;;;;;;;2147:11;;2094:37;;:6;:37::i;:::-;609:10:5;601:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2161:20:6;;;;;;;:9;:20;;;;;:27;;-1:-1:-1;2206:10:6;;2198:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2257:18;;;2292:20;;;;:9;:20;;;;;;;;:32;;2257:79;;2328:7;;2286:3;:38;2276:49;;:59;2257:79;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;2346:20:6;;;;;;;;:9;:20;;;;;;;;2381:3;2346:32;;;:38;;;2469:29;;;;;;;;;;;;;;;;;;;;;;;;2512:3;;2447:298;;2469:29;;2512:3;;;2594:7;2588:13;;;;2346:9;2447:8;:298::i;:::-;1976:776;;;:::o;5592:294:5:-;5684:14;;:::i;:::-;-1:-1:-1;5701:4:5;:9;;;;;;;;;;;:14;;;;;;;;;;;5684:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5725:154;;5706:3;;5711;;5684:31;;;5725:9;:154::i;164:55:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;956:255:6:-;1032:25;;:6;:25::i;:::-;609:10:5;601:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1158:46:6;;1193:10;1158:14;:46::i;:::-;956:255;;:::o;2219:202:5:-;2285:10;2376:16;;;:38;;-1:-1:-1;;2411:3:5;-1:-1:-1;2396:18:5;;2219:202::o;5956:87::-;6005:31;6020:3;6025:10;6005:14;:31::i;:::-;5956:87;:::o;2551:273::-;2621:4;2637:14;;:::i;:::-;-1:-1:-1;2654:4:5;:9;;;;;;;;;;;:17;;;;;;;;;;;2637:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2750:47;;;2764:33;2782:3;:14;;;2764:17;:33::i;:::-;2750:67;;;;;2814:3;2801;:9;;;:16;;2750:67;2743:74;2551:273;-1:-1:-1;;;;2551:273:5:o;419:531:6:-;514:25;;:6;:25::i;:::-;609:10:5;601:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;655:288:6;;709:10;733:5;793:1;842;883:10;655:288;;:8;:288::i;1724:327:5:-;1792:4;1853:9;;;;;;;;;;;:17;;;;;;;;;;;;:24;;;1933:23;;;1970:28;;;;2012:22;;;;;1853:24;;;;;;1891:28;;;;;1933:23;;1724:327::o;3267:2196::-;3448:14;;:::i;:::-;4279:18;;:::i;:::-;4324:14;3465:9;;;;;;;;;;;3475:10;3465:21;;;;;;;3448:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3448:38:5;3504:47;;;3518:33;3536:3;:14;;;3518:17;:33::i;:::-;3496:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3585:3;:14;;;3577:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3719:3;3706;:9;;;:16;;:39;;;;3736:3;:9;;;3726:6;:19;;3706:39;3698:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3805:14;;;;:19;;:73;;;3844:3;:14;;;3829:11;:29;;:48;;;;;3876:1;3862:11;:15;3829:48;3797:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3931:16;;;:40;;;3960:11;3951:6;:20;3931:40;3923:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4042:30;4060:11;4042:17;:30::i;:::-;4034:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4127:8;;;;:13;;:49;;;4154:3;:8;;;4145:5;:17;;:30;;;;;4174:1;4166:5;:9;4145:30;4119:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4300:4;:9;;;;;;;;;;;:14;;;;;;;;;;;4279:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4341:20:5;4305:3;4310;4341:10;:20::i;:::-;:43;;;;4381:3;4365:7;:13;;;:19;4341:43;4324:60;;4416:9;4415:10;:381;;;;4469:11;4447:33;;:7;:18;;;:33;;;:70;;;;;4506:11;4484:7;:18;;;:33;4447:70;:335;;;;;4696:3;4679:7;:13;;;:20;;:37;;;;;4713:3;4703:6;:13;;4679:37;4678:86;;;;4758:6;4741:7;:13;;;:23;4678:86;4394:461;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4866:23;4879:3;4883:5;4866:12;:23::i;:::-;4904:20;4915:3;4920;4904:10;:20::i;:::-;4900:375;;;4944:12;;;;:17;4940:227;;4985:10;;4981:172;;;5041:1;5019:9;;;;;;;;;;;:14;;;;;;;;;;:19;;:23;4981:172;;;5111:12;;;;:23;;5128:5;5111:23;:16;:23;:::i;:::-;5089:4;:9;;;;;;;;;;;:14;;;;;;;;;;:19;;:45;4981:172;4900:375;;;5214:50;;;;;;;;;5218:4;5214:50;;;;;;5224:11;5214:50;;;;;;5237:6;5214:50;;;;5245:11;5214:50;;;;5258:5;5214:50;;;5197:4;:9;5202:3;5197:9;;;;;;;;;;;;;;;;;:14;5207:3;5197:14;;;;;;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4900:375;5290:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5330:10;;5313:3;;5290:166;;;;;;;;;;3267:2196;;;;;;;;;:::o;1217:753:6:-;1309:26;;:6;:26::i;:::-;609:10:5;601:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1359:20:6;;;;;;;:9;:20;;;;;:27;:32;1351:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1451:1;1441:11;;1433:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1499:20;;;;;;;;:9;:20;;;;;;;;:37;;;1581:3;1546:32;;;:38;;;1687:29;;;;;;;;;;;;;;;;;;;;;;;;1730:3;;1665:298;;1687:29;;1730:3;;;1812:7;1806:13;;;;1499:9;1665:8;:298::i;7965:194:5:-;8012:4;8032:27;8043:3;8048:10;8032;:27::i;:::-;8028:103;;;8075:20;8088:3;8093:1;8075:12;:20::i;:::-;-1:-1:-1;8116:4:5;8109:11;;8028:103;-1:-1:-1;8147:5:5;7965:194;;;:::o;6734:761::-;6924:16;;;:40;;;6953:11;6944:6;:20;6924:40;6916:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7035:30;7053:11;7035:17;:30::i;:::-;7027:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7113:4;:9;;;;;;;;;;;:14;;;;;;;;;;;;:28;;7151:39;;;7113:28;7151:39;;;7113:28;;;;7137:4;7113:28;;;7151:39;;;;;;;7200:20;;;:29;;;7239:25;;;:39;;;7288:19;;;;:27;;;7331:157;;;;;;;;;;;;;;;;;;;;;;;;;7113:14;;:4;:9;;7331:157;;;;;;;;;6734:761;;;;;;:::o;6156:140::-;6235:4;:9;;;;;;;;;;;:17;;;;;;;;;;;6228:24;;;;;;;;;;;;;;;;;;;;;;;6267:22;6235:17;;6240:3;;6267:22;;6235:4;6267:22;6156:140;;:::o;8327:350::-;8392:14;;:::i;:::-;-1:-1:-1;8409:4:5;:9;;;;;;;;;;;8419:10;8409:21;;;;;;;8392:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8440:231:5;;;8488:5;8476:3;:8;;;:17;8472:189;;;8520:4;:9;;;;;;;;;;;8530:10;8520:21;;;;;;;8513:28;;;;;;;;;;;;;;;;;;;;;8472:189;;;8609:4;:9;;;;;;;;;;;8619:10;8609:21;;;;;;;:26;;;:37;;8640:5;8609:37;:30;:37;:::i;:::-;8580:4;:9;;;;;;;;;;;8590:10;8580:21;;;;;;;:26;;:66;8327:350;;;:::o;1238:128:10:-;1319:7;;;1339;;;;1332:15;;;;1238:128;;;;:::o;1060:116::-;1120:7;1142:8;;;;1135:16;;;;-1:-1:-1;1164:7:10;;;1060:116::o;58:2696:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
"source": "pragma solidity ^0.4.24;\n\nimport \"../Permissioned.sol\";\n\n\ncontract Company is Permissioned {\n\n struct Employee {\n uint salary;\n uint lastPayDate;\n }\n\n mapping(address => Employee) employees;\n address coo;\n\n constructor(address _coo) public {\n // The sender has unlimited access to `manageHRCompany`\n grantFullKey(\"manageHRCompany\", msg.sender);\n coo = _coo;\n }\n\n function hireHRCompany(address _hrCompany, uint80 nEmployees)\n public\n guarentee(unlock(\"manageHRCompany\")) // the sender can manage HR comapines\n {\n // Allow the HRCompany to register up to `nEmployees`\n grantKey(\n \"registerEmployee\",\n _hrCompany,\n false, // not assignable to other accounts\n 0, // effective immediately\n 0, // no expiration\n nEmployees // can be used up to `nEmployees` times\n );\n }\n\n function fireHRCompany(address _hrCompany)\n public\n guarentee(unlock(\"manageHRCompany\")) // the sender can manage HR comapines\n {\n // Revoke access to `registerEmployee`\n revokeOwnerKey(\"registerEmployee\", _hrCompany);\n }\n\n function registerEmployee(address _employee, uint _salary)\n public\n guarentee(unlock(\"registerEmployee\"))\n {\n require(employees[_employee].salary == 0, \"Employee already registered\");\n require(_salary > 0, \"Salary must be greater than zero\");\n employees[_employee].salary = _salary;\n employees[_employee].lastPayDate = now;\n\n // Next payday for this employee is at least a month from now\n grantKey(\n keccak256(\"payout\",_employee),\n coo,\n true, // assignable to other accounts\n now + 30 days, // can be called in at least a month from now\n 0, // no expiration\n 1 // one time use\n );\n }\n\n function payout(address _employee)\n public\n // The sender can payout to this employee\n guarentee(unlock(keccak256(\"payout\",_employee)))\n {\n uint salary = employees[_employee].salary;\n require(salary > 0, \"Employee is not registered\");\n _employee.transfer(salary * (now - employees[_employee].lastPayDate) / 30 days);\n employees[_employee].lastPayDate = now;\n\n // Next payday is at least a month from now\n grantKey(\n keccak256(\"payout\",_employee),\n coo,\n true, // assignable to other accounts\n now + 30 days, // can be called in at least a month from now\n 0, // no expiration\n 1 // one time use\n );\n }\n}\n",
"sourcePath": "/home/tsuberim/projects/daostack/access_control/contracts/examples/Company.sol",
"ast": {
"absolutePath": "/home/tsuberim/projects/daostack/access_control/contracts/examples/Company.sol",
"exportedSymbols": {
"Company": [
1244
]
},
"id": 1245,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1052,
"literals": [
"solidity",
"^",
"0.4",
".24"
],
"nodeType": "PragmaDirective",
"src": "0:24:6"
},
{
"absolutePath": "/home/tsuberim/projects/daostack/access_control/contracts/Permissioned.sol",
"file": "../Permissioned.sol",
"id": 1053,
"nodeType": "ImportDirective",
"scope": 1245,
"sourceUnit": 1051,
"src": "26:29:6",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1054,
"name": "Permissioned",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1050,
"src": "78:12:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Permissioned_$1050",
"typeString": "contract Permissioned"
}
},
"id": 1055,
"nodeType": "InheritanceSpecifier",
"src": "78:12:6"
}
],
"contractDependencies": [
48,
126,
138,
1050,
1353
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 1244,
"linearizedBaseContracts": [
1244,
1050,
138,
48,
126,
1353
],
"name": "Company",
"nodeType": "ContractDefinition",
"nodes": [
{
"canonicalName": "Company.Employee",
"id": 1060,
"members": [
{
"constant": false,
"id": 1057,
"name": "salary",
"nodeType": "VariableDeclaration",
"scope": 1060,
"src": "124:11:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1056,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "124:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1059,
"name": "lastPayDate",
"nodeType": "VariableDeclaration",
"scope": 1060,
"src": "145:16:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1058,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "145:4:6",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "Employee",
"nodeType": "StructDefinition",
"scope": 1244,
"src": "98:70:6",
"visibility": "public"
},
{
"constant": false,
"id": 1064,
"name": "employees",
"nodeType": "VariableDeclaration",
"scope": 1244,
"src": "174:38:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Employee_$1060_storage_$",
"typeString": "mapping(address => struct Company.Employee)"
},
"typeName": {
"id": 1063,
"keyType": {
"id": 1061,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "182:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "174:28:6",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_struct$_Employee_$1060_storage_$",
"typeString": "mapping(address => struct Company.Employee)"
},
"valueType": {
"contractScope": null,
"id": 1062,
"name": "Employee",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1060,
"src": "193:8:6",
"typeDescriptions": {
"typeIdentifier": "t_struct$_Employee_$1060_storage_ptr",
"typeString": "struct Company.Employee"
}
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1066,
"name": "coo",
"nodeType": "VariableDeclaration",
"scope": 1244,
"src": "218:11:6",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1065,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "218:7:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"body": {
"id": 1081,
"nodeType": "Block",
"src": "269:144:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "6d616e6167654852436f6d70616e79",
"id": 1072,
"isConstant": false,
"isLValue": false,