- Contract name:
- PKD
- Optimization enabled
- false
- Compiler version
- v0.8.0+commit.c7dfd78e
- EVM Version
- istanbul
- Verified at
- 2022-10-27T18:55:42.800492Z
Contract source code
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; pragma experimental ABIEncoderV2; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); constructor() { _setOwner(_msgSender()); } function owner() public view virtual returns (address) { return _owner; } modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } contract PKD is Ownable { mapping(address => PublicKey) public publicKeys; struct PublicKey { string did; string name; uint expires; uint8 status; } event PublicKeyAdded( address indexed entity, string did, string name, uint expires ); event PublicKeyUpdated( address indexed entity, string did, string name, uint expires ); event PublicKeyRevoked( address indexed entity ); function register( address _entity, string memory _did, string memory _name, uint _expires ) onlyOwner external { PublicKey storage pk = publicKeys[_entity]; require( pk.status == 0, "The public key is already registered" ); pk.did = _did; pk.name = _name; pk.expires = _expires; pk.status = 1; emit PublicKeyAdded( _entity, _did, _name, _expires ); } function update( address _entity, string memory _did, string memory _name, uint _expires ) onlyOwner external { PublicKey storage pk = publicKeys[_entity]; require( pk.status == 1, "The public key is not registered or has been revoked" ); pk.did = _did; pk.name = _name; pk.expires = _expires; pk.status = 1; emit PublicKeyUpdated( _entity, _did, _name, _expires ); } function revoke( address _entity ) onlyOwner external { PublicKey storage pk = publicKeys[_entity]; require( pk.status == 1, "The public key is not registered" ); pk.status = 2; emit PublicKeyRevoked( _entity ); } function isActive( address entity ) public view returns (bool) { return publicKeys[entity].status == 1; } }
Contract ABI
[{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"PublicKeyAdded","inputs":[{"type":"address","name":"entity","internalType":"address","indexed":true},{"type":"string","name":"did","internalType":"string","indexed":false},{"type":"string","name":"name","internalType":"string","indexed":false},{"type":"uint256","name":"expires","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"PublicKeyRevoked","inputs":[{"type":"address","name":"entity","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"PublicKeyUpdated","inputs":[{"type":"address","name":"entity","internalType":"address","indexed":true},{"type":"string","name":"did","internalType":"string","indexed":false},{"type":"string","name":"name","internalType":"string","indexed":false},{"type":"uint256","name":"expires","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isActive","inputs":[{"type":"address","name":"entity","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"did","internalType":"string"},{"type":"string","name":"name","internalType":"string"},{"type":"uint256","name":"expires","internalType":"uint256"},{"type":"uint8","name":"status","internalType":"uint8"}],"name":"publicKeys","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"register","inputs":[{"type":"address","name":"_entity","internalType":"address"},{"type":"string","name":"_did","internalType":"string"},{"type":"string","name":"_name","internalType":"string"},{"type":"uint256","name":"_expires","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"revoke","inputs":[{"type":"address","name":"_entity","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"update","inputs":[{"type":"address","name":"_entity","internalType":"address"},{"type":"string","name":"_did","internalType":"string"},{"type":"string","name":"_name","internalType":"string"},{"type":"uint256","name":"_expires","internalType":"uint256"}]}]
Contract Creation Code
0x608060405234801561001057600080fd5b5061002d61002261003260201b60201c565b61003a60201b60201c565b6100fe565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6112528061010d6000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100eb5780639f8a13d714610109578063a3d6f9a914610139578063f2fde38b1461016c57610088565b806315b8ac241461008d578063715018a6146100a957806374a8f103146100b35780638792ffef146100cf575b600080fd5b6100a760048036038101906100a29190610c11565b610188565b005b6100b1610350565b005b6100cd60048036038101906100c89190610be8565b6103d8565b005b6100e960048036038101906100e49190610c11565b610553565b005b6100f361071b565b6040516101009190610ecb565b60405180910390f35b610123600480360381019061011e9190610be8565b610744565b6040516101309190610ee6565b60405180910390f35b610153600480360381019061014e9190610be8565b6107a2565b6040516101639493929190610f46565b60405180910390f35b61018660048036038101906101819190610be8565b6108ef565b005b6101906109e7565b73ffffffffffffffffffffffffffffffffffffffff166101ae61071b565b73ffffffffffffffffffffffffffffffffffffffff1614610204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101fb90610ff9565b60405180910390fd5b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160030160009054906101000a900460ff1660ff161461029e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029590610fd9565b60405180910390fd5b838160000190805190602001906102b6929190610ab3565b50828160010190805190602001906102cf929190610ab3565b5081816002018190555060018160030160006101000a81548160ff021916908360ff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f723d887aa96d32e81a8ce9bee308b1121cdac043f534abd1d2cf0e2615402b6b85858560405161034193929190610f01565b60405180910390a25050505050565b6103586109e7565b73ffffffffffffffffffffffffffffffffffffffff1661037661071b565b73ffffffffffffffffffffffffffffffffffffffff16146103cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c390610ff9565b60405180910390fd5b6103d660006109ef565b565b6103e06109e7565b73ffffffffffffffffffffffffffffffffffffffff166103fe61071b565b73ffffffffffffffffffffffffffffffffffffffff1614610454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044b90610ff9565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160030160009054906101000a900460ff1660ff16146104ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e590610fb9565b60405180910390fd5b60028160030160006101000a81548160ff021916908360ff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f3e9b3945c326d5b02acb76accdb779cb4e642522f75894270be2881eda642d8760405160405180910390a25050565b61055b6109e7565b73ffffffffffffffffffffffffffffffffffffffff1661057961071b565b73ffffffffffffffffffffffffffffffffffffffff16146105cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c690610ff9565b60405180910390fd5b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160030160009054906101000a900460ff1660ff1614610669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066090611019565b60405180910390fd5b83816000019080519060200190610681929190610ab3565b508281600101908051906020019061069a929190610ab3565b5081816002018190555060018160030160006101000a81548160ff021916908360ff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f579bad6bab18e7c22b055334de0b50297fad1ef23adc530b96f1c206de4ac98a85858560405161070c93929190610f01565b60405180910390a25050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160009054906101000a900460ff1660ff16149050919050565b60016020528060005260406000206000915090508060000180546107c59061114d565b80601f01602080910402602001604051908101604052809291908181526020018280546107f19061114d565b801561083e5780601f106108135761010080835404028352916020019161083e565b820191906000526020600020905b81548152906001019060200180831161082157829003601f168201915b5050505050908060010180546108539061114d565b80601f016020809104026020016040519081016040528092919081815260200182805461087f9061114d565b80156108cc5780601f106108a1576101008083540402835291602001916108cc565b820191906000526020600020905b8154815290600101906020018083116108af57829003601f168201915b5050505050908060020154908060030160009054906101000a900460ff16905084565b6108f76109e7565b73ffffffffffffffffffffffffffffffffffffffff1661091561071b565b73ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290610ff9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d290610f99565b60405180910390fd5b6109e4816109ef565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054610abf9061114d565b90600052602060002090601f016020900481019282610ae15760008555610b28565b82601f10610afa57805160ff1916838001178555610b28565b82800160010185558215610b28579182015b82811115610b27578251825591602001919060010190610b0c565b5b509050610b359190610b39565b5090565b5b80821115610b52576000816000905550600101610b3a565b5090565b6000610b69610b648461106a565b611039565b905082815260208101848484011115610b8157600080fd5b610b8c84828561110b565b509392505050565b600081359050610ba3816111ee565b92915050565b600082601f830112610bba57600080fd5b8135610bca848260208601610b56565b91505092915050565b600081359050610be281611205565b92915050565b600060208284031215610bfa57600080fd5b6000610c0884828501610b94565b91505092915050565b60008060008060808587031215610c2757600080fd5b6000610c3587828801610b94565b945050602085013567ffffffffffffffff811115610c5257600080fd5b610c5e87828801610ba9565b935050604085013567ffffffffffffffff811115610c7b57600080fd5b610c8787828801610ba9565b9250506060610c9887828801610bd3565b91505092959194509250565b610cad816110b6565b82525050565b610cbc816110c8565b82525050565b6000610ccd8261109a565b610cd781856110a5565b9350610ce781856020860161111a565b610cf0816111dd565b840191505092915050565b6000610d086026836110a5565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610d6e6020836110a5565b91507f546865207075626c6963206b6579206973206e6f7420726567697374657265646000830152602082019050919050565b6000610dae6034836110a5565b91507f546865207075626c6963206b6579206973206e6f74207265676973746572656460008301527f206f7220686173206265656e207265766f6b65640000000000000000000000006020830152604082019050919050565b6000610e146020836110a5565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000610e546024836110a5565b91507f546865207075626c6963206b657920697320616c72656164792072656769737460008301527f65726564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b610eb6816110f4565b82525050565b610ec5816110fe565b82525050565b6000602082019050610ee06000830184610ca4565b92915050565b6000602082019050610efb6000830184610cb3565b92915050565b60006060820190508181036000830152610f1b8186610cc2565b90508181036020830152610f2f8185610cc2565b9050610f3e6040830184610ead565b949350505050565b60006080820190508181036000830152610f608187610cc2565b90508181036020830152610f748186610cc2565b9050610f836040830185610ead565b610f906060830184610ebc565b95945050505050565b60006020820190508181036000830152610fb281610cfb565b9050919050565b60006020820190508181036000830152610fd281610d61565b9050919050565b60006020820190508181036000830152610ff281610da1565b9050919050565b6000602082019050818103600083015261101281610e07565b9050919050565b6000602082019050818103600083015261103281610e47565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156110605761105f6111ae565b5b8060405250919050565b600067ffffffffffffffff821115611085576110846111ae565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b60006110c1826110d4565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561113857808201518184015260208101905061111d565b83811115611147576000848401525b50505050565b6000600282049050600182168061116557607f821691505b602082108114156111795761117861117f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6111f7816110b6565b811461120257600080fd5b50565b61120e816110f4565b811461121957600080fd5b5056fea2646970667358221220cc7256fe22dc2c67650f9c08711bf462fe7879356028956e0c1a201510d77dbf64736f6c63430008000033
Deployed ByteCode
0x608060405234801561001057600080fd5b50600436106100885760003560e01c80638da5cb5b1161005b5780638da5cb5b146100eb5780639f8a13d714610109578063a3d6f9a914610139578063f2fde38b1461016c57610088565b806315b8ac241461008d578063715018a6146100a957806374a8f103146100b35780638792ffef146100cf575b600080fd5b6100a760048036038101906100a29190610c11565b610188565b005b6100b1610350565b005b6100cd60048036038101906100c89190610be8565b6103d8565b005b6100e960048036038101906100e49190610c11565b610553565b005b6100f361071b565b6040516101009190610ecb565b60405180910390f35b610123600480360381019061011e9190610be8565b610744565b6040516101309190610ee6565b60405180910390f35b610153600480360381019061014e9190610be8565b6107a2565b6040516101639493929190610f46565b60405180910390f35b61018660048036038101906101819190610be8565b6108ef565b005b6101906109e7565b73ffffffffffffffffffffffffffffffffffffffff166101ae61071b565b73ffffffffffffffffffffffffffffffffffffffff1614610204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101fb90610ff9565b60405180910390fd5b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160030160009054906101000a900460ff1660ff161461029e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161029590610fd9565b60405180910390fd5b838160000190805190602001906102b6929190610ab3565b50828160010190805190602001906102cf929190610ab3565b5081816002018190555060018160030160006101000a81548160ff021916908360ff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f723d887aa96d32e81a8ce9bee308b1121cdac043f534abd1d2cf0e2615402b6b85858560405161034193929190610f01565b60405180910390a25050505050565b6103586109e7565b73ffffffffffffffffffffffffffffffffffffffff1661037661071b565b73ffffffffffffffffffffffffffffffffffffffff16146103cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103c390610ff9565b60405180910390fd5b6103d660006109ef565b565b6103e06109e7565b73ffffffffffffffffffffffffffffffffffffffff166103fe61071b565b73ffffffffffffffffffffffffffffffffffffffff1614610454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161044b90610ff9565b60405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060018160030160009054906101000a900460ff1660ff16146104ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104e590610fb9565b60405180910390fd5b60028160030160006101000a81548160ff021916908360ff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f3e9b3945c326d5b02acb76accdb779cb4e642522f75894270be2881eda642d8760405160405180910390a25050565b61055b6109e7565b73ffffffffffffffffffffffffffffffffffffffff1661057961071b565b73ffffffffffffffffffffffffffffffffffffffff16146105cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105c690610ff9565b60405180910390fd5b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160030160009054906101000a900460ff1660ff1614610669576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066090611019565b60405180910390fd5b83816000019080519060200190610681929190610ab3565b508281600101908051906020019061069a929190610ab3565b5081816002018190555060018160030160006101000a81548160ff021916908360ff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f579bad6bab18e7c22b055334de0b50297fad1ef23adc530b96f1c206de4ac98a85858560405161070c93929190610f01565b60405180910390a25050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060018060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160009054906101000a900460ff1660ff16149050919050565b60016020528060005260406000206000915090508060000180546107c59061114d565b80601f01602080910402602001604051908101604052809291908181526020018280546107f19061114d565b801561083e5780601f106108135761010080835404028352916020019161083e565b820191906000526020600020905b81548152906001019060200180831161082157829003601f168201915b5050505050908060010180546108539061114d565b80601f016020809104026020016040519081016040528092919081815260200182805461087f9061114d565b80156108cc5780601f106108a1576101008083540402835291602001916108cc565b820191906000526020600020905b8154815290600101906020018083116108af57829003601f168201915b5050505050908060020154908060030160009054906101000a900460ff16905084565b6108f76109e7565b73ffffffffffffffffffffffffffffffffffffffff1661091561071b565b73ffffffffffffffffffffffffffffffffffffffff161461096b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096290610ff9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156109db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109d290610f99565b60405180910390fd5b6109e4816109ef565b50565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b828054610abf9061114d565b90600052602060002090601f016020900481019282610ae15760008555610b28565b82601f10610afa57805160ff1916838001178555610b28565b82800160010185558215610b28579182015b82811115610b27578251825591602001919060010190610b0c565b5b509050610b359190610b39565b5090565b5b80821115610b52576000816000905550600101610b3a565b5090565b6000610b69610b648461106a565b611039565b905082815260208101848484011115610b8157600080fd5b610b8c84828561110b565b509392505050565b600081359050610ba3816111ee565b92915050565b600082601f830112610bba57600080fd5b8135610bca848260208601610b56565b91505092915050565b600081359050610be281611205565b92915050565b600060208284031215610bfa57600080fd5b6000610c0884828501610b94565b91505092915050565b60008060008060808587031215610c2757600080fd5b6000610c3587828801610b94565b945050602085013567ffffffffffffffff811115610c5257600080fd5b610c5e87828801610ba9565b935050604085013567ffffffffffffffff811115610c7b57600080fd5b610c8787828801610ba9565b9250506060610c9887828801610bd3565b91505092959194509250565b610cad816110b6565b82525050565b610cbc816110c8565b82525050565b6000610ccd8261109a565b610cd781856110a5565b9350610ce781856020860161111a565b610cf0816111dd565b840191505092915050565b6000610d086026836110a5565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000610d6e6020836110a5565b91507f546865207075626c6963206b6579206973206e6f7420726567697374657265646000830152602082019050919050565b6000610dae6034836110a5565b91507f546865207075626c6963206b6579206973206e6f74207265676973746572656460008301527f206f7220686173206265656e207265766f6b65640000000000000000000000006020830152604082019050919050565b6000610e146020836110a5565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b6000610e546024836110a5565b91507f546865207075626c6963206b657920697320616c72656164792072656769737460008301527f65726564000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b610eb6816110f4565b82525050565b610ec5816110fe565b82525050565b6000602082019050610ee06000830184610ca4565b92915050565b6000602082019050610efb6000830184610cb3565b92915050565b60006060820190508181036000830152610f1b8186610cc2565b90508181036020830152610f2f8185610cc2565b9050610f3e6040830184610ead565b949350505050565b60006080820190508181036000830152610f608187610cc2565b90508181036020830152610f748186610cc2565b9050610f836040830185610ead565b610f906060830184610ebc565b95945050505050565b60006020820190508181036000830152610fb281610cfb565b9050919050565b60006020820190508181036000830152610fd281610d61565b9050919050565b60006020820190508181036000830152610ff281610da1565b9050919050565b6000602082019050818103600083015261101281610e07565b9050919050565b6000602082019050818103600083015261103281610e47565b9050919050565b6000604051905081810181811067ffffffffffffffff821117156110605761105f6111ae565b5b8060405250919050565b600067ffffffffffffffff821115611085576110846111ae565b5b601f19601f8301169050602081019050919050565b600081519050919050565b600082825260208201905092915050565b60006110c1826110d4565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b82818337600083830152505050565b60005b8381101561113857808201518184015260208101905061111d565b83811115611147576000848401525b50505050565b6000600282049050600182168061116557607f821691505b602082108114156111795761117861117f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6111f7816110b6565b811461120257600080fd5b50565b61120e816110f4565b811461121957600080fd5b5056fea2646970667358221220cc7256fe22dc2c67650f9c08711bf462fe7879356028956e0c1a201510d77dbf64736f6c63430008000033