From e5de3a473c96e450df75811f432a1ee98e21a510 Mon Sep 17 00:00:00 2001 From: Joel Torstensson Date: Wed, 18 Apr 2018 11:04:47 +0200 Subject: [PATCH 1/8] Use bytes32 instead of string --- contracts/EthereumDIDRegistry.sol | 38 +- test/ethereum_did_registry.js | 41 +- truffle.js | 7 +- yarn.lock | 2758 +++++++++++++++++++---------- 4 files changed, 1916 insertions(+), 928 deletions(-) diff --git a/contracts/EthereumDIDRegistry.sol b/contracts/EthereumDIDRegistry.sol index 63588f3..37313b1 100644 --- a/contracts/EthereumDIDRegistry.sol +++ b/contracts/EthereumDIDRegistry.sol @@ -20,7 +20,7 @@ contract EthereumDIDRegistry { event DIDDelegateChanged( address indexed identity, - string delegateType, + bytes32 delegateType, address delegate, uint validTo, uint previousChange @@ -28,7 +28,7 @@ contract EthereumDIDRegistry { event DIDAttributeChanged( address indexed identity, - string name, + bytes32 name, bytes value, uint validTo, uint previousChange @@ -52,12 +52,12 @@ contract EthereumDIDRegistry { return signer; } - function validDelegate(address identity, string delegateType, address delegate) public view returns(bool) { + function validDelegate(address identity, bytes32 delegateType, address delegate) public view returns(bool) { uint validity = delegates[identity][keccak256(delegateType)][delegate]; return (validity >= block.timestamp); } - function validDelegateSignature(address identity, string delegateType, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 hash) public returns(address) { + function validDelegateSignature(address identity, bytes32 delegateType, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 hash) public returns(address) { address signer = ecrecover(hash, sigV, sigR, sigS); require(validDelegate(identity, delegateType, signer)); nonce[signer]++; @@ -79,60 +79,60 @@ contract EthereumDIDRegistry { changeOwner(identity, checkSignature(identity, sigV, sigR, sigS, hash), newOwner); } - function addDelegate(address identity, address actor, string delegateType, address delegate, uint validity ) internal onlyOwner(identity, actor) { + function addDelegate(address identity, address actor, bytes32 delegateType, address delegate, uint validity ) internal onlyOwner(identity, actor) { delegates[identity][keccak256(delegateType)][delegate] = block.timestamp + validity; DIDDelegateChanged(identity, delegateType, delegate, block.timestamp + validity, changed[identity]); changed[identity] = block.number; } - function addDelegate(address identity, string delegateType, address delegate, uint validity) public { + function addDelegate(address identity, bytes32 delegateType, address delegate, uint validity) public { addDelegate(identity, msg.sender, delegateType, delegate, validity); } - function addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, string delegateType, address delegate, uint validity) public { - bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "addDelegate", delegateType, delegate, validity); + function addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate, uint validity) public { + bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "addDelegate", delegateType, delegate, validity); addDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate, validity); } - function revokeDelegate(address identity, address actor, string delegateType, address delegate) internal onlyOwner(identity, actor) { + function revokeDelegate(address identity, address actor, bytes32 delegateType, address delegate) internal onlyOwner(identity, actor) { delegates[identity][keccak256(delegateType)][delegate] = 0; DIDDelegateChanged(identity, delegateType, delegate, 0, changed[identity]); changed[identity] = block.number; } - function revokeDelegate(address identity, string delegateType, address delegate) public { + function revokeDelegate(address identity, bytes32 delegateType, address delegate) public { revokeDelegate(identity, msg.sender, delegateType, delegate); } - function revokeDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, string delegateType, address delegate) public { - bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "revokeDelegate", delegateType, delegate); + function revokeDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate) public { + bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "revokeDelegate", delegateType, delegate); revokeDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate); } - function setAttribute(address identity, address actor, string name, bytes value, uint validity ) internal onlyOwner(identity, actor) { + function setAttribute(address identity, address actor, bytes32 name, bytes value, uint validity ) internal onlyOwner(identity, actor) { DIDAttributeChanged(identity, name, value, block.timestamp + validity, changed[identity]); changed[identity] = block.number; } - function setAttribute(address identity, string name, bytes value, uint validity) public { + function setAttribute(address identity, bytes32 name, bytes value, uint validity) public { setAttribute(identity, msg.sender, name, value, validity); } - function setAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, string name, bytes value, uint validity) public { - bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identity], identity, "setAttribute", name, value, validity); + function setAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes value, uint validity) public { + bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identity], identity, "setAttribute", name, value, validity); setAttribute(identity, checkSignature(identity, sigV, sigR, sigS, hash), name, value, validity); } - function revokeAttribute(address identity, address actor, string name, bytes value ) internal onlyOwner(identity, actor) { + function revokeAttribute(address identity, address actor, bytes32 name, bytes value ) internal onlyOwner(identity, actor) { DIDAttributeChanged(identity, name, value, 0, changed[identity]); changed[identity] = block.number; } - function revokeAttribute(address identity, string name, bytes value) public { + function revokeAttribute(address identity, bytes32 name, bytes value) public { revokeAttribute(identity, msg.sender, name, value); } - function revokeAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, string name, bytes value) public { + function revokeAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes value) public { bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identity], identity, "revokeAttribute", name, value); revokeAttribute(identity, checkSignature(identity, sigV, sigR, sigS, hash), name, value); } diff --git a/test/ethereum_did_registry.js b/test/ethereum_did_registry.js index e5da644..223f41c 100644 --- a/test/ethereum_did_registry.js +++ b/test/ethereum_did_registry.js @@ -19,7 +19,7 @@ contract('EthereumDIDRegistry', function(accounts) { const privateKey2 = Buffer.from('a285ab66393c5fdda46d6fbad9e27fafd438254ab72ad5acb681a0e9f20f5d7a', 'hex') const signerAddress2 = '0xea91e58e9fa466786726f0a947e8583c7c5b3185' - + // console.log({identity,identity2, delegate, delegate2, badboy}) before(async () => { didReg = await EthereumDIDRegistry.deployed() @@ -48,7 +48,16 @@ contract('EthereumDIDRegistry', function(accounts) { } return str } - + + function bytes32ToString (bytes) { + return Buffer.from(bytes.slice(2).split('00')[0], 'hex').toString() + } + + function stringToBytes32 (str) { + const buffstr = Buffer.from(str).toString('hex') + return buffstr + '0'.repeat(64 - buffstr.length) + } + function leftPad (data, size = 64) { if (data.length === size) return data return '0'.repeat(size - data.length) + data @@ -63,7 +72,7 @@ contract('EthereumDIDRegistry', function(accounts) { const publicKey = ethutil.ecrecover( hash, signature.v, - signature.r, + signature.r, signature.s ) return { @@ -117,7 +126,7 @@ contract('EthereumDIDRegistry', function(accounts) { }) describe('as new owner', () => { - let tx + let tx before(async () => { previousChange = await didReg.changed(identity) tx = await didReg.changeOwner(identity, delegate2, {from: delegate}) @@ -214,7 +223,7 @@ contract('EthereumDIDRegistry', function(accounts) { const event = tx.logs[0] assert.equal(event.event, 'DIDDelegateChanged') assert.equal(event.args.identity, identity) - assert.equal(event.args.delegateType, 'attestor') + assert.equal(bytes32ToString(event.args.delegateType), 'attestor') assert.equal(event.args.delegate, delegate3) assert.equal(event.args.validTo.toNumber(), block.timestamp + 86400) assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) @@ -237,7 +246,7 @@ contract('EthereumDIDRegistry', function(accounts) { let tx before(async () => { previousChange = await didReg.changed(signerAddress) - const sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('addDelegateattestor').toString('hex') + stripHexPrefix(delegate) + leftPad(new BN(86400).toString(16))) + const sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('addDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate) + leftPad(new BN(86400).toString(16))) tx = await didReg.addDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate, 86400, {from: badboy}) block = await getBlock(tx.receipt.blockNumber) }) @@ -253,7 +262,7 @@ contract('EthereumDIDRegistry', function(accounts) { const event = tx.logs[0] assert.equal(event.event, 'DIDDelegateChanged') assert.equal(event.args.identity, signerAddress) - assert.equal(event.args.delegateType, 'attestor') + assert.equal(bytes32ToString(event.args.delegateType), 'attestor') assert.equal(event.args.delegate, delegate) assert.equal(event.args.validTo.toNumber(), block.timestamp + 86400) assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) @@ -288,7 +297,7 @@ contract('EthereumDIDRegistry', function(accounts) { const event = tx.logs[0] assert.equal(event.event, 'DIDDelegateChanged') assert.equal(event.args.identity, identity) - assert.equal(event.args.delegateType, 'attestor') + assert.equal(bytes32ToString(event.args.delegateType), 'attestor') assert.equal(event.args.delegate, delegate3) assert.equal(event.args.validTo.toNumber(), 0) assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) @@ -311,7 +320,7 @@ contract('EthereumDIDRegistry', function(accounts) { let tx before(async () => { previousChange = await didReg.changed(signerAddress) - const sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('revokeDelegateattestor').toString('hex') + stripHexPrefix(delegate)) + const sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('revokeDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate)) tx = await didReg.revokeDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate, {from: badboy}) block = await getBlock(tx.receipt.blockNumber) }) @@ -327,7 +336,7 @@ contract('EthereumDIDRegistry', function(accounts) { const event = tx.logs[0] assert.equal(event.event, 'DIDDelegateChanged') assert.equal(event.args.identity, signerAddress) - assert.equal(event.args.delegateType, 'attestor') + assert.equal(bytes32ToString(event.args.delegateType), 'attestor') assert.equal(event.args.delegate, delegate) assert.equal(event.args.validTo.toNumber(), 0) assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) @@ -354,7 +363,7 @@ contract('EthereumDIDRegistry', function(accounts) { const event = tx.logs[0] assert.equal(event.event, 'DIDAttributeChanged') assert.equal(event.args.identity, identity) - assert.equal(event.args.name, 'encryptionKey') + assert.equal(bytes32ToString(event.args.name), 'encryptionKey') assert.equal(event.args.value, '0x6d796b6579') assert.equal(event.args.validTo.toNumber(), block.timestamp + 86400) assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) @@ -378,7 +387,7 @@ contract('EthereumDIDRegistry', function(accounts) { let tx before(async () => { previousChange = await didReg.changed(signerAddress) - const sig = await signData(signerAddress, signerAddress, privateKey2, Buffer.from('setAttributeencryptionKeymykey').toString('hex') + leftPad(new BN(86400).toString(16))) + const sig = await signData(signerAddress, signerAddress, privateKey2, Buffer.from("setAttribute").toString('hex') + stringToBytes32("encryptionKey") + Buffer.from('mykey').toString('hex') + leftPad(new BN(86400).toString(16))) tx = await didReg.setAttributeSigned(signerAddress, sig.v, sig.r, sig.s, 'encryptionKey', 'mykey', 86400, {from: badboy}) block = await getBlock(tx.receipt.blockNumber) }) @@ -390,7 +399,7 @@ contract('EthereumDIDRegistry', function(accounts) { const event = tx.logs[0] assert.equal(event.event, 'DIDAttributeChanged') assert.equal(event.args.identity, signerAddress) - assert.equal(event.args.name, 'encryptionKey') + assert.equal(bytes32ToString(event.args.name), 'encryptionKey') assert.equal(event.args.value, '0x6d796b6579') assert.equal(event.args.validTo.toNumber(), block.timestamp + 86400) assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) @@ -417,7 +426,7 @@ contract('EthereumDIDRegistry', function(accounts) { const event = tx.logs[0] assert.equal(event.event, 'DIDAttributeChanged') assert.equal(event.args.identity, identity) - assert.equal(event.args.name, 'encryptionKey') + assert.equal(bytes32ToString(event.args.name), 'encryptionKey') assert.equal(event.args.value, '0x6d796b6579') assert.equal(event.args.validTo.toNumber(), 0) assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) @@ -441,7 +450,7 @@ contract('EthereumDIDRegistry', function(accounts) { let tx before(async () => { previousChange = await didReg.changed(signerAddress) - const sig = await signData(signerAddress, signerAddress, privateKey2, Buffer.from('revokeAttributeencryptionKeymykey').toString('hex')) + const sig = await signData(signerAddress, signerAddress, privateKey2, Buffer.from('revokeAttribute').toString('hex') + stringToBytes32('encryptionKey') + Buffer.from('mykey').toString('hex')) tx = await didReg.revokeAttributeSigned(signerAddress, sig.v, sig.r, sig.s, 'encryptionKey', 'mykey', {from: badboy}) block = await getBlock(tx.receipt.blockNumber) }) @@ -453,7 +462,7 @@ contract('EthereumDIDRegistry', function(accounts) { const event = tx.logs[0] assert.equal(event.event, 'DIDAttributeChanged') assert.equal(event.args.identity, signerAddress) - assert.equal(event.args.name, 'encryptionKey') + assert.equal(bytes32ToString(event.args.name), 'encryptionKey') assert.equal(event.args.value, '0x6d796b6579') assert.equal(event.args.validTo.toNumber(), 0) assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) diff --git a/truffle.js b/truffle.js index fc47ac6..e4701c9 100644 --- a/truffle.js +++ b/truffle.js @@ -1,9 +1,10 @@ +const TestRPC = require("ganache-cli"); + module.exports = { networks: { development: { - host: "localhost", - port: 7545, + provider: TestRPC.provider({port: 7545}), network_id: "*" // Match any network id } } -}; \ No newline at end of file +}; diff --git a/yarn.lock b/yarn.lock index bea7279..9764e77 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,9 +2,9 @@ # yarn lockfile v1 -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" +"@sindresorhus/is@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.7.0.tgz#9a06f4f137ee84d7df0460c1fdb1135ffa6c50fd" abstract-leveldown@~2.6.0: version "2.6.3" @@ -18,12 +18,6 @@ abstract-leveldown@~2.7.1: dependencies: xtend "~4.0.0" -acorn-dynamic-import@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/acorn-dynamic-import/-/acorn-dynamic-import-2.0.2.tgz#c752bd210bef679501b6c6cb7fc84f8f47158cc4" - dependencies: - acorn "^4.0.3" - acorn-jsx@^3.0.0: version "3.0.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-3.0.1.tgz#afdf9488fb1ecefc8348f6fb22f464e32a58b36b" @@ -34,11 +28,7 @@ acorn@^3.0.4: version "3.3.0" resolved "https://registry.yarnpkg.com/acorn/-/acorn-3.3.0.tgz#45e37fb39e8da3f25baee3ff5369e2bb5f22017a" -acorn@^4.0.3: - version "4.0.13" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-4.0.13.tgz#105495ae5361d697bd195c825192e1ad7f253787" - -acorn@^5.0.0, acorn@^5.4.0: +acorn@^5.4.0: version "5.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-5.4.1.tgz#fdc58d9d17f4a4e98d102ded826a9b9759125102" @@ -46,17 +36,10 @@ aes-js@^0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-0.2.4.tgz#94b881ab717286d015fa219e08fb66709dda5a3d" -ajv-keywords@^3.0.0, ajv-keywords@^3.1.0: +ajv-keywords@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.1.0.tgz#ac2b27939c543e95d2c06e7f7f5c27be4aa543be" -ajv@^4.9.1: - version "4.11.8" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536" - dependencies: - co "^4.6.0" - json-stable-stringify "^1.0.1" - ajv@^5.1.0, ajv@^5.2.0: version "5.5.2" resolved "https://registry.yarnpkg.com/ajv/-/ajv-5.5.2.tgz#73b5eeca3fab653e3d3f9422b341ad42205dc965" @@ -66,7 +49,7 @@ ajv@^5.1.0, ajv@^5.2.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -ajv@^6.0.1, ajv@^6.1.0: +ajv@^6.0.1: version "6.1.1" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.1.1.tgz#978d597fbc2b7d0e5a5c3ddeb149a682f2abfa0e" dependencies: @@ -74,13 +57,9 @@ ajv@^6.0.1, ajv@^6.1.0: fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.3.0" -align-text@^0.1.1, align-text@^0.1.3: - version "0.1.4" - resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" - dependencies: - kind-of "^3.0.2" - longest "^1.0.1" - repeat-string "^1.5.2" +ansi-escapes@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-1.4.0.tgz#d3a8a83b319aa67793662b13e761c7911422306e" ansi-escapes@^3.0.0: version "3.0.0" @@ -104,27 +83,23 @@ ansi-styles@^3.2.0: dependencies: color-convert "^1.9.0" +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + dependencies: + color-convert "^1.9.0" + +ansi-styles@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-1.0.0.tgz#cb102df1c56f5123eab8b67cd7b98027a0279178" + antlr4@4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/antlr4/-/antlr4-4.7.0.tgz#297f956ddc06f83397fc0990ecf2e0cf20bfbbee" -anymatch@^1.3.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" - dependencies: - micromatch "^2.1.5" - normalize-path "^2.0.0" - -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - -are-we-there-yet@~1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d" - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" +any-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/any-observable/-/any-observable-0.2.0.tgz#c67870058003579009083f54ac0abafb5c33d242" argparse@^1.0.7: version "1.0.10" @@ -142,6 +117,10 @@ arr-flatten@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + array-union@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -160,14 +139,6 @@ arrify@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" -asn1.js@^4.0.0: - version "4.10.1" - resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-4.10.1.tgz#b9c2bf5805f1e64aadeed6df3a2bfafb5a73f5a0" - dependencies: - bn.js "^4.0.0" - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - asn1@~0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86" @@ -176,19 +147,13 @@ assert-plus@1.0.0, assert-plus@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" -assert-plus@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" - -assert@^1.1.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/assert/-/assert-1.4.1.tgz#99912d591836b5a6f5b345c0f07eefc08fc65d91" - dependencies: - util "0.10.3" +ast-types@0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.10.1.tgz#f52fca9715579a14f841d67d7f8d25432ab6a3dd" -async-each@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d" +ast-types@0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.11.3.tgz#c20757fe72ee71278ea0ff3d87e5c2ca30d9edf8" async-eventemitter@^0.2.2: version "0.2.4" @@ -196,11 +161,11 @@ async-eventemitter@^0.2.2: dependencies: async "^2.4.0" -async@^1.4.2: +async@^1.4.2, async@^1.5.0: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" -async@^2.0.1, async@^2.1.2, async@^2.4.0: +async@^2.0.1, async@^2.1.2, async@^2.4.0, async@^2.6.0: version "2.6.0" resolved "https://registry.yarnpkg.com/async/-/async-2.6.0.tgz#61a29abb6fcc026fea77e56d1c6ec53a795951f4" dependencies: @@ -210,19 +175,15 @@ asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" -aws-sign2@~0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f" - aws-sign2@~0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" -aws4@^1.2.1, aws4@^1.6.0: +aws4@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e" -babel-code-frame@^6.22.0: +babel-code-frame@^6.22.0, babel-code-frame@^6.26.0: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b" dependencies: @@ -230,6 +191,586 @@ babel-code-frame@^6.22.0: esutils "^2.0.2" js-tokens "^3.0.2" +babel-core@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-core/-/babel-core-6.26.0.tgz#af32f78b31a6fcef119c87b0fd8d9753f03a0bb8" + dependencies: + babel-code-frame "^6.26.0" + babel-generator "^6.26.0" + babel-helpers "^6.24.1" + babel-messages "^6.23.0" + babel-register "^6.26.0" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + convert-source-map "^1.5.0" + debug "^2.6.8" + json5 "^0.5.1" + lodash "^4.17.4" + minimatch "^3.0.4" + path-is-absolute "^1.0.1" + private "^0.1.7" + slash "^1.0.0" + source-map "^0.5.6" + +babel-generator@^6.26.0: + version "6.26.1" + resolved "https://registry.yarnpkg.com/babel-generator/-/babel-generator-6.26.1.tgz#1844408d3b8f0d35a404ea7ac180f087a601bd90" + dependencies: + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + detect-indent "^4.0.0" + jsesc "^1.3.0" + lodash "^4.17.4" + source-map "^0.5.7" + trim-right "^1.0.1" + +babel-helper-bindify-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-bindify-decorators/-/babel-helper-bindify-decorators-6.24.1.tgz#14c19e5f142d7b47f19a52431e52b1ccbc40a330" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-builder-binary-assignment-operator-visitor@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz#cce4517ada356f4220bcae8a02c2b346f9a56664" + dependencies: + babel-helper-explode-assignable-expression "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-call-delegate@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz#ece6aacddc76e41c3461f88bfc575bd0daa2df8d" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-define-map@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz#a5f56dab41a25f97ecb498c7ebaca9819f95be5f" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-explode-assignable-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz#f25b82cf7dc10433c55f70592d5746400ac22caa" + dependencies: + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-explode-class@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-explode-class/-/babel-helper-explode-class-6.24.1.tgz#7dc2a3910dee007056e1e31d640ced3d54eaa9eb" + dependencies: + babel-helper-bindify-decorators "^6.24.1" + babel-runtime "^6.22.0" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz#d3475b8c03ed98242a25b48351ab18399d3580a9" + dependencies: + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-get-function-arity@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz#8f7782aa93407c41d3aa50908f89b031b1b6853d" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-hoist-variables@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz#1ecb27689c9d25513eadbc9914a73f5408be7a76" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-optimise-call-expression@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz#f7a13427ba9f73f8f4fa993c54a97882d1244257" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-helper-regex@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz#325c59f902f82f24b74faceed0363954f6495e72" + dependencies: + babel-runtime "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-helper-remap-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz#5ec581827ad723fecdd381f1c928390676e4551b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helper-replace-supers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz#bf6dbfe43938d17369a213ca8a8bf74b6a90ab1a" + dependencies: + babel-helper-optimise-call-expression "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-helpers@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-helpers/-/babel-helpers-6.24.1.tgz#3471de9caec388e5c850e597e58a26ddf37602b2" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-messages@^6.23.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-messages/-/babel-messages-6.23.0.tgz#f3cdf4703858035b2a2951c6ec5edf6c62f2630e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-check-es2015-constants@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz#35157b101426fd2ffd3da3f75c7d1e91835bbf8a" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-syntax-async-functions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz#cad9cad1191b5ad634bf30ae0872391e0647be95" + +babel-plugin-syntax-async-generators@^6.5.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-async-generators/-/babel-plugin-syntax-async-generators-6.13.0.tgz#6bc963ebb16eccbae6b92b596eb7f35c342a8b9a" + +babel-plugin-syntax-class-constructor-call@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-constructor-call/-/babel-plugin-syntax-class-constructor-call-6.18.0.tgz#9cb9d39fe43c8600bec8146456ddcbd4e1a76416" + +babel-plugin-syntax-class-properties@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-class-properties/-/babel-plugin-syntax-class-properties-6.13.0.tgz#d7eb23b79a317f8543962c505b827c7d6cac27de" + +babel-plugin-syntax-decorators@^6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-decorators/-/babel-plugin-syntax-decorators-6.13.0.tgz#312563b4dbde3cc806cee3e416cceeaddd11ac0b" + +babel-plugin-syntax-dynamic-import@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-dynamic-import/-/babel-plugin-syntax-dynamic-import-6.18.0.tgz#8d6a26229c83745a9982a441051572caa179b1da" + +babel-plugin-syntax-exponentiation-operator@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz#9ee7e8337290da95288201a6a57f4170317830de" + +babel-plugin-syntax-export-extensions@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-export-extensions/-/babel-plugin-syntax-export-extensions-6.13.0.tgz#70a1484f0f9089a4e84ad44bac353c95b9b12721" + +babel-plugin-syntax-flow@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz#4c3ab20a2af26aa20cd25995c398c4eb70310c8d" + +babel-plugin-syntax-object-rest-spread@^6.8.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" + +babel-plugin-syntax-trailing-function-commas@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" + +babel-plugin-transform-async-generator-functions@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-generator-functions/-/babel-plugin-transform-async-generator-functions-6.24.1.tgz#f058900145fd3e9907a6ddf28da59f215258a5db" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-generators "^6.5.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-async-to-generator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" + dependencies: + babel-helper-remap-async-to-generator "^6.24.1" + babel-plugin-syntax-async-functions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-class-constructor-call@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-constructor-call/-/babel-plugin-transform-class-constructor-call-6.24.1.tgz#80dc285505ac067dcb8d6c65e2f6f11ab7765ef9" + dependencies: + babel-plugin-syntax-class-constructor-call "^6.18.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-class-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-class-properties/-/babel-plugin-transform-class-properties-6.24.1.tgz#6a79763ea61d33d36f37b611aa9def81a81b46ac" + dependencies: + babel-helper-function-name "^6.24.1" + babel-plugin-syntax-class-properties "^6.8.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-decorators@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-decorators/-/babel-plugin-transform-decorators-6.24.1.tgz#788013d8f8c6b5222bdf7b344390dfd77569e24d" + dependencies: + babel-helper-explode-class "^6.24.1" + babel-plugin-syntax-decorators "^6.13.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-arrow-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz#452692cb711d5f79dc7f85e440ce41b9f244d221" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoped-functions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz#bbc51b49f964d70cb8d8e0b94e820246ce3a6141" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-block-scoping@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz#d70f5299c1308d05c12f463813b0a09e73b1895f" + dependencies: + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + lodash "^4.17.4" + +babel-plugin-transform-es2015-classes@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz#5a4c58a50c9c9461e564b4b2a3bfabc97a2584db" + dependencies: + babel-helper-define-map "^6.24.1" + babel-helper-function-name "^6.24.1" + babel-helper-optimise-call-expression "^6.24.1" + babel-helper-replace-supers "^6.24.1" + babel-messages "^6.23.0" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-computed-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz#6fe2a8d16895d5634f4cd999b6d3480a308159b3" + dependencies: + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-destructuring@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz#997bb1f1ab967f682d2b0876fe358d60e765c56d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-duplicate-keys@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz#73eb3d310ca969e3ef9ec91c53741a6f1576423e" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-for-of@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz#f47c95b2b613df1d3ecc2fdb7573623c75248691" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-function-name@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz#834c89853bc36b1af0f3a4c5dbaa94fd8eacaa8b" + dependencies: + babel-helper-function-name "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz#4f54a02d6cd66cf915280019a31d31925377ca2e" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-modules-amd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz#3b3e54017239842d6d19c3011c4bd2f00a00d154" + dependencies: + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-commonjs@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz#0d8394029b7dc6abe1a97ef181e00758dd2e5d8a" + dependencies: + babel-plugin-transform-strict-mode "^6.24.1" + babel-runtime "^6.26.0" + babel-template "^6.26.0" + babel-types "^6.26.0" + +babel-plugin-transform-es2015-modules-systemjs@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz#ff89a142b9119a906195f5f106ecf305d9407d23" + dependencies: + babel-helper-hoist-variables "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-modules-umd@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz#ac997e6285cd18ed6176adb607d602344ad38468" + dependencies: + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + +babel-plugin-transform-es2015-object-super@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz#24cef69ae21cb83a7f8603dad021f572eb278f8d" + dependencies: + babel-helper-replace-supers "^6.24.1" + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-parameters@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz#57ac351ab49caf14a97cd13b09f66fdf0a625f2b" + dependencies: + babel-helper-call-delegate "^6.24.1" + babel-helper-get-function-arity "^6.24.1" + babel-runtime "^6.22.0" + babel-template "^6.24.1" + babel-traverse "^6.24.1" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-shorthand-properties@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz#24f875d6721c87661bbd99a4622e51f14de38aa0" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-spread@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz#d6d68a99f89aedc4536c81a542e8dd9f1746f8d1" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-sticky-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz#00c1cdb1aca71112cdf0cf6126c2ed6b457ccdbc" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-plugin-transform-es2015-template-literals@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz#a84b3450f7e9f8f1f6839d6d687da84bb1236d8d" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-typeof-symbol@^6.22.0: + version "6.23.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz#dec09f1cddff94b52ac73d505c84df59dcceb372" + dependencies: + babel-runtime "^6.22.0" + +babel-plugin-transform-es2015-unicode-regex@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz#d38b12f42ea7323f729387f18a7c5ae1faeb35e9" + dependencies: + babel-helper-regex "^6.24.1" + babel-runtime "^6.22.0" + regexpu-core "^2.0.0" + +babel-plugin-transform-exponentiation-operator@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz#2ab0c9c7f3098fa48907772bb813fe41e8de3a0e" + dependencies: + babel-helper-builder-binary-assignment-operator-visitor "^6.24.1" + babel-plugin-syntax-exponentiation-operator "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-export-extensions@^6.22.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-export-extensions/-/babel-plugin-transform-export-extensions-6.22.0.tgz#53738b47e75e8218589eea946cbbd39109bbe653" + dependencies: + babel-plugin-syntax-export-extensions "^6.8.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-flow-strip-types@^6.8.0: + version "6.22.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz#84cb672935d43714fdc32bce84568d87441cf7cf" + dependencies: + babel-plugin-syntax-flow "^6.18.0" + babel-runtime "^6.22.0" + +babel-plugin-transform-object-rest-spread@^6.22.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz#0f36692d50fef6b7e2d4b3ac1478137a963b7b06" + dependencies: + babel-plugin-syntax-object-rest-spread "^6.8.0" + babel-runtime "^6.26.0" + +babel-plugin-transform-regenerator@^6.24.1: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz#e0703696fbde27f0a3efcacf8b4dca2f7b3a8f2f" + dependencies: + regenerator-transform "^0.10.0" + +babel-plugin-transform-strict-mode@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz#d5faf7aa578a65bbe591cf5edae04a0c67020758" + dependencies: + babel-runtime "^6.22.0" + babel-types "^6.24.1" + +babel-preset-es2015@^6.9.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz#d44050d6bc2c9feea702aaf38d727a0210538939" + dependencies: + babel-plugin-check-es2015-constants "^6.22.0" + babel-plugin-transform-es2015-arrow-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoped-functions "^6.22.0" + babel-plugin-transform-es2015-block-scoping "^6.24.1" + babel-plugin-transform-es2015-classes "^6.24.1" + babel-plugin-transform-es2015-computed-properties "^6.24.1" + babel-plugin-transform-es2015-destructuring "^6.22.0" + babel-plugin-transform-es2015-duplicate-keys "^6.24.1" + babel-plugin-transform-es2015-for-of "^6.22.0" + babel-plugin-transform-es2015-function-name "^6.24.1" + babel-plugin-transform-es2015-literals "^6.22.0" + babel-plugin-transform-es2015-modules-amd "^6.24.1" + babel-plugin-transform-es2015-modules-commonjs "^6.24.1" + babel-plugin-transform-es2015-modules-systemjs "^6.24.1" + babel-plugin-transform-es2015-modules-umd "^6.24.1" + babel-plugin-transform-es2015-object-super "^6.24.1" + babel-plugin-transform-es2015-parameters "^6.24.1" + babel-plugin-transform-es2015-shorthand-properties "^6.24.1" + babel-plugin-transform-es2015-spread "^6.22.0" + babel-plugin-transform-es2015-sticky-regex "^6.24.1" + babel-plugin-transform-es2015-template-literals "^6.22.0" + babel-plugin-transform-es2015-typeof-symbol "^6.22.0" + babel-plugin-transform-es2015-unicode-regex "^6.24.1" + babel-plugin-transform-regenerator "^6.24.1" + +babel-preset-stage-1@^6.5.0: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-1/-/babel-preset-stage-1-6.24.1.tgz#7692cd7dcd6849907e6ae4a0a85589cfb9e2bfb0" + dependencies: + babel-plugin-transform-class-constructor-call "^6.24.1" + babel-plugin-transform-export-extensions "^6.22.0" + babel-preset-stage-2 "^6.24.1" + +babel-preset-stage-2@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-2/-/babel-preset-stage-2-6.24.1.tgz#d9e2960fb3d71187f0e64eec62bc07767219bdc1" + dependencies: + babel-plugin-syntax-dynamic-import "^6.18.0" + babel-plugin-transform-class-properties "^6.24.1" + babel-plugin-transform-decorators "^6.24.1" + babel-preset-stage-3 "^6.24.1" + +babel-preset-stage-3@^6.24.1: + version "6.24.1" + resolved "https://registry.yarnpkg.com/babel-preset-stage-3/-/babel-preset-stage-3-6.24.1.tgz#836ada0a9e7a7fa37cb138fb9326f87934a48395" + dependencies: + babel-plugin-syntax-trailing-function-commas "^6.22.0" + babel-plugin-transform-async-generator-functions "^6.24.1" + babel-plugin-transform-async-to-generator "^6.24.1" + babel-plugin-transform-exponentiation-operator "^6.24.1" + babel-plugin-transform-object-rest-spread "^6.22.0" + +babel-register@^6.26.0, babel-register@^6.9.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-register/-/babel-register-6.26.0.tgz#6ed021173e2fcb486d7acb45c6009a856f647071" + dependencies: + babel-core "^6.26.0" + babel-runtime "^6.26.0" + core-js "^2.5.0" + home-or-tmp "^2.0.0" + lodash "^4.17.4" + mkdirp "^0.5.1" + source-map-support "^0.4.15" + +babel-runtime@^6.18.0, babel-runtime@^6.22.0, babel-runtime@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" + dependencies: + core-js "^2.4.0" + regenerator-runtime "^0.11.0" + +babel-template@^6.24.1, babel-template@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-template/-/babel-template-6.26.0.tgz#de03e2d16396b069f46dd9fff8521fb1a0e35e02" + dependencies: + babel-runtime "^6.26.0" + babel-traverse "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + lodash "^4.17.4" + +babel-traverse@^6.24.1, babel-traverse@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-traverse/-/babel-traverse-6.26.0.tgz#46a9cbd7edcc62c8e5c064e2d2d8d0f4035766ee" + dependencies: + babel-code-frame "^6.26.0" + babel-messages "^6.23.0" + babel-runtime "^6.26.0" + babel-types "^6.26.0" + babylon "^6.18.0" + debug "^2.6.8" + globals "^9.18.0" + invariant "^2.2.2" + lodash "^4.17.4" + +babel-types@^6.19.0, babel-types@^6.24.1, babel-types@^6.26.0: + version "6.26.0" + resolved "https://registry.yarnpkg.com/babel-types/-/babel-types-6.26.0.tgz#a3b073f94ab49eb6fa55cd65227a334380632497" + dependencies: + babel-runtime "^6.26.0" + esutils "^2.0.2" + lodash "^4.17.4" + to-fast-properties "^1.0.3" + +babylon@^6.17.3, babylon@^6.18.0: + version "6.18.0" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-6.18.0.tgz#af2f3b88fa6f5c1e4c634d1a0f8eac4f55b395e3" + +babylon@^7.0.0-beta.30: + version "7.0.0-beta.44" + resolved "https://registry.yarnpkg.com/babylon/-/babylon-7.0.0-beta.44.tgz#89159e15e6e30c5096e22d738d8c0af8a0e8ca1d" + balanced-match@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" @@ -238,10 +779,6 @@ base-x@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/base-x/-/base-x-1.1.0.tgz#42d3d717474f9ea02207f6d1aa1f426913eeb7ac" -base64-js@^1.0.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.2.3.tgz#fb13668233d9614cf5fb4bce95a9ba4096cdf801" - bcrypt-pbkdf@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d" @@ -260,9 +797,9 @@ big.js@^3.1.3: version "2.0.7" resolved "git+https://github.com/debris/bignumber.js.git#94d7146671b9719e00a09c29b01a691bc85048c2" -binary-extensions@^1.0.0: - version "1.11.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205" +binaryextensions@2: + version "2.1.1" + resolved "https://registry.yarnpkg.com/binaryextensions/-/binaryextensions-2.1.1.tgz#3209a51ca4a4ad541a3b8d3d6a6d5b83a2485935" bindings@^1.2.1: version "1.3.0" @@ -284,22 +821,10 @@ bip66@^1.1.3: dependencies: safe-buffer "^5.0.1" -block-stream@*: - version "0.0.9" - resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a" - dependencies: - inherits "~2.0.0" - -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.11.0, bn.js@^4.11.3, bn.js@^4.4.0, bn.js@^4.8.0: +bn.js@^4.11.0, bn.js@^4.11.3, bn.js@^4.4.0, bn.js@^4.8.0: version "4.11.8" resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" -boom@2.x.x: - version "2.10.1" - resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f" - dependencies: - hoek "2.x.x" - boom@4.x.x: version "4.3.1" resolved "https://registry.yarnpkg.com/boom/-/boom-4.3.1.tgz#4f8a3005cb4a7e3889f749030fd25b96e01d2e31" @@ -335,7 +860,7 @@ browser-stdout@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" -browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6: +browserify-aes@^1.0.6: version "1.1.1" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" dependencies: @@ -346,53 +871,12 @@ browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6: inherits "^2.0.1" safe-buffer "^5.0.1" -browserify-cipher@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.0.tgz#9988244874bf5ed4e28da95666dcd66ac8fc363a" - dependencies: - browserify-aes "^1.0.4" - browserify-des "^1.0.0" - evp_bytestokey "^1.0.0" - -browserify-des@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.0.tgz#daa277717470922ed2fe18594118a175439721dd" - dependencies: - cipher-base "^1.0.1" - des.js "^1.0.0" - inherits "^2.0.1" - -browserify-rsa@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" - dependencies: - bn.js "^4.1.0" - randombytes "^2.0.1" - browserify-sha3@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/browserify-sha3/-/browserify-sha3-0.0.1.tgz#3ff34a3006ef15c0fb3567e541b91a2340123d11" dependencies: js-sha3 "^0.3.1" -browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" - -browserify-zlib@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f" - dependencies: - pako "~1.0.5" - bs58@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/bs58/-/bs58-2.0.1.tgz#55908d58f1982aba2008fa1bed8f91998a29bf8d" @@ -414,21 +898,21 @@ buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" -buffer@^4.3.0: - version "4.9.1" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-4.9.1.tgz#6d1bb601b07a4efced97094132093027c95bc298" - dependencies: - base64-js "^1.0.2" - ieee754 "^1.1.4" - isarray "^1.0.0" - builtin-modules@^1.0.0: version "1.1.1" resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" -builtin-status-codes@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8" +cacheable-request@^2.1.1: + version "2.1.4" + resolved "https://registry.yarnpkg.com/cacheable-request/-/cacheable-request-2.1.4.tgz#0d808801b6342ad33c91df9d0b44dc09b91e5c3d" + dependencies: + clone-response "1.0.2" + get-stream "3.0.0" + http-cache-semantics "3.8.1" + keyv "3.0.0" + lowercase-keys "1.0.0" + normalize-url "2.0.1" + responselike "1.0.2" caller-path@^0.1.0: version "0.1.0" @@ -440,10 +924,6 @@ callsites@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-0.2.0.tgz#afab96262910a7f33c19a5775825c69f34e350ca" -camelcase@^1.0.2: - version "1.2.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-1.2.1.tgz#9bb5304d2e0b56698b2c758b08a3eaa9daa58a39" - camelcase@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" @@ -456,14 +936,7 @@ caseless@~0.12.0: version "0.12.0" resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" -center-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" - dependencies: - align-text "^0.1.3" - lazy-cache "^1.0.3" - -chalk@^1.1.3: +chalk@^1.0.0, chalk@^1.1.1, chalk@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" dependencies: @@ -481,6 +954,22 @@ chalk@^2.0.0, chalk@^2.1.0: escape-string-regexp "^1.0.5" supports-color "^5.2.0" +chalk@^2.0.1, chalk@^2.3.0, chalk@^2.3.2: + version "2.4.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.0.tgz#a060a297a6b57e15b61ca63ce84995daa0fe6e52" + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-0.4.0.tgz#5199a3ddcd0c1efe23bc08c1b027b06176e0c64f" + dependencies: + ansi-styles "~1.0.0" + has-color "~0.1.0" + strip-ansi "~0.1.0" + chardet@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.4.2.tgz#b5473b33dc97c424e5d98dc87d55d4d8a29c8bf2" @@ -491,21 +980,6 @@ checkpoint-store@^1.1.0: dependencies: functional-red-black-tree "^1.0.1" -chokidar@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" - dependencies: - anymatch "^1.3.0" - async-each "^1.0.0" - glob-parent "^2.0.0" - inherits "^2.0.1" - is-binary-path "^1.0.0" - is-glob "^2.0.0" - path-is-absolute "^1.0.0" - readdirp "^2.0.0" - optionalDependencies: - fsevents "^1.0.0" - cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -517,24 +991,39 @@ circular-json@^0.3.1: version "0.3.3" resolved "https://registry.yarnpkg.com/circular-json/-/circular-json-0.3.3.tgz#815c99ea84f6809529d2f45791bdf82711352d66" +cli-cursor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987" + dependencies: + restore-cursor "^1.0.1" + cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" dependencies: restore-cursor "^2.0.0" +cli-spinners@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-0.1.2.tgz#bb764d88e185fb9e1e6a2a1f19772318f605e31c" + +cli-table@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.1.tgz#f53b05266a8b1a0b934b3d0821e6e2dc5914ae23" + dependencies: + colors "1.0.3" + +cli-truncate@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" + dependencies: + slice-ansi "0.0.4" + string-width "^1.0.1" + cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" -cliui@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-2.1.0.tgz#4b475760ff80264c762c3a1719032e91c7fea0d1" - dependencies: - center-align "^0.1.1" - right-align "^0.1.1" - wordwrap "0.0.2" - cliui@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" @@ -543,10 +1032,52 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" +cliui@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.0.0.tgz#743d4650e05f36d1ed2575b59638d87322bfbbcc" + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + +clone-response@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/clone-response/-/clone-response-1.0.2.tgz#d1dc973920314df67fbeb94223b4ee350239e96b" + dependencies: + mimic-response "^1.0.0" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + +clone@^1.0.0: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + clone@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.1.tgz#d217d1e961118e3ac9a4b8bba3285553bf647cdb" +clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + +cloneable-readable@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.2.tgz#d591dee4a8f8bc15da43ce97dceeba13d43e2a65" + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + co@^4.6.0: version "4.6.0" resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" @@ -572,7 +1103,15 @@ color-name@^1.1.1: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" -combined-stream@1.0.6, combined-stream@^1.0.5, combined-stream@~1.0.5: +colors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" + +colors@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.1.tgz#f4a3d302976aaf042356ba1ade3b1a2c62d9d794" + +combined-stream@1.0.6, combined-stream@~1.0.5: version "1.0.6" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.6.tgz#723e7df6e801ac5613113a7e445a9b69cb632818" dependencies: @@ -588,6 +1127,10 @@ commander@2.9.0: dependencies: graceful-readlink ">= 1.0.0" +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" @@ -600,31 +1143,18 @@ concat-stream@^1.6.0: readable-stream "^2.2.2" typedarray "^0.0.6" -console-browserify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.1.0.tgz#f0241c45730a9fc6323b206dbf38edc741d0bb10" - dependencies: - date-now "^0.1.4" +convert-source-map@^1.5.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.5.1.tgz#b8278097b9bc229365de5c62cf5fcaed8b5599e5" -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - -constants-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" +core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0: + version "2.5.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.5.tgz#b14dde936c640c0579a6b50cabcc132dd6127e3b" core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" -create-ecdh@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.0.tgz#888c723596cdf7612f6498233eebd7a35301737d" - dependencies: - bn.js "^4.1.0" - elliptic "^6.0.0" - create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.1.3.tgz#606042ac8b9262750f483caddab0f5819172d8fd" @@ -634,7 +1164,7 @@ create-hash@^1.1.0, create-hash@^1.1.1, create-hash@^1.1.2: ripemd160 "^2.0.0" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +create-hmac@^1.1.4: version "1.1.6" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.6.tgz#acb9e221a4e17bdb076e90657c42b93e3726cf06" dependencies: @@ -653,11 +1183,15 @@ cross-spawn@^5.0.1, cross-spawn@^5.1.0: shebang-command "^1.2.0" which "^1.2.9" -cryptiles@2.x.x: - version "2.0.5" - resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8" +cross-spawn@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" dependencies: - boom "2.x.x" + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" cryptiles@3.x.x: version "3.1.2" @@ -665,31 +1199,13 @@ cryptiles@3.x.x: dependencies: boom "5.x.x" -crypto-browserify@^3.11.0: - version "3.12.0" - resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec" - dependencies: - browserify-cipher "^1.0.0" - browserify-sign "^4.0.0" - create-ecdh "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.0" - diffie-hellman "^5.0.0" - inherits "^2.0.1" - pbkdf2 "^3.0.3" - public-encrypt "^4.0.0" - randombytes "^2.0.0" - randomfill "^1.0.3" - crypto-js@^3.1.4: version "3.1.8" resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-3.1.8.tgz#715f070bf6014f2ae992a98b3929258b713f08d5" -d@1: - version "1.0.0" - resolved "https://registry.yarnpkg.com/d/-/d-1.0.0.tgz#754bb5bfe55451da69a58b94d45f4c5b0462d58f" - dependencies: - es5-ext "^0.10.9" +dargs@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/dargs/-/dargs-5.1.0.tgz#ec7ea50c78564cd36c9d5ec18f66329fade27829" dashdash@^1.12.0: version "1.14.1" @@ -697,9 +1213,13 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -date-now@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/date-now/-/date-now-0.1.4.tgz#eaf439fd4d4848ad74e5cc7dbef200672b9e345b" +date-fns@^1.27.2: + version "1.29.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.29.0.tgz#12e609cdcb935127311d04d33334e2960a2a54e6" + +dateformat@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae" debug@2.6.8: version "2.6.8" @@ -707,21 +1227,37 @@ debug@2.6.8: dependencies: ms "2.0.0" -debug@^2.2.0, debug@^2.6.8: +debug@^2.6.8: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -decamelize@^1.0.0, decamelize@^1.1.1: +debug@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + dependencies: + ms "2.0.0" + +decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + +decompress-response@^3.2.0, decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + dependencies: + mimic-response "^1.0.0" + deep-equal@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.0.1.tgz#f5d260292b660e084eff4cdbc9f08ad3247448b5" -deep-extend@~0.4.0: +deep-extend@^0.4.0: version "0.4.2" resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f" @@ -762,32 +1298,23 @@ delayed-stream@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" +detect-conflict@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/detect-conflict/-/detect-conflict-1.0.1.tgz#088657a66a961c05019db7c4230883b1c6b4176e" -des.js@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" +detect-indent@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-4.0.0.tgz#f76d064352cdf43a1cb6ce619c4ee3a9475de208" dependencies: - inherits "^2.0.1" - minimalistic-assert "^1.0.0" - -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + repeating "^2.0.0" diff@3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" -diffie-hellman@^5.0.0: - version "5.0.2" - resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.2.tgz#b5835739270cfe26acf632099fded2a07f209e5e" - dependencies: - bn.js "^4.1.0" - miller-rabin "^4.0.0" - randombytes "^2.0.0" +diff@^3.3.1, diff@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" doctrine@^2.0.0: version "2.1.0" @@ -799,10 +1326,6 @@ dom-walk@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.1.tgz#672226dc74c8f799ad35307df936aba11acd6018" -domain-browser@^1.1.1: - version "1.2.0" - resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" - drbg.js@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" @@ -811,13 +1334,29 @@ drbg.js@^1.0.1: create-hash "^1.1.2" create-hmac "^1.1.4" +duplexer3@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" + ecc-jsbn@~0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505" dependencies: jsbn "~0.1.0" -elliptic@^6.0.0, elliptic@^6.2.3: +editions@^1.3.3: + version "1.3.4" + resolved "https://registry.yarnpkg.com/editions/-/editions-1.3.4.tgz#3662cb592347c3168eb8e498a0ff73271d67f50b" + +ejs@^2.3.1: + version "2.5.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.5.8.tgz#2ab6954619f225e6193b7ac5f7c39c48fefe4380" + +elegant-spinner@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/elegant-spinner/-/elegant-spinner-1.0.1.tgz#db043521c95d7e303fd8f345bedc3349cfb0729e" + +elliptic@^6.2.3: version "6.4.0" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.4.0.tgz#cac9af8762c85836187003c8dfe193e5e2eae5df" dependencies: @@ -839,14 +1378,17 @@ encoding@^0.1.11: dependencies: iconv-lite "~0.4.13" -enhanced-resolve@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-3.4.1.tgz#0421e339fd71419b3da13d129b3979040230476e" +enhanced-resolve@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-4.0.0.tgz#e34a6eaa790f62fccd71d93959f56b2b432db10a" dependencies: graceful-fs "^4.1.2" memory-fs "^0.4.0" - object-assign "^4.0.1" - tapable "^0.2.7" + tapable "^1.0.0" + +envinfo@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-4.4.2.tgz#472c49f3a8b9bca73962641ce7cb692bf623cd1c" errno@^0.1.3, errno@~0.1.1: version "0.1.7" @@ -854,12 +1396,19 @@ errno@^0.1.3, errno@~0.1.1: dependencies: prr "~1.0.1" -error-ex@^1.2.0: +error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.1.tgz#f855a86ce61adc4e8621c3cda21e7a7612c3a8dc" dependencies: is-arrayish "^0.2.1" +error@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/error/-/error-7.0.2.tgz#a5f75fff4d9926126ddac0ea5dc38e689153cb02" + dependencies: + string-template "~0.2.1" + xtend "~4.0.0" + es-abstract@^1.5.0: version "1.10.0" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.10.0.tgz#1ecb36c197842a00d8ee4c2dfd8646bb97d60864" @@ -878,71 +1427,10 @@ es-to-primitive@^1.1.1: is-date-object "^1.0.1" is-symbol "^1.0.1" -es5-ext@^0.10.14, es5-ext@^0.10.35, es5-ext@^0.10.9, es5-ext@~0.10.14: - version "0.10.39" - resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.39.tgz#fca21b67559277ca4ac1a1ed7048b107b6f76d87" - dependencies: - es6-iterator "~2.0.3" - es6-symbol "~3.1.1" - -es6-iterator@^2.0.1, es6-iterator@~2.0.1, es6-iterator@~2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" - dependencies: - d "1" - es5-ext "^0.10.35" - es6-symbol "^3.1.1" - -es6-map@^0.1.3: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-map/-/es6-map-0.1.5.tgz#9136e0503dcc06a301690f0bb14ff4e364e949f0" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-set "~0.1.5" - es6-symbol "~3.1.1" - event-emitter "~0.3.5" - -es6-set@~0.1.5: - version "0.1.5" - resolved "https://registry.yarnpkg.com/es6-set/-/es6-set-0.1.5.tgz#d2b3ec5d4d800ced818db538d28974db0a73ccb1" - dependencies: - d "1" - es5-ext "~0.10.14" - es6-iterator "~2.0.1" - es6-symbol "3.1.1" - event-emitter "~0.3.5" - -es6-symbol@3.1.1, es6-symbol@^3.1.1, es6-symbol@~3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.1.tgz#bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77" - dependencies: - d "1" - es5-ext "~0.10.14" - -es6-weak-map@^2.0.1: - version "2.0.2" - resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.2.tgz#5e3ab32251ffd1538a1f8e5ffa1357772f92d96f" - dependencies: - d "1" - es5-ext "^0.10.14" - es6-iterator "^2.0.1" - es6-symbol "^3.1.1" - escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" -escope@^3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/escope/-/escope-3.6.0.tgz#e01975e812781a163a6dadfdd80398dc64c889c3" - dependencies: - es6-map "^0.1.3" - es6-weak-map "^2.0.1" - esrecurse "^4.1.0" - estraverse "^4.1.1" - eslint-scope@^3.7.1: version "3.7.1" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-3.7.1.tgz#3d63c3edfda02e06e01a452ad88caacc7cdcb6e8" @@ -999,7 +1487,7 @@ espree@^3.5.0: acorn "^5.4.0" acorn-jsx "^3.0.0" -esprima@^4.0.0: +esprima@^4.0.0, esprima@~4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.0.tgz#4499eddcd1110e0b218bacf2fa7f7f59f55ca804" @@ -1132,18 +1620,7 @@ ethjs-util@^0.1.3: is-hex-prefixed "1.0.0" strip-hex-prefix "1.0.0" -event-emitter@~0.3.5: - version "0.3.5" - resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" - dependencies: - d "1" - es5-ext "~0.10.14" - -events@^1.0.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924" - -evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: +evp_bytestokey@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" dependencies: @@ -1162,6 +1639,10 @@ execa@^0.7.0: signal-exit "^3.0.0" strip-eof "^1.0.0" +exit-hook@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/exit-hook/-/exit-hook-1.1.1.tgz#f05ca233b48c05d54fff07765df8507e95c02ff8" + expand-brackets@^0.1.4: version "0.1.5" resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" @@ -1174,7 +1655,13 @@ expand-range@^1.8.1: dependencies: fill-range "^2.1.0" -extend@~3.0.0, extend@~3.0.1: +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + dependencies: + homedir-polyfill "^1.0.1" + +extend@~3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444" @@ -1186,6 +1673,14 @@ external-editor@^2.0.4: iconv-lite "^0.4.17" tmp "^0.0.33" +external-editor@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-2.2.0.tgz#045511cfd8d133f3846673d1047c154e214ad3d5" + dependencies: + chardet "^0.4.0" + iconv-lite "^0.4.17" + tmp "^0.0.33" + extglob@^0.3.1: version "0.3.2" resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" @@ -1218,6 +1713,13 @@ fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" +figures@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-1.7.0.tgz#cbe1e3affcf1cd44b80cadfed28dc793a9701d2e" + dependencies: + escape-string-regexp "^1.0.5" + object-assign "^4.1.0" + figures@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" @@ -1252,12 +1754,18 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^2.0.0: +find-up@^2.0.0, find-up@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" dependencies: locate-path "^2.0.0" +first-chunk-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-2.0.0.tgz#1bdecdb8e083c0664b91945581577a43a9f31d70" + dependencies: + readable-stream "^2.0.2" + flat-cache@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-1.3.0.tgz#d3030b32b38154f4e3b7e9c709f490f7ef97c481" @@ -1267,6 +1775,10 @@ flat-cache@^1.2.1: graceful-fs "^4.1.2" write "^0.2.1" +flow-parser@^0.*: + version "0.70.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.70.0.tgz#9c310187efe4380ba9a251284e9b83b95c49e857" + for-each@^0.3.2, for-each@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.2.tgz#2c40450b9348e97f281322593ba96704b9abd4d4" @@ -1291,14 +1803,6 @@ forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" -form-data@~2.1.1: - version "2.1.4" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1" - dependencies: - asynckit "^0.4.0" - combined-stream "^1.0.5" - mime-types "^2.1.12" - form-data@~2.3.1: version "2.3.2" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.2.tgz#4970498be604c20c005d4f5c23aecd21d6b49099" @@ -1307,6 +1811,13 @@ form-data@~2.3.1: combined-stream "1.0.6" mime-types "^2.1.12" +from2@^2.1.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" + dependencies: + inherits "^2.0.1" + readable-stream "^2.0.0" + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -1321,30 +1832,6 @@ fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" -fsevents@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8" - dependencies: - nan "^2.3.0" - node-pre-gyp "^0.6.39" - -fstream-ignore@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105" - dependencies: - fstream "^1.0.0" - inherits "2" - minimatch "^3.0.0" - -fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2: - version "1.0.11" - resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" - dependencies: - graceful-fs "^4.1.2" - inherits "~2.0.0" - mkdirp ">=0.5 0" - rimraf "2" - function-bind@^1.0.2, function-bind@^1.1.1, function-bind@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -1353,30 +1840,18 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -ganache-cli@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.0.3.tgz#8b9da149707daa29c69da26f0582b89c90113b9c" - dependencies: - webpack "^3.0.0" - -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" +ganache-cli@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.1.0.tgz#486c846497204b644166b5f0f74c9b41d02bdc25" dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" + source-map-support "^0.5.3" + webpack-cli "^2.0.9" get-caller-file@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.2.tgz#f702e63127e7e231c160a80c1554acb70d5047e5" -get-stream@^3.0.0: +get-stream@3.0.0, get-stream@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" @@ -1386,6 +1861,26 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +gh-got@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gh-got/-/gh-got-6.0.0.tgz#d74353004c6ec466647520a10bd46f7299d268d0" + dependencies: + got "^7.0.0" + is-plain-obj "^1.1.0" + +github-username@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/github-username/-/github-username-4.1.0.tgz#cbe280041883206da4212ae9e4b5f169c30bf417" + dependencies: + gh-got "^6.0.0" + +glob-all@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-all/-/glob-all-3.1.0.tgz#8913ddfb5ee1ac7812656241b03d5217c64b02ab" + dependencies: + glob "^7.0.5" + yargs "~1.2.6" + glob-base@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" @@ -1421,7 +1916,7 @@ glob@7.1.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.2: +glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -1432,6 +1927,24 @@ glob@7.1.2, glob@^7.0.3, glob@^7.0.5, glob@^7.1.2, glob@~7.1.2: once "^1.3.0" path-is-absolute "^1.0.0" +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + global@~4.3.0: version "4.3.2" resolved "https://registry.yarnpkg.com/global/-/global-4.3.2.tgz#e76989268a6c74c38908b1305b10fc0e394e9d0f" @@ -1439,7 +1952,7 @@ global@~4.3.0: min-document "^2.19.0" process "~0.5.1" -globals@^9.17.0: +globals@^9.17.0, globals@^9.18.0: version "9.18.0" resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" @@ -1448,13 +1961,64 @@ globby@^5.0.0: resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" dependencies: array-union "^1.0.1" - arrify "^1.0.0" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +globby@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-6.1.0.tgz#f5a6d70e8395e21c858fb0489d64df02424d506c" + dependencies: + array-union "^1.0.1" glob "^7.0.3" object-assign "^4.0.1" pify "^2.0.0" pinkie-promise "^2.0.0" -graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: +got@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/got/-/got-7.1.0.tgz#05450fd84094e6bbea56f451a43a9c289166385a" + dependencies: + decompress-response "^3.2.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + is-plain-obj "^1.1.0" + is-retry-allowed "^1.0.0" + is-stream "^1.0.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + p-cancelable "^0.3.0" + p-timeout "^1.1.1" + safe-buffer "^5.0.1" + timed-out "^4.0.0" + url-parse-lax "^1.0.0" + url-to-options "^1.0.1" + +got@^8.2.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/got/-/got-8.3.0.tgz#6ba26e75f8a6cc4c6b3eb1fe7ce4fec7abac8533" + dependencies: + "@sindresorhus/is" "^0.7.0" + cacheable-request "^2.1.1" + decompress-response "^3.3.0" + duplexer3 "^0.1.4" + get-stream "^3.0.0" + into-stream "^3.1.0" + is-retry-allowed "^1.1.0" + isurl "^1.0.0-alpha5" + lowercase-keys "^1.0.0" + mimic-response "^1.0.0" + p-cancelable "^0.4.0" + p-timeout "^2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" + timed-out "^4.0.1" + url-parse-lax "^3.0.0" + url-to-options "^1.0.1" + +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" @@ -1462,25 +2026,20 @@ graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9: version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" +grouped-queue@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/grouped-queue/-/grouped-queue-0.3.3.tgz#c167d2a5319c5a0e0964ef6a25b7c2df8996c85c" + dependencies: + lodash "^4.17.2" + growl@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" -har-schema@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e" - har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" -har-validator@~4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a" - dependencies: - ajv "^4.9.1" - har-schema "^1.0.5" - har-validator@~5.0.3: version "5.0.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.0.3.tgz#ba402c266194f15956ef15e0fcf242993f6a7dfd" @@ -1494,21 +2053,27 @@ has-ansi@^2.0.0: dependencies: ansi-regex "^2.0.0" +has-color@~0.1.0: + version "0.1.7" + resolved "https://registry.yarnpkg.com/has-color/-/has-color-0.1.7.tgz#67144a5260c34fc3cca677d041daf52fe7b78b2f" + has-flag@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" -has-flag@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-2.0.0.tgz#e8207af1cc7b30d446cc70b734b5e8be18f88d51" - has-flag@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" +has-symbol-support-x@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz#1409f98bc00247da45da67cee0a36f282ff26455" + +has-to-string-tag-x@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz#a045ab383d7b4b2012a00148ab0aa5f290044d4d" + dependencies: + has-symbol-support-x "^1.4.1" has@^1.0.1, has@~1.0.1: version "1.0.1" @@ -1536,15 +2101,6 @@ hash.js@^1.0.0, hash.js@^1.0.3: inherits "^2.0.3" minimalistic-assert "^1.0.0" -hawk@3.1.3, hawk@~3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4" - dependencies: - boom "2.x.x" - cryptiles "2.x.x" - hoek "2.x.x" - sntp "1.x.x" - hawk@~6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/hawk/-/hawk-6.0.2.tgz#af4d914eb065f9b5ce4d9d11c1cb2126eecc3038" @@ -1573,25 +2129,30 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" -hoek@2.x.x: - version "2.16.3" - resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed" - hoek@4.x.x: version "4.2.1" resolved "https://registry.yarnpkg.com/hoek/-/hoek-4.2.1.tgz#9634502aa12c445dd5a7c5734b572bb8738aacbb" +home-or-tmp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.1" + +homedir-polyfill@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.1.tgz#4c2bbc8a758998feebf5ed68580f76d46768b4bc" + dependencies: + parse-passwd "^1.0.0" + hosted-git-info@^2.1.4: version "2.5.0" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.5.0.tgz#6d60e34b3abbc8313062c3b798ef8d901a07af3c" -http-signature@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" - dependencies: - assert-plus "^0.2.0" - jsprim "^1.2.2" - sshpk "^1.7.0" +http-cache-semantics@3.8.1: + version "3.8.1" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2" http-signature@~1.2.0: version "1.2.0" @@ -1601,18 +2162,10 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -https-browserify@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" - iconv-lite@^0.4.17, iconv-lite@~0.4.13: version "0.4.19" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.19.tgz#f7468f60135f5e5dad3399c0a81be9a1603a082b" -ieee754@^1.1.4: - version "1.1.8" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.1.8.tgz#be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4" - ignore@^3.3.3, ignore@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/ignore/-/ignore-3.3.7.tgz#612289bfb3c220e186a58118618d5be8c1bab021" @@ -1621,13 +2174,26 @@ immediate@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" +import-local@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-1.0.0.tgz#5e4ffdc03f4fe6c009c6729beb29631c2f8227bc" + dependencies: + pkg-dir "^2.0.0" + resolve-cwd "^2.0.0" + imurmurhash@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" -indexof@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" +indent-string@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" + dependencies: + repeating "^2.0.0" + +indent-string@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" inflight@^1.0.4: version "1.0.6" @@ -1636,19 +2202,15 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" -inherits@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.1.tgz#b17d08d326b4423e568eff719f91b0b1cbdf69f1" - -ini@~1.3.0: +ini@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" -inquirer@^3.0.6: +inquirer@^3.0.6, inquirer@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-3.3.0.tgz#9dd2f2ad765dcab1ff0443b491442a20ba227dc9" dependencies: @@ -1667,10 +2229,41 @@ inquirer@^3.0.6: strip-ansi "^4.0.0" through "^2.3.6" -interpret@^1.0.0: +inquirer@^5.1.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-5.2.0.tgz#db350c2b73daca77ff1243962e9f22f099685726" + dependencies: + ansi-escapes "^3.0.0" + chalk "^2.0.0" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^2.1.0" + figures "^2.0.0" + lodash "^4.3.0" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^5.5.2" + string-width "^2.1.0" + strip-ansi "^4.0.0" + through "^2.3.6" + +interpret@^1.0.0, interpret@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" +into-stream@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-3.1.0.tgz#96fb0a936c12babd6ff1752a17d05616abd094c6" + dependencies: + from2 "^2.1.1" + p-is-promise "^1.1.0" + +invariant@^2.2.2: + version "2.2.4" + resolved "https://registry.yarnpkg.com/invariant/-/invariant-2.2.4.tgz#610f3c92c9359ce1db616e538008d23ff35158e6" + dependencies: + loose-envify "^1.0.0" + invert-kv@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" @@ -1679,12 +2272,6 @@ is-arrayish@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" -is-binary-path@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" - dependencies: - binary-extensions "^1.0.0" - is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -1721,6 +2308,12 @@ is-extglob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" +is-finite@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" + dependencies: + number-is-nan "^1.0.0" + is-fullwidth-code-point@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" @@ -1757,6 +2350,16 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-object@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-object/-/is-object-1.0.1.tgz#8952688c5ec2ffd6b03ecc85e769e02903083470" + +is-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-0.2.0.tgz#b361311d83c6e5d726cabf5e250b0237106f5ae2" + dependencies: + symbol-observable "^0.2.2" + is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" @@ -1773,6 +2376,10 @@ is-path-inside@^1.0.0: dependencies: path-is-inside "^1.0.1" +is-plain-obj@^1.0.0, is-plain-obj@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" + is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -1795,7 +2402,17 @@ is-resolvable@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-resolvable/-/is-resolvable-1.1.0.tgz#fb18f87ce1feb925169c9a407c19318a3206ed88" -is-stream@^1.0.1, is-stream@^1.1.0: +is-retry-allowed@^1.0.0, is-retry-allowed@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-1.1.0.tgz#11a060568b67339444033d0125a61a20d564fb34" + +is-scoped@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-scoped/-/is-scoped-1.0.0.tgz#449ca98299e713038256289ecb2b540dc437cb30" + dependencies: + scoped-regex "^1.0.0" + +is-stream@^1.0.0, is-stream@^1.0.1, is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -1811,11 +2428,15 @@ is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" +is-windows@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + isarray@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" -isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0: +isarray@1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -1840,6 +2461,21 @@ isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" +istextorbinary@^2.1.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/istextorbinary/-/istextorbinary-2.2.1.tgz#a5231a08ef6dd22b268d0895084cf8d58b5bec53" + dependencies: + binaryextensions "2" + editions "^1.3.3" + textextensions "2" + +isurl@^1.0.0-alpha5: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isurl/-/isurl-1.0.0.tgz#b27f4f49f3cdaa3ea44a0a5b7f3462e6edc39d67" + dependencies: + has-to-string-tag-x "^1.2.0" + is-object "^1.0.1" + js-sha3@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.3.1.tgz#86122802142f0828502a0d1dee1d95e253bb0243" @@ -1848,7 +2484,7 @@ js-sha3@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.7.0.tgz#0a5c57b36f79882573b2d84051f8bb85dd1bd63a" -js-tokens@^3.0.2: +js-tokens@^3.0.0, js-tokens@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b" @@ -1863,9 +2499,61 @@ jsbn@~0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" -json-loader@^0.5.4: - version "0.5.7" - resolved "https://registry.yarnpkg.com/json-loader/-/json-loader-0.5.7.tgz#dca14a70235ff82f0ac9a3abeb60d337a365185d" +jscodeshift@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.4.1.tgz#da91a1c2eccfa03a3387a21d39948e251ced444a" + dependencies: + async "^1.5.0" + babel-plugin-transform-flow-strip-types "^6.8.0" + babel-preset-es2015 "^6.9.0" + babel-preset-stage-1 "^6.5.0" + babel-register "^6.9.0" + babylon "^6.17.3" + colors "^1.1.2" + flow-parser "^0.*" + lodash "^4.13.1" + micromatch "^2.3.7" + node-dir "0.1.8" + nomnom "^1.8.1" + recast "^0.12.5" + temp "^0.8.1" + write-file-atomic "^1.2.0" + +jscodeshift@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jscodeshift/-/jscodeshift-0.5.0.tgz#bdb7b6cc20dd62c16aa728c3fa2d2fe66ca7c748" + dependencies: + babel-plugin-transform-flow-strip-types "^6.8.0" + babel-preset-es2015 "^6.9.0" + babel-preset-stage-1 "^6.5.0" + babel-register "^6.9.0" + babylon "^7.0.0-beta.30" + colors "^1.1.2" + flow-parser "^0.*" + lodash "^4.13.1" + micromatch "^2.3.7" + neo-async "^2.5.0" + node-dir "0.1.8" + nomnom "^1.8.1" + recast "^0.14.1" + temp "^0.8.1" + write-file-atomic "^1.2.0" + +jsesc@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-1.3.0.tgz#46c3fec8c1892b12b0833db9bc7622176dbab34b" + +jsesc@~0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-0.5.0.tgz#e7dee66e35d6fc16f710fe91d5cf69f70f08911d" + +json-buffer@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.0.tgz#5b1f397afc75d677bde8bcfc0e47e1f9a3d9a898" + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" json-schema-traverse@^0.3.0: version "0.3.1" @@ -1928,6 +2616,12 @@ keccakjs@^0.2.0: browserify-sha3 "^0.0.1" sha3 "^1.1.0" +keyv@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-3.0.0.tgz#44923ba39e68b12a7cec7df6c3268c031f2ef373" + dependencies: + json-buffer "3.0.0" + kind-of@^3.0.2: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -1946,10 +2640,6 @@ klaw@^1.0.0: optionalDependencies: graceful-fs "^4.1.9" -lazy-cache@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -2007,6 +2697,54 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +listr-silent-renderer@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz#924b5a3757153770bf1a8e3fbf74b8bbf3f9242e" + +listr-update-renderer@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/listr-update-renderer/-/listr-update-renderer-0.4.0.tgz#344d980da2ca2e8b145ba305908f32ae3f4cc8a7" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + elegant-spinner "^1.0.1" + figures "^1.7.0" + indent-string "^3.0.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + strip-ansi "^3.0.1" + +listr-verbose-renderer@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz#8206f4cf6d52ddc5827e5fd14989e0e965933a35" + dependencies: + chalk "^1.1.3" + cli-cursor "^1.0.2" + date-fns "^1.27.2" + figures "^1.7.0" + +listr@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/listr/-/listr-0.13.0.tgz#20bb0ba30bae660ee84cc0503df4be3d5623887d" + dependencies: + chalk "^1.1.3" + cli-truncate "^0.2.1" + figures "^1.7.0" + indent-string "^2.1.0" + is-observable "^0.2.0" + is-promise "^2.1.0" + is-stream "^1.1.0" + listr-silent-renderer "^1.1.1" + listr-update-renderer "^0.4.0" + listr-verbose-renderer "^0.4.0" + log-symbols "^1.0.2" + log-update "^1.0.2" + ora "^0.2.3" + p-map "^1.1.1" + rxjs "^5.4.2" + stream-to-observable "^0.2.0" + strip-ansi "^3.0.1" + load-json-file@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" @@ -2017,19 +2755,15 @@ load-json-file@^1.0.0: pinkie-promise "^2.0.0" strip-bom "^2.0.0" -load-json-file@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" dependencies: graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" + parse-json "^4.0.0" + pify "^3.0.0" strip-bom "^3.0.0" -loader-runner@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.3.0.tgz#f482aea82d543e07921700d5a46ef26fdac6b8a2" - loader-utils@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" @@ -2100,13 +2834,42 @@ lodash@4.17.4: version "4.17.4" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.4.tgz#78203a4d1c328ae1d86dca6460e369b57f4055ae" -lodash@^4.14.0, lodash@^4.17.4, lodash@^4.3.0: +lodash@^4.13.1, lodash@^4.14.0, lodash@^4.17.2, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0: version "4.17.5" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.5.tgz#99a92d65c0272debe8c96b6057bc8fbfa3bed511" -longest@^1.0.1: +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + dependencies: + chalk "^1.0.0" + +log-symbols@^2.1.0, log-symbols@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" + dependencies: + chalk "^2.0.1" + +log-update@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-1.0.2.tgz#19929f64c4093d2d2e7075a1dad8af59c296b8d1" + dependencies: + ansi-escapes "^1.0.0" + cli-cursor "^1.0.2" + +loose-envify@^1.0.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.3.1.tgz#d1a8ad33fa9ce0e713d65fdd0ac8b748d478c848" + dependencies: + js-tokens "^3.0.0" + +lowercase-keys@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.0.tgz#4e3366b39e7f5457e35f1324bdf6f88d0bfc7306" + +lowercase-keys@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + resolved "https://registry.yarnpkg.com/lowercase-keys/-/lowercase-keys-1.0.1.tgz#6f9e30b47084d971a7c820ff15a6c5167b74c26f" lru-cache@^4.0.1: version "4.1.1" @@ -2125,6 +2888,12 @@ ltgt@~2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/ltgt/-/ltgt-2.2.0.tgz#b65ba5fcb349a29924c8e333f7c6a5562f2e4842" +make-dir@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.2.0.tgz#6d6a49eead4aae296c53bbf3a1a008bd6c89469b" + dependencies: + pify "^3.0.0" + md5.js@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.4.tgz#e9bdbde94a20a5ac18b04340fc5764d5b09d901d" @@ -2132,6 +2901,29 @@ md5.js@^1.3.4: hash-base "^3.0.0" inherits "^2.0.1" +mem-fs-editor@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/mem-fs-editor/-/mem-fs-editor-3.0.2.tgz#dd0a6eaf2bb8a6b37740067aa549eb530105af9f" + dependencies: + commondir "^1.0.1" + deep-extend "^0.4.0" + ejs "^2.3.1" + glob "^7.0.3" + globby "^6.1.0" + mkdirp "^0.5.0" + multimatch "^2.0.0" + rimraf "^2.2.8" + through2 "^2.0.0" + vinyl "^2.0.1" + +mem-fs@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/mem-fs/-/mem-fs-1.1.3.tgz#b8ae8d2e3fcb6f5d3f9165c12d4551a065d989cc" + dependencies: + through2 "^2.0.0" + vinyl "^1.1.0" + vinyl-file "^2.0.0" + mem@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" @@ -2149,7 +2941,7 @@ memdown@^1.0.0: ltgt "~2.2.0" safe-buffer "~5.1.1" -memory-fs@^0.4.0, memory-fs@~0.4.1: +memory-fs@^0.4.0: version "0.4.1" resolved "https://registry.yarnpkg.com/memory-fs/-/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" dependencies: @@ -2173,7 +2965,7 @@ merkle-patricia-tree@^2.1.2: rlp "^2.0.0" semaphore ">=1.0.1" -micromatch@^2.1.5: +micromatch@^2.3.7: version "2.3.11" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" dependencies: @@ -2191,18 +2983,11 @@ micromatch@^2.1.5: parse-glob "^3.0.4" regex-cache "^0.4.2" -miller-rabin@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" - dependencies: - bn.js "^4.0.0" - brorand "^1.0.1" - mime-db@~1.33.0: version "1.33.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.33.0.tgz#a3492050a5cb9b63450541e39d9788d2272783db" -mime-types@^2.1.12, mime-types@~2.1.17, mime-types@~2.1.7: +mime-types@^2.1.12, mime-types@~2.1.17: version "2.1.18" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.18.tgz#6f323f60a83d11146f831ff11fd66e2fe5503bb8" dependencies: @@ -2212,6 +2997,10 @@ mimic-fn@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" +mimic-response@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.0.tgz#df3d3652a73fded6b9b0b24146e6fd052353458e" + min-document@^2.19.0: version "2.19.0" resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" @@ -2236,11 +3025,15 @@ minimist@0.0.8: version "0.0.8" resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" +minimist@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.1.0.tgz#99df657a52574c21c9057497df742790b2b4c0de" + minimist@^1.2.0, minimist@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" -mkdirp@0.5.1, "mkdirp@>=0.5 0", mkdirp@^0.5.1, mkdirp@~0.5.0: +mkdirp@0.5.1, mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" dependencies: @@ -2267,11 +3060,20 @@ ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" +multimatch@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/multimatch/-/multimatch-2.1.0.tgz#9c7906a22fb4c02919e2f5f75161b4cdbd4b2a2b" + dependencies: + array-differ "^1.0.0" + array-union "^1.0.1" + arrify "^1.0.0" + minimatch "^3.0.0" + mute-stream@0.0.7: version "0.0.7" resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" -nan@^2.0.5, nan@^2.0.8, nan@^2.2.1, nan@^2.3.0: +nan@^2.0.5, nan@^2.0.8, nan@^2.2.1: version "2.9.2" resolved "https://registry.yarnpkg.com/nan/-/nan-2.9.2.tgz#f564d75f5f8f36a6d9456cca7a6c4fe488ab7866" @@ -2279,6 +3081,18 @@ natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" +neo-async@^2.5.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.5.1.tgz#acb909e327b1e87ec9ef15f41b8a269512ad41ee" + +nice-try@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.4.tgz#d93962f6c52f2c1558c0fbda6d512819f1efe1c4" + +node-dir@0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/node-dir/-/node-dir-0.1.8.tgz#55fb8deb699070707fb67f91a460f0448294c77d" + node-fetch@^1.0.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" @@ -2286,56 +3100,12 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" -node-libs-browser@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/node-libs-browser/-/node-libs-browser-2.1.0.tgz#5f94263d404f6e44767d726901fff05478d600df" - dependencies: - assert "^1.1.1" - browserify-zlib "^0.2.0" - buffer "^4.3.0" - console-browserify "^1.1.0" - constants-browserify "^1.0.0" - crypto-browserify "^3.11.0" - domain-browser "^1.1.1" - events "^1.0.0" - https-browserify "^1.0.0" - os-browserify "^0.3.0" - path-browserify "0.0.0" - process "^0.11.10" - punycode "^1.2.4" - querystring-es3 "^0.2.0" - readable-stream "^2.3.3" - stream-browserify "^2.0.1" - stream-http "^2.7.2" - string_decoder "^1.0.0" - timers-browserify "^2.0.4" - tty-browserify "0.0.0" - url "^0.11.0" - util "^0.10.3" - vm-browserify "0.0.4" - -node-pre-gyp@^0.6.39: - version "0.6.39" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649" - dependencies: - detect-libc "^1.0.2" - hawk "3.1.3" - mkdirp "^0.5.1" - nopt "^4.0.1" - npmlog "^4.0.2" - rc "^1.1.7" - request "2.81.0" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^2.2.1" - tar-pack "^3.4.0" - -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" +nomnom@^1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/nomnom/-/nomnom-1.8.1.tgz#2151f722472ba79e50a76fc125bb8c8f2e4dc2a7" dependencies: - abbrev "1" - osenv "^0.1.4" + chalk "~0.4.0" + underscore "~1.6.0" normalize-package-data@^2.3.2: version "2.4.0" @@ -2346,32 +3116,31 @@ normalize-package-data@^2.3.2: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" -normalize-path@^2.0.0, normalize-path@^2.0.1: +normalize-path@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" dependencies: remove-trailing-separator "^1.0.1" +normalize-url@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-2.0.1.tgz#835a9da1551fa26f70e92329069a23aa6574d7e6" + dependencies: + prepend-http "^2.0.0" + query-string "^5.0.1" + sort-keys "^2.0.0" + npm-run-path@^2.0.0: version "2.0.2" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" dependencies: path-key "^2.0.0" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" -oauth-sign@~0.8.1, oauth-sign@~0.8.2: +oauth-sign@~0.8.2: version "0.8.2" resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43" @@ -2398,12 +3167,16 @@ object.omit@^2.0.0: for-own "^0.1.4" is-extendable "^0.1.1" -once@^1.3.0, once@^1.3.3: +once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" dependencies: wrappy "1" +onetime@^1.0.0: + version "1.1.0" + resolved "http://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" + onetime@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" @@ -2421,14 +3194,19 @@ optionator@^0.8.2: type-check "~0.3.2" wordwrap "~1.0.0" +ora@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/ora/-/ora-0.2.3.tgz#37527d220adcd53c39b73571d754156d5db657a4" + dependencies: + chalk "^1.1.1" + cli-cursor "^1.0.2" + cli-spinners "^0.1.2" + object-assign "^4.0.1" + original-require@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20" -os-browserify@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" - os-homedir@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" @@ -2447,21 +3225,36 @@ os-locale@^2.0.0: lcid "^1.0.0" mem "^1.1.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@^1.0.1, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" +p-cancelable@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.3.0.tgz#b9e123800bcebb7ac13a479be195b507b98d30fa" + +p-cancelable@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/p-cancelable/-/p-cancelable-0.4.1.tgz#35f363d67d52081c8d9585e37bcceb7e0bbcb2a0" + +p-each-series@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-1.0.0.tgz#930f3d12dd1f50e7434457a22cd6f04ac6ad7f71" dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" + p-reduce "^1.0.0" p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" +p-is-promise@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-1.1.0.tgz#9c9456989e9f6588017b0434d56097675c3da05e" + +p-lazy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-lazy/-/p-lazy-1.0.0.tgz#ec53c802f2ee3ac28f166cc82d0b2b02de27a835" + p-limit@^1.1.0: version "1.2.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.2.0.tgz#0e92b6bedcb59f022c13d0f1949dc82d15909f1c" @@ -2474,23 +3267,29 @@ p-locate@^2.0.0: dependencies: p-limit "^1.1.0" -p-try@^1.0.0: +p-map@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-1.2.0.tgz#e4e94f311eabbc8633a1e79908165fca26241b6b" + +p-reduce@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + resolved "https://registry.yarnpkg.com/p-reduce/-/p-reduce-1.0.0.tgz#18c2b0dd936a4690a529f8231f58a0fdb6a47dfa" -pako@~1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.6.tgz#0101211baa70c4bca4a0f63f2206e97b7dfaf258" +p-timeout@^1.1.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-1.2.1.tgz#5eb3b353b7fce99f101a1038880bb054ebbea386" + dependencies: + p-finally "^1.0.0" -parse-asn1@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.0.tgz#37c4f9b7ed3ab65c74817b5f2480937fbf97c712" +p-timeout@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/p-timeout/-/p-timeout-2.0.1.tgz#d8dd1979595d2dc0139e1fe46b8b646cb3cdf038" dependencies: - asn1.js "^4.0.0" - browserify-aes "^1.0.0" - create-hash "^1.1.0" - evp_bytestokey "^1.0.0" - pbkdf2 "^3.0.3" + p-finally "^1.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" parse-glob@^3.0.4: version "3.0.4" @@ -2514,9 +3313,16 @@ parse-json@^2.2.0: dependencies: error-ex "^1.2.0" -path-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.0.tgz#a0b870729aae214005b7d5032ec2cbbb0fb4451a" +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" path-exists@^2.0.0: version "2.1.0" @@ -2528,7 +3334,7 @@ path-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" -path-is-absolute@^1.0.0: +path-is-absolute@^1.0.0, path-is-absolute@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" @@ -2536,7 +3342,7 @@ path-is-inside@^1.0.1, path-is-inside@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" -path-key@^2.0.0: +path-key@^2.0.0, path-key@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" @@ -2552,11 +3358,11 @@ path-type@^1.0.0: pify "^2.0.0" pinkie-promise "^2.0.0" -path-type@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" dependencies: - pify "^2.0.0" + pify "^3.0.0" pbkdf2@^3.0.3, pbkdf2@^3.0.9: version "3.0.14" @@ -2568,18 +3374,18 @@ pbkdf2@^3.0.3, pbkdf2@^3.0.9: safe-buffer "^5.0.1" sha.js "^2.4.8" -performance-now@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5" - performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" -pify@^2.0.0: +pify@^2.0.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -2590,6 +3396,12 @@ pinkie@^2.0.0: version "2.0.4" resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + dependencies: + find-up "^2.1.0" + pluralize@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-4.0.0.tgz#59b708c1c0190a2f692f1c7618c446b052fd1762" @@ -2598,18 +3410,34 @@ prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" +prepend-http@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" + +prepend-http@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-2.0.0.tgz#e92434bfa5ea8c19f41cdfd401d741a3c819d897" + preserve@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" -process-nextick-args@~2.0.0: +prettier@^1.5.3: + version "1.12.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.12.1.tgz#c1ad20e803e7749faf905a409d2367e06bbe7325" + +pretty-bytes@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-4.0.2.tgz#b2bf82e7350d65c6c33aa95aaa5a4f6327f61cd9" + +private@^0.1.6, private@^0.1.7, private@~0.1.5: + version "0.1.8" + resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.0.tgz#a37d732f4271b4ab1ad070d35508e8290788ffaa" -process@^0.11.10: - version "0.11.10" - resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" - process@~0.5.1: version "0.5.2" resolved "https://registry.yarnpkg.com/process/-/process-0.5.2.tgz#1638d8a8e34c2f440a91db95ab9aeb677fc185cf" @@ -2622,43 +3450,25 @@ prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - -public-encrypt@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.0.tgz#39f699f3a46560dd5ebacbca693caf7c65c18cc6" - dependencies: - bn.js "^4.1.0" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - parse-asn1 "^5.0.0" - randombytes "^2.0.1" - -punycode@1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" -punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" -qs@~6.4.0: - version "6.4.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233" - qs@~6.5.1: version "6.5.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.1.tgz#349cdf6eef89ec45c12d7d5eb3fc0c870343a6d8" -querystring-es3@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" - -querystring@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620" +query-string@^5.0.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" + dependencies: + decode-uri-component "^0.2.0" + object-assign "^4.1.0" + strict-uri-encode "^1.0.0" randomatic@^1.1.3: version "1.1.7" @@ -2667,27 +3477,18 @@ randomatic@^1.1.3: is-number "^3.0.0" kind-of "^4.0.0" -randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5: +randombytes@^2.0.1: version "2.0.6" resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.0.6.tgz#d302c522948588848a8d300c932b44c24231da80" dependencies: safe-buffer "^5.1.0" -randomfill@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458" - dependencies: - randombytes "^2.0.5" - safe-buffer "^5.1.0" - -rc@^1.1.7: - version "1.2.5" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" +read-chunk@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/read-chunk/-/read-chunk-2.1.0.tgz#6a04c0928005ed9d42e1a6ac5600e19cbc7ff655" dependencies: - deep-extend "~0.4.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" + pify "^3.0.0" + safe-buffer "^5.1.1" read-pkg-up@^1.0.1: version "1.0.1" @@ -2696,12 +3497,12 @@ read-pkg-up@^1.0.1: find-up "^1.0.0" read-pkg "^1.0.0" -read-pkg-up@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" +read-pkg-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-3.0.0.tgz#3ed496685dba0f8fe118d0691dc51f4a1ff96f07" dependencies: find-up "^2.0.0" - read-pkg "^2.0.0" + read-pkg "^3.0.0" read-pkg@^1.0.0: version "1.1.0" @@ -2711,13 +3512,13 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -read-pkg@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" dependencies: - load-json-file "^2.0.0" + load-json-file "^4.0.0" normalize-package-data "^2.3.2" - path-type "^2.0.0" + path-type "^3.0.0" readable-stream@^1.0.33: version "1.1.14" @@ -2728,7 +3529,7 @@ readable-stream@^1.0.33: isarray "0.0.1" string_decoder "~0.10.x" -readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4, readable-stream@^2.2.2, readable-stream@^2.3.3: +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.2.2: version "2.3.4" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.4.tgz#c946c3f47fa7d8eabc0b6150f4a12f69a4574071" dependencies: @@ -2740,6 +3541,18 @@ readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable string_decoder "~1.0.3" util-deprecate "~1.0.1" +readable-stream@^2.1.5, readable-stream@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + readable-stream@~1.0.15: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -2749,14 +3562,46 @@ readable-stream@~1.0.15: isarray "0.0.1" string_decoder "~0.10.x" -readdirp@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78" +recast@^0.12.5: + version "0.12.9" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.12.9.tgz#e8e52bdb9691af462ccbd7c15d5a5113647a15f1" dependencies: - graceful-fs "^4.1.2" - minimatch "^3.0.2" - readable-stream "^2.0.2" - set-immediate-shim "^1.0.1" + ast-types "0.10.1" + core-js "^2.4.1" + esprima "~4.0.0" + private "~0.1.5" + source-map "~0.6.1" + +recast@^0.14.1: + version "0.14.7" + resolved "https://registry.yarnpkg.com/recast/-/recast-0.14.7.tgz#4f1497c2b5826d42a66e8e3c9d80c512983ff61d" + dependencies: + ast-types "0.11.3" + esprima "~4.0.0" + private "~0.1.5" + source-map "~0.6.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + dependencies: + resolve "^1.1.6" + +regenerate@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.3.3.tgz#0c336d3980553d755c39b586ae3b20aa49c82b7f" + +regenerator-runtime@^0.11.0: + version "0.11.1" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9" + +regenerator-transform@^0.10.0: + version "0.10.1" + resolved "https://registry.yarnpkg.com/regenerator-transform/-/regenerator-transform-0.10.1.tgz#1e4996837231da8b7f3cf4114d71b5691a0680dd" + dependencies: + babel-runtime "^6.18.0" + babel-types "^6.19.0" + private "^0.1.6" regex-cache@^0.4.2: version "0.4.4" @@ -2764,6 +3609,24 @@ regex-cache@^0.4.2: dependencies: is-equal-shallow "^0.1.3" +regexpu-core@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-2.0.0.tgz#49d038837b8dcf8bfa5b9a42139938e6ea2ae240" + dependencies: + regenerate "^1.2.1" + regjsgen "^0.2.0" + regjsparser "^0.1.4" + +regjsgen@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.2.0.tgz#6c016adeac554f75823fe37ac05b92d5a4edb1f7" + +regjsparser@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.1.5.tgz#7ee8f84dc6fa792d3fd0ae228d24bd949ead205c" + dependencies: + jsesc "~0.5.0" + remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -2776,32 +3639,19 @@ repeat-string@^1.5.2: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" -request@2.81.0: - version "2.81.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0" +repeating@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" dependencies: - aws-sign2 "~0.6.0" - aws4 "^1.2.1" - caseless "~0.12.0" - combined-stream "~1.0.5" - extend "~3.0.0" - forever-agent "~0.6.1" - form-data "~2.1.1" - har-validator "~4.2.1" - hawk "~3.1.3" - http-signature "~1.1.0" - is-typedarray "~1.0.0" - isstream "~0.1.2" - json-stringify-safe "~5.0.1" - mime-types "~2.1.7" - oauth-sign "~0.8.1" - performance-now "^0.2.0" - qs "~6.4.0" - safe-buffer "^5.0.1" - stringstream "~0.0.4" - tough-cookie "~2.3.0" - tunnel-agent "^0.6.0" - uuid "^3.0.0" + is-finite "^1.0.0" + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + +replace-ext@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.0.tgz#de63128373fcbf7c3ccfa4de5a480c45a67958eb" request@^2.67.0: version "2.83.0" @@ -2849,16 +3699,52 @@ require-uncached@^1.0.3: caller-path "^0.1.0" resolve-from "^1.0.0" +resolve-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-2.0.0.tgz#00a9f7387556e27038eae232caa372a6a59b665a" + dependencies: + resolve-from "^3.0.0" + +resolve-dir@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + resolve-from@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-1.0.1.tgz#26cbfe935d1aeeeabb29bc3fe5aeb01e93d44226" +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + +resolve@^1.1.6: + version "1.7.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.7.1.tgz#aadd656374fd298aee895bc026b8297418677fd3" + dependencies: + path-parse "^1.0.5" + resolve@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.5.0.tgz#1f09acce796c9a762579f31b2c1cc4c3cddf9f36" dependencies: path-parse "^1.0.5" +responselike@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/responselike/-/responselike-1.0.2.tgz#918720ef3b631c5642be068f15ade5a46f4ba1e7" + dependencies: + lowercase-keys "^1.0.0" + +restore-cursor@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-1.0.1.tgz#34661f46886327fed2991479152252df92daa541" + dependencies: + exit-hook "^1.0.0" + onetime "^1.0.0" + restore-cursor@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" @@ -2872,18 +3758,16 @@ resumer@~0.0.0: dependencies: through "~2.3.4" -right-align@^0.1.1: - version "0.1.3" - resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" - dependencies: - align-text "^0.1.1" - -rimraf@2, rimraf@^2.2.8, rimraf@^2.5.1, rimraf@^2.6.1: +rimraf@^2.2.8, rimraf@^2.6.2: version "2.6.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36" dependencies: glob "^7.0.5" +rimraf@~2.2.6: + version "2.2.8" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.2.8.tgz#e439be2aaee327321952730f99a8929e4fc50582" + ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.1.tgz#0f4584295c53a3628af7e6d79aca21ce57d1c6e7" @@ -2895,7 +3779,7 @@ rlp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.0.0.tgz#9db384ff4b89a8f61563d92395d8625b18f3afb0" -run-async@^2.2.0: +run-async@^2.0.0, run-async@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" dependencies: @@ -2915,10 +3799,20 @@ rx-lite@*, rx-lite@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/rx-lite/-/rx-lite-4.0.8.tgz#0b1e11af8bc44836f04a6407e92da42467b79444" +rxjs@^5.4.2, rxjs@^5.5.2: + version "5.5.10" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-5.5.10.tgz#fde02d7a614f6c8683d0d1957827f492e09db045" + dependencies: + symbol-observable "1.0.1" + safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" +scoped-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/scoped-regex/-/scoped-regex-1.0.0.tgz#a346bb1acd4207ae70bd7c0c7ca9e566b6baddb8" + scrypt.js@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.2.0.tgz#af8d1465b71e9990110bedfc593b9479e03a8ada" @@ -2955,7 +3849,7 @@ semaphore@>=1.0.1, semaphore@^1.0.3: version "1.1.0" resolved "https://registry.yarnpkg.com/semaphore/-/semaphore-1.1.0.tgz#aaad8b86b20fe8e9b32b16dc2ee682a8cd26a8aa" -"semver@2 || 3 || 4 || 5", semver@^5.3.0: +"semver@2 || 3 || 4 || 5", semver@^5.3.0, semver@^5.5.0: version "5.5.0" resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" @@ -2963,18 +3857,10 @@ semver@~5.4.1: version "5.4.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" -set-immediate-shim@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61" - -setimmediate@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" - sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.10" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.10.tgz#b1fde5cd7d11a5626638a07c604ab909cfa31f9b" @@ -2998,21 +3884,35 @@ shebang-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" +shelljs@^0.8.0: + version "0.8.1" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.1.tgz#729e038c413a2254c4078b95ed46e0397154a9f1" + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" +slash@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-1.0.0.tgz#c41f2f6c39fc16d1cd17ad4b5d896114ae470d55" + +slice-ansi@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-0.0.4.tgz#edbf8903f66f7ce2f8eafd6ceed65e264c831b35" + slice-ansi@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-1.0.0.tgz#044f1a49d8842ff307aad6b505ed178bd950134d" dependencies: is-fullwidth-code-point "^2.0.0" -sntp@1.x.x: - version "1.0.9" - resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198" - dependencies: - hoek "2.x.x" +slide@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" sntp@2.x.x: version "2.1.0" @@ -3051,15 +3951,29 @@ solhint@^1.1.10: ignore "^3.3.7" lodash "4.17.4" -source-list-map@^2.0.0: +sort-keys@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.0.tgz#aaa47403f7b245a92fbc97ea08f250d6087ed085" + resolved "https://registry.yarnpkg.com/sort-keys/-/sort-keys-2.0.0.tgz#658535584861ec97d730d6cf41822e1f56684128" + dependencies: + is-plain-obj "^1.0.0" + +source-map-support@^0.4.15: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + dependencies: + source-map "^0.5.6" + +source-map-support@^0.5.3: + version "0.5.4" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.4.tgz#54456efa89caa9270af7cd624cc2f123e51fbae8" + dependencies: + source-map "^0.6.0" -source-map@^0.5.3, source-map@^0.5.6, source-map@~0.5.1: +source-map@^0.5.6, source-map@^0.5.7: version "0.5.7" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" -source-map@~0.6.1: +source-map@^0.6.0, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -3095,24 +4009,21 @@ sshpk@^1.7.0: jsbn "~0.1.0" tweetnacl "~0.14.0" -stream-browserify@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.1.tgz#66266ee5f9bdb9940a4e4514cafb43bb71e5c9db" +stream-to-observable@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/stream-to-observable/-/stream-to-observable-0.2.0.tgz#59d6ea393d87c2c0ddac10aa0d561bc6ba6f0e10" dependencies: - inherits "~2.0.1" - readable-stream "^2.0.2" + any-observable "^0.2.0" -stream-http@^2.7.2: - version "2.8.0" - resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-2.8.0.tgz#fd86546dac9b1c91aff8fc5d287b98fafb41bc10" - dependencies: - builtin-status-codes "^3.0.0" - inherits "^2.0.1" - readable-stream "^2.3.3" - to-arraybuffer "^1.0.0" - xtend "^4.0.0" +strict-uri-encode@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" -string-width@^1.0.1, string-width@^1.0.2: +string-template@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string-template/-/string-template-0.2.1.tgz#42932e598a352d01fc22ec3367d9d84eec6c9add" + +string-width@^1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" dependencies: @@ -3135,17 +4046,23 @@ string.prototype.trim@~1.1.2: es-abstract "^1.5.0" function-bind "^1.0.2" -string_decoder@^1.0.0, string_decoder@~1.0.3: +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + +string_decoder@~1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab" dependencies: safe-buffer "~5.1.0" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + dependencies: + safe-buffer "~5.1.0" -stringstream@~0.0.4, stringstream@~0.0.5: +stringstream@~0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878" @@ -3161,6 +4078,17 @@ strip-ansi@^4.0.0: dependencies: ansi-regex "^3.0.0" +strip-ansi@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-0.1.1.tgz#39e8a98d044d150660abe4a6808acf70bb7bc991" + +strip-bom-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-stream/-/strip-bom-stream-2.0.0.tgz#f87db5ef2613f6968aa545abfe1ec728b6a829ca" + dependencies: + first-chunk-stream "^2.0.0" + strip-bom "^2.0.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -3195,18 +4123,26 @@ supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" -supports-color@^4.2.1: - version "4.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" - dependencies: - has-flag "^2.0.0" - supports-color@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.2.0.tgz#b0d5333b1184dd3666cbe5aa0b45c5ac7ac17a4a" dependencies: has-flag "^3.0.0" +supports-color@^5.3.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.4.0.tgz#1c6b337402c2137605efe19f10fec390f6faab54" + dependencies: + has-flag "^3.0.0" + +symbol-observable@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.1.tgz#8340fc4702c3122df5d22288f88283f513d3fdd4" + +symbol-observable@^0.2.2: + version "0.2.4" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-0.2.4.tgz#95a83db26186d6af7e7a18dbd9760a2f86d08f40" + table@^4.0.1: version "4.0.3" resolved "https://registry.yarnpkg.com/table/-/table-4.0.3.tgz#00b5e2b602f1794b9acaf9ca908a76386a7813bc" @@ -3218,9 +4154,9 @@ table@^4.0.1: slice-ansi "1.0.0" string-width "^2.1.1" -tapable@^0.2.7: - version "0.2.8" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-0.2.8.tgz#99372a5c999bf2df160afc0d74bed4f47948cd22" +tapable@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.0.0.tgz#cbb639d9002eed9c6b5975eb20598d7936f1f9f2" tape@^4.4.0: version "4.9.0" @@ -3240,40 +4176,35 @@ tape@^4.4.0: string.prototype.trim "~1.1.2" through "~2.3.8" -tar-pack@^3.4.0: - version "3.4.1" - resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f" - dependencies: - debug "^2.2.0" - fstream "^1.0.10" - fstream-ignore "^1.0.5" - once "^1.3.3" - readable-stream "^2.1.4" - rimraf "^2.5.1" - tar "^2.2.1" - uid-number "^0.0.6" - -tar@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" +temp@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.8.3.tgz#e0c6bc4d26b903124410e4fed81103014dfc1f59" dependencies: - block-stream "*" - fstream "^1.0.2" - inherits "2" + os-tmpdir "^1.0.0" + rimraf "~2.2.6" -text-table@~0.2.0: +text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" +textextensions@2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/textextensions/-/textextensions-2.2.0.tgz#38ac676151285b658654581987a0ce1a4490d286" + +through2@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.3.tgz#0004569b37c7c74ba39c43f3ced78d1ad94140be" + dependencies: + readable-stream "^2.1.5" + xtend "~4.0.1" + through@^2.3.6, through@~2.3.4, through@~2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" -timers-browserify@^2.0.4: - version "2.0.6" - resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-2.0.6.tgz#241e76927d9ca05f4d959819022f5b3664b64bae" - dependencies: - setimmediate "^1.0.4" +timed-out@^4.0.0, timed-out@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/timed-out/-/timed-out-4.0.1.tgz#f32eacac5a175bea25d7fab565ab3ed8741ef56f" tmp@^0.0.33: version "0.0.33" @@ -3281,16 +4212,20 @@ tmp@^0.0.33: dependencies: os-tmpdir "~1.0.2" -to-arraybuffer@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz#7d229b1fcc637e466ca081180836a7aabff83f43" +to-fast-properties@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-1.0.3.tgz#b83571fa4d8c25b82e231b06e3a3055de4ca1a47" -tough-cookie@~2.3.0, tough-cookie@~2.3.3: +tough-cookie@~2.3.3: version "2.3.3" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561" dependencies: punycode "^1.4.1" +trim-right@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/trim-right/-/trim-right-1.0.1.tgz#cb2e1203067e0c8de1f614094b9fe45704ea6003" + trim@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.1.tgz#5858547f6b290757ee95cccc666fb50084c460dd" @@ -3312,10 +4247,6 @@ truffle@^4.0.6: original-require "^1.0.1" solc "0.4.19" -tty-browserify@0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.0.tgz#a157ba402da24e9bf957f9aa69d524eed42901a6" - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -3336,41 +4267,33 @@ typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" -uglify-js@^2.8.29: - version "2.8.29" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-2.8.29.tgz#29c5733148057bb4e1f75df35b7a9cb72e6a59dd" - dependencies: - source-map "~0.5.1" - yargs "~3.10.0" - optionalDependencies: - uglify-to-browserify "~1.0.0" - -uglify-to-browserify@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz#6e0924d6bda6b5afe349e39a6d632850a0f882b7" - -uglifyjs-webpack-plugin@^0.4.6: - version "0.4.6" - resolved "https://registry.yarnpkg.com/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-0.4.6.tgz#b951f4abb6bd617e66f63eb891498e391763e309" - dependencies: - source-map "^0.5.6" - uglify-js "^2.8.29" - webpack-sources "^1.0.1" - -uid-number@^0.0.6: - version "0.0.6" - resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81" +underscore@~1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.6.0.tgz#8b38b10cacdef63337b8b24e4ff86d45aea529a8" unorm@^1.3.3: version "1.4.1" resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.4.1.tgz#364200d5f13646ca8bcd44490271335614792300" -url@^0.11.0: - version "0.11.0" - resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" +untildify@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/untildify/-/untildify-3.0.2.tgz#7f1f302055b3fea0f3e81dc78eb36766cb65e3f1" + +url-parse-lax@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-1.0.0.tgz#7af8f303645e9bd79a272e7a14ac68bc0609da73" + dependencies: + prepend-http "^1.0.1" + +url-parse-lax@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/url-parse-lax/-/url-parse-lax-3.0.0.tgz#16b5cafc07dbe3676c1b1999177823d6503acb0c" dependencies: - punycode "1.3.2" - querystring "0.2.0" + prepend-http "^2.0.0" + +url-to-options@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/url-to-options/-/url-to-options-1.0.1.tgz#1505a03a289a48cbd7a434efbaeec5055f5633a9" utf8@^2.1.1: version "2.1.2" @@ -3380,20 +4303,18 @@ util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" -util@0.10.3, util@^0.10.3: - version "0.10.3" - resolved "https://registry.yarnpkg.com/util/-/util-0.10.3.tgz#7afb1afe50805246489e3db7fe0ed379336ac0f9" - dependencies: - inherits "2.0.1" - uuid@^2.0.1: version "2.0.3" resolved "https://registry.yarnpkg.com/uuid/-/uuid-2.0.3.tgz#67e2e863797215530dff318e5bf9dcebfd47b21a" -uuid@^3.0.0, uuid@^3.1.0: +uuid@^3.1.0: version "3.2.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" +v8-compile-cache@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-1.1.2.tgz#8d32e4f16974654657e676e0e467a348e89b0dc4" + validate-npm-package-license@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz#2804babe712ad3379459acfbe24746ab2c303fbc" @@ -3409,19 +4330,35 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -vm-browserify@0.0.4: - version "0.0.4" - resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-0.0.4.tgz#5d7ea45bbef9e4a6ff65f95438e0a87c357d5a73" +vinyl-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/vinyl-file/-/vinyl-file-2.0.0.tgz#a7ebf5ffbefda1b7d18d140fcb07b223efb6751a" dependencies: - indexof "0.0.1" + graceful-fs "^4.1.2" + pify "^2.3.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + strip-bom-stream "^2.0.0" + vinyl "^1.1.0" -watchpack@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.4.0.tgz#4a1472bcbb952bd0a9bb4036801f954dfb39faac" +vinyl@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-1.2.0.tgz#5c88036cf565e5df05558bfc911f8656df218884" dependencies: - async "^2.1.2" - chokidar "^1.7.0" - graceful-fs "^4.1.2" + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.1.0.tgz#021f9c2cf951d6b939943c89eb5ee5add4fd924c" + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" web3-provider-engine@^8.4.0: version "8.6.1" @@ -3461,39 +4398,42 @@ web3@^0.18.2: xhr2 "*" xmlhttprequest "*" -webpack-sources@^1.0.1: - version "1.1.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-1.1.0.tgz#a101ebae59d6507354d71d8013950a3a8b7a5a54" - dependencies: - source-list-map "^2.0.0" - source-map "~0.6.1" - -webpack@^3.0.0: - version "3.11.0" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-3.11.0.tgz#77da451b1d7b4b117adaf41a1a93b5742f24d894" - dependencies: - acorn "^5.0.0" - acorn-dynamic-import "^2.0.0" - ajv "^6.1.0" - ajv-keywords "^3.1.0" - async "^2.1.2" - enhanced-resolve "^3.4.0" - escope "^3.6.0" - interpret "^1.0.0" - json-loader "^0.5.4" - json5 "^0.5.1" - loader-runner "^2.3.0" +webpack-addons@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/webpack-addons/-/webpack-addons-1.1.5.tgz#2b178dfe873fb6e75e40a819fa5c26e4a9bc837a" + dependencies: + jscodeshift "^0.4.0" + +webpack-cli@^2.0.9: + version "2.0.14" + resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-2.0.14.tgz#71d03d8c10547c1dfd674f71ff3b0457c33a74cd" + dependencies: + chalk "^2.3.2" + cross-spawn "^6.0.5" + diff "^3.5.0" + enhanced-resolve "^4.0.0" + envinfo "^4.4.2" + glob-all "^3.1.0" + global-modules "^1.0.0" + got "^8.2.0" + import-local "^1.0.0" + inquirer "^5.1.0" + interpret "^1.0.4" + jscodeshift "^0.5.0" + listr "^0.13.0" loader-utils "^1.1.0" - memory-fs "~0.4.1" - mkdirp "~0.5.0" - node-libs-browser "^2.0.0" - source-map "^0.5.3" - supports-color "^4.2.1" - tapable "^0.2.7" - uglifyjs-webpack-plugin "^0.4.6" - watchpack "^1.4.0" - webpack-sources "^1.0.1" - yargs "^8.0.2" + lodash "^4.17.5" + log-symbols "^2.2.0" + mkdirp "^0.5.1" + p-each-series "^1.0.0" + p-lazy "^1.0.0" + prettier "^1.5.3" + supports-color "^5.3.0" + v8-compile-cache "^1.1.2" + webpack-addons "^1.1.5" + yargs "^11.1.0" + yeoman-environment "^2.0.0" + yeoman-generator "^2.0.3" whatwg-fetch@>=0.10.0: version "2.0.3" @@ -3507,30 +4447,16 @@ which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" -which@^1.2.9: +which@^1.2.14, which@^1.2.9: version "1.3.0" resolved "https://registry.yarnpkg.com/which/-/which-1.3.0.tgz#ff04bdfc010ee547d780bec38e1ac1c2777d253a" dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710" - dependencies: - string-width "^1.0.2" - -window-size@0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.0.tgz#5438cd2ea93b202efa3a19fe8887aee7c94f9c9d" - window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" -wordwrap@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.2.tgz#b79669bb42ecb409f83d583cad52ca17eaa1643f" - wordwrap@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" @@ -3546,6 +4472,14 @@ wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" +write-file-atomic@^1.2.0: + version "1.3.4" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-1.3.4.tgz#f807a4f0b1d9e913ae7a48112e6cc3af1991b45f" + dependencies: + graceful-fs "^4.1.11" + imurmurhash "^0.1.4" + slide "^1.1.5" + write@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" @@ -3569,7 +4503,7 @@ xmlhttprequest@*: version "1.8.0" resolved "https://registry.yarnpkg.com/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz#67fe075c5c24fef39f9d65f5f7b7fe75171968fc" -xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0: +xtend@^4.0.0, xtend@^4.0.1, xtend@~4.0.0, xtend@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.1.tgz#a5c6d532be656e23db820efb943a1f04998d63af" @@ -3594,12 +4528,29 @@ yargs-parser@^2.4.1: camelcase "^3.0.0" lodash.assign "^4.0.6" -yargs-parser@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-7.0.0.tgz#8d0ac42f16ea55debd332caf4c4038b3e3f5dfd9" +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" dependencies: camelcase "^4.1.0" +yargs@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.0.0" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^2.0.0" + which-module "^2.0.0" + y18n "^3.2.1" + yargs-parser "^9.0.2" + yargs@^4.7.1: version "4.8.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-4.8.1.tgz#c0c42924ca4aaa6b0e6da1739dfb216439f9ddc0" @@ -3619,29 +4570,56 @@ yargs@^4.7.1: y18n "^3.2.1" yargs-parser "^2.4.1" -yargs@^8.0.2: - version "8.0.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-8.0.2.tgz#6299a9055b1cefc969ff7e79c1d918dceb22c360" +yargs@~1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-1.2.6.tgz#9c7b4a82fd5d595b2bf17ab6dcc43135432fe34b" dependencies: - camelcase "^4.1.0" - cliui "^3.2.0" - decamelize "^1.1.1" - get-caller-file "^1.0.1" - os-locale "^2.0.0" - read-pkg-up "^2.0.0" - require-directory "^2.1.1" - require-main-filename "^1.0.1" - set-blocking "^2.0.0" - string-width "^2.0.0" - which-module "^2.0.0" - y18n "^3.2.1" - yargs-parser "^7.0.0" + minimist "^0.1.0" -yargs@~3.10.0: - version "3.10.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.10.0.tgz#f7ee7bd857dd7c1d2d38c0e74efbd681d1431fd1" +yeoman-environment@^2.0.0, yeoman-environment@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-2.0.6.tgz#ae1b21d826b363f3d637f88a7fc9ea7414cb5377" + dependencies: + chalk "^2.1.0" + debug "^3.1.0" + diff "^3.3.1" + escape-string-regexp "^1.0.2" + globby "^6.1.0" + grouped-queue "^0.3.3" + inquirer "^3.3.0" + is-scoped "^1.0.0" + lodash "^4.17.4" + log-symbols "^2.1.0" + mem-fs "^1.1.0" + text-table "^0.2.0" + untildify "^3.0.2" + +yeoman-generator@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/yeoman-generator/-/yeoman-generator-2.0.4.tgz#c1c51580ab88506233dd6e837a4bbf8a8e34c9a6" dependencies: - camelcase "^1.0.2" - cliui "^2.1.0" - decamelize "^1.0.0" - window-size "0.1.0" + async "^2.6.0" + chalk "^2.3.0" + cli-table "^0.3.1" + cross-spawn "^5.1.0" + dargs "^5.1.0" + dateformat "^3.0.2" + debug "^3.1.0" + detect-conflict "^1.0.0" + error "^7.0.2" + find-up "^2.1.0" + github-username "^4.0.0" + istextorbinary "^2.1.0" + lodash "^4.17.4" + make-dir "^1.1.0" + mem-fs-editor "^3.0.2" + minimist "^1.2.0" + pretty-bytes "^4.0.2" + read-chunk "^2.1.0" + read-pkg-up "^3.0.0" + rimraf "^2.6.2" + run-async "^2.0.0" + shelljs "^0.8.0" + text-table "^0.2.0" + through2 "^2.0.0" + yeoman-environment "^2.0.5" From b151be7503f037b7a0ff036a0d62c2c1ba5e955d Mon Sep 17 00:00:00 2001 From: Joel Torstensson Date: Wed, 18 Apr 2018 14:45:58 +0200 Subject: [PATCH 2/8] Remove constructor --- contracts/EthereumDIDRegistry.sol | 3 --- 1 file changed, 3 deletions(-) diff --git a/contracts/EthereumDIDRegistry.sol b/contracts/EthereumDIDRegistry.sol index 37313b1..18b0419 100644 --- a/contracts/EthereumDIDRegistry.sol +++ b/contracts/EthereumDIDRegistry.sol @@ -34,9 +34,6 @@ contract EthereumDIDRegistry { uint previousChange ); - function EthereumDIDRegistry() public { - } - function identityOwner(address identity) public view returns(address) { address owner = owners[identity]; if (owner != 0x0) { From d718de0c2a8f858f56e00614030a1f969a6d3ee5 Mon Sep 17 00:00:00 2001 From: Joel Torstensson Date: Wed, 18 Apr 2018 15:33:25 +0200 Subject: [PATCH 3/8] Use emit for events --- contracts/EthereumDIDRegistry.sol | 10 +++++----- package.json | 2 +- yarn.lock | 16 ++++++++-------- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/contracts/EthereumDIDRegistry.sol b/contracts/EthereumDIDRegistry.sol index 18b0419..93ff031 100644 --- a/contracts/EthereumDIDRegistry.sol +++ b/contracts/EthereumDIDRegistry.sol @@ -63,7 +63,7 @@ contract EthereumDIDRegistry { function changeOwner(address identity, address actor, address newOwner) internal onlyOwner(identity, actor) { owners[identity] = newOwner; - DIDOwnerChanged(identity, newOwner, changed[identity]); + emit DIDOwnerChanged(identity, newOwner, changed[identity]); changed[identity] = block.number; } @@ -78,7 +78,7 @@ contract EthereumDIDRegistry { function addDelegate(address identity, address actor, bytes32 delegateType, address delegate, uint validity ) internal onlyOwner(identity, actor) { delegates[identity][keccak256(delegateType)][delegate] = block.timestamp + validity; - DIDDelegateChanged(identity, delegateType, delegate, block.timestamp + validity, changed[identity]); + emit DIDDelegateChanged(identity, delegateType, delegate, block.timestamp + validity, changed[identity]); changed[identity] = block.number; } @@ -93,7 +93,7 @@ contract EthereumDIDRegistry { function revokeDelegate(address identity, address actor, bytes32 delegateType, address delegate) internal onlyOwner(identity, actor) { delegates[identity][keccak256(delegateType)][delegate] = 0; - DIDDelegateChanged(identity, delegateType, delegate, 0, changed[identity]); + emit DIDDelegateChanged(identity, delegateType, delegate, 0, changed[identity]); changed[identity] = block.number; } @@ -107,7 +107,7 @@ contract EthereumDIDRegistry { } function setAttribute(address identity, address actor, bytes32 name, bytes value, uint validity ) internal onlyOwner(identity, actor) { - DIDAttributeChanged(identity, name, value, block.timestamp + validity, changed[identity]); + emit DIDAttributeChanged(identity, name, value, block.timestamp + validity, changed[identity]); changed[identity] = block.number; } @@ -121,7 +121,7 @@ contract EthereumDIDRegistry { } function revokeAttribute(address identity, address actor, bytes32 name, bytes value ) internal onlyOwner(identity, actor) { - DIDAttributeChanged(identity, name, value, 0, changed[identity]); + emit DIDAttributeChanged(identity, name, value, 0, changed[identity]); changed[identity] = block.number; } diff --git a/package.json b/package.json index 670e11f..4220292 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "js-sha3": "^0.7.0", "ls": "^0.2.1", "solhint": "^1.1.10", - "truffle": "^4.0.6", + "truffle": "^4.1.6", "truffle-hdwallet-provider": "^0.0.3" }, "scripts": { diff --git a/yarn.lock b/yarn.lock index 9764e77..a865f79 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1840,7 +1840,7 @@ functional-red-black-tree@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" -ganache-cli@^6.1.0: +ganache-cli@^6.0.3: version "6.1.0" resolved "https://registry.yarnpkg.com/ganache-cli/-/ganache-cli-6.1.0.tgz#486c846497204b644166b5f0f74c9b41d02bdc25" dependencies: @@ -3920,9 +3920,9 @@ sntp@2.x.x: dependencies: hoek "4.x.x" -solc@0.4.19: - version "0.4.19" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.19.tgz#1af1c4c292a0365a6977d4cbe3fbee7139b4b561" +solc@0.4.21: + version "0.4.21" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.21.tgz#6a7ecd505bfa0fc268330d5de6b9ae65c8c68264" dependencies: fs-extra "^0.30.0" memorystream "^0.3.1" @@ -4239,13 +4239,13 @@ truffle-hdwallet-provider@^0.0.3: web3 "^0.18.2" web3-provider-engine "^8.4.0" -truffle@^4.0.6: - version "4.0.6" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-4.0.6.tgz#04a23b4c75336f325804d262317f901dbab4f729" +truffle@^4.1.6: + version "4.1.6" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-4.1.6.tgz#3887081d73973c4e79de52fb25c27bac5e527dd7" dependencies: mocha "^3.4.2" original-require "^1.0.1" - solc "0.4.19" + solc "0.4.21" tunnel-agent@^0.6.0: version "0.6.0" From 445c78a52643a27b70dbe25be3a83ca5cdeea27e Mon Sep 17 00:00:00 2001 From: Joel Torstensson Date: Wed, 18 Apr 2018 18:01:10 +0200 Subject: [PATCH 4/8] Remove validDelegateSignature --- README.md | 9 --------- contracts/EthereumDIDRegistry.sol | 7 ------- 2 files changed, 16 deletions(-) diff --git a/README.md b/README.md index 1828f9b..b114fed 100644 --- a/README.md +++ b/README.md @@ -98,15 +98,6 @@ Validity is set using amount of seconds from the time that adding the delegate i ### Looking up a delegate You can check if an address is a delegate for an identity using the`validDelegate(address identity, string delegateType, address delegate) returns(bool)` function. This returns true if the address is a valid delegate of the given delegateType. -### Checking a delegate signature -The registry provides a handy function for checking an externally signed signature in your own contracts and validating it is a particular kind of delegate. - -This frees you from adding nonce and signature management code in your own contracts. - -`validDelegateSignature(address identity, string delegateType, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 hash) public returns(address)` - -In your own code you will need to calculate the hash yourself. - ### Adding a delegate An identity can assign multiple delegates to manage signing on their behalf for specific purposes. diff --git a/contracts/EthereumDIDRegistry.sol b/contracts/EthereumDIDRegistry.sol index 93ff031..a65aad4 100644 --- a/contracts/EthereumDIDRegistry.sol +++ b/contracts/EthereumDIDRegistry.sol @@ -54,13 +54,6 @@ contract EthereumDIDRegistry { return (validity >= block.timestamp); } - function validDelegateSignature(address identity, bytes32 delegateType, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 hash) public returns(address) { - address signer = ecrecover(hash, sigV, sigR, sigS); - require(validDelegate(identity, delegateType, signer)); - nonce[signer]++; - return signer; - } - function changeOwner(address identity, address actor, address newOwner) internal onlyOwner(identity, actor) { owners[identity] = newOwner; emit DIDOwnerChanged(identity, newOwner, changed[identity]); From a99b5fa3ef352ba338d15561eb1673d5c7c44f92 Mon Sep 17 00:00:00 2001 From: Joel Torstensson Date: Mon, 7 May 2018 13:07:23 +0200 Subject: [PATCH 5/8] Delegates can now be unrevokable --- contracts/EthereumDIDRegistry.sol | 23 +++++++---- test/ethereum_did_registry.js | 68 +++++++++++++++++++++++++------ 2 files changed, 71 insertions(+), 20 deletions(-) diff --git a/contracts/EthereumDIDRegistry.sol b/contracts/EthereumDIDRegistry.sol index a65aad4..548a3f8 100644 --- a/contracts/EthereumDIDRegistry.sol +++ b/contracts/EthereumDIDRegistry.sol @@ -4,6 +4,7 @@ contract EthereumDIDRegistry { mapping(address => address) public owners; mapping(address => mapping(bytes32 => mapping(address => uint))) public delegates; + mapping(address => mapping(bytes32 => mapping(address => bool))) public unrevokable; mapping(address => uint) public changed; mapping(address => uint) public nonce; @@ -54,6 +55,10 @@ contract EthereumDIDRegistry { return (validity >= block.timestamp); } + function isDelegateUnrevokable(address identity, bytes32 delegateType, address delegate) public view returns(bool) { + return unrevokable[identity][keccak256(delegateType)][delegate]; + } + function changeOwner(address identity, address actor, address newOwner) internal onlyOwner(identity, actor) { owners[identity] = newOwner; emit DIDOwnerChanged(identity, newOwner, changed[identity]); @@ -65,26 +70,30 @@ contract EthereumDIDRegistry { } function changeOwnerSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, address newOwner) public { - bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "changeOwner", newOwner); + bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "changeOwner", newOwner); changeOwner(identity, checkSignature(identity, sigV, sigR, sigS, hash), newOwner); } - function addDelegate(address identity, address actor, bytes32 delegateType, address delegate, uint validity ) internal onlyOwner(identity, actor) { + function addDelegate(address identity, address actor, bytes32 delegateType, address delegate, uint validity, bool _unrevokable) internal onlyOwner(identity, actor) { delegates[identity][keccak256(delegateType)][delegate] = block.timestamp + validity; + if (_unrevokable) { + unrevokable[identity][keccak256(delegateType)][delegate] = true; + } emit DIDDelegateChanged(identity, delegateType, delegate, block.timestamp + validity, changed[identity]); changed[identity] = block.number; } - function addDelegate(address identity, bytes32 delegateType, address delegate, uint validity) public { - addDelegate(identity, msg.sender, delegateType, delegate, validity); + function addDelegate(address identity, bytes32 delegateType, address delegate, uint validity, bool _unrevokable) public { + addDelegate(identity, msg.sender, delegateType, delegate, validity, _unrevokable); } - function addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate, uint validity) public { - bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "addDelegate", delegateType, delegate, validity); - addDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate, validity); + function addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate, uint validity, bool _unrevokable) public { + bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "addDelegate", delegateType, delegate, validity, _unrevokable); + addDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate, validity, _unrevokable); } function revokeDelegate(address identity, address actor, bytes32 delegateType, address delegate) internal onlyOwner(identity, actor) { + require(!unrevokable[identity][keccak256(delegateType)][delegate]); delegates[identity][keccak256(delegateType)][delegate] = 0; emit DIDDelegateChanged(identity, delegateType, delegate, 0, changed[identity]); changed[identity] = block.number; diff --git a/test/ethereum_did_registry.js b/test/ethereum_did_registry.js index 223f41c..8ce7667 100644 --- a/test/ethereum_did_registry.js +++ b/test/ethereum_did_registry.js @@ -3,6 +3,9 @@ var sha3 = require('js-sha3').keccak_256 var EthereumDIDRegistry = artifacts.require("./EthereumDIDRegistry.sol"); var BN = require('bn.js') +const True = '01' +const False = '00' + contract('EthereumDIDRegistry', function(accounts) { let didReg const identity = accounts[0] @@ -12,6 +15,7 @@ contract('EthereumDIDRegistry', function(accounts) { const delegate = accounts[2] const delegate2 = accounts[3] const delegate3 = accounts[4] + const delegate4 = accounts[5] const badboy = accounts[9] const privateKey = Buffer.from('a285ab66393c5fdda46d6fbad9e27fafd438254ab72ad5acb681a0e9f20f5d7b', 'hex') @@ -208,7 +212,7 @@ contract('EthereumDIDRegistry', function(accounts) { let block before(async () => { previousChange = await didReg.changed(identity) - tx = await didReg.addDelegate(identity, 'attestor', delegate3, 86400, {from: delegate2}) + tx = await didReg.addDelegate(identity, 'attestor', delegate3, 86400, false, {from: delegate2}) block = await getBlock(tx.receipt.blockNumber) }) it('validDelegate should be true', async () => { @@ -233,7 +237,7 @@ contract('EthereumDIDRegistry', function(accounts) { describe('as attacker', () => { it('should fail', async () => { try { - const tx = await didReg.addDelegate(identity, 'attestor', badboy, 86400, {from: badboy}) + const tx = await didReg.addDelegate(identity, 'attestor', badboy, 86400, false, {from: badboy}) assert.equal(tx, undefined, 'this should not happen') } catch (error) { assert.equal(error.message, 'VM Exception while processing transaction: revert') @@ -243,29 +247,55 @@ contract('EthereumDIDRegistry', function(accounts) { }) describe('using signature', () => { describe('as current owner', () => { - let tx + let tx1 + let block1 + let previousChange1 + let tx2 + let block2 + let previousChange2 before(async () => { - previousChange = await didReg.changed(signerAddress) - const sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('addDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate) + leftPad(new BN(86400).toString(16))) - tx = await didReg.addDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate, 86400, {from: badboy}) - block = await getBlock(tx.receipt.blockNumber) + // revokable delegate + previousChange1 = await didReg.changed(signerAddress) + let sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('addDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate) + leftPad(new BN(86400).toString(16)) + False) + tx1 = await didReg.addDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate, 86400, false, {from: badboy}) + block1 = await getBlock(tx1.receipt.blockNumber) + // unrevokable delegate4 + previousChange2 = await didReg.changed(signerAddress) + sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('addDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate4) + leftPad(new BN(86400).toString(16)) + True) + tx2 = await didReg.addDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate4, 86400, true, {from: badboy}) + block2 = await getBlock(tx2.receipt.blockNumber) }) it('validDelegate should be true', async () => { - const valid = await didReg.validDelegate(signerAddress, 'attestor', delegate) + let valid = await didReg.validDelegate(signerAddress, 'attestor', delegate) assert.equal(valid, true, 'assigned delegate correctly') + let unrevokable = await didReg.unrevokable.call(signerAddress, 'attestor', delegate) + assert.equal(unrevokable, false, 'delegate should be not unrevokable') + // unrevokable delegate4 + valid = await didReg.validDelegate(signerAddress, 'attestor', delegate4) + assert.equal(valid, true, 'assigned delegate correctly') + unrevokable = await didReg.isDelegateUnrevokable(signerAddress, 'attestor', delegate4) + assert.equal(unrevokable, true, 'delegate4 should be unrevokable') }) it('should sets changed to transaction block', async () => { const latest = await didReg.changed(signerAddress) - assert.equal(latest, tx.receipt.blockNumber) + assert.equal(latest.toNumber(), tx2.receipt.blockNumber) }) it('should create DIDDelegateChanged event', () => { - const event = tx.logs[0] + let event = tx1.logs[0] assert.equal(event.event, 'DIDDelegateChanged') assert.equal(event.args.identity, signerAddress) assert.equal(bytes32ToString(event.args.delegateType), 'attestor') assert.equal(event.args.delegate, delegate) - assert.equal(event.args.validTo.toNumber(), block.timestamp + 86400) - assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) + assert.equal(event.args.validTo.toNumber(), block1.timestamp + 86400) + assert.equal(event.args.previousChange.toNumber(), previousChange1.toNumber()) + // unrevokable delegate4 + event = tx2.logs[0] + assert.equal(event.event, 'DIDDelegateChanged') + assert.equal(event.args.identity, signerAddress) + assert.equal(bytes32ToString(event.args.delegateType), 'attestor') + assert.equal(event.args.delegate, delegate4) + assert.equal(event.args.validTo.toNumber(), block1.timestamp + 86400) + assert.equal(event.args.previousChange.toNumber(), previousChange2.toNumber()) }) }) }) @@ -303,7 +333,6 @@ contract('EthereumDIDRegistry', function(accounts) { assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) }) }) - describe('as attacker', () => { it('should fail', async () => { try { @@ -342,6 +371,19 @@ contract('EthereumDIDRegistry', function(accounts) { assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) }) }) + describe('unrevokable delegate should not be revokable', async () => { + it('should throw if trying to revoke delegate4', async () => { + let didThrow = false + const sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('revokeDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate4)) + try { + await didReg.revokeDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate4, {from: badboy}) + } catch (e) { + didThrow = true + } + assert.isTrue(didThrow, 'should have thrown') + }) + }) + }) }) From 9e29ea278b14451f1d96c41ab0144d977323ffdf Mon Sep 17 00:00:00 2001 From: Joel Torstensson Date: Thu, 10 May 2018 12:17:59 +0200 Subject: [PATCH 6/8] An unrevokable delegate can now be revokable in the future --- contracts/EthereumDIDRegistry.sol | 24 ++++++++++++------------ test/ethereum_did_registry.js | 20 ++++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/contracts/EthereumDIDRegistry.sol b/contracts/EthereumDIDRegistry.sol index 548a3f8..8f76dba 100644 --- a/contracts/EthereumDIDRegistry.sol +++ b/contracts/EthereumDIDRegistry.sol @@ -4,7 +4,7 @@ contract EthereumDIDRegistry { mapping(address => address) public owners; mapping(address => mapping(bytes32 => mapping(address => uint))) public delegates; - mapping(address => mapping(bytes32 => mapping(address => bool))) public unrevokable; + mapping(address => mapping(bytes32 => mapping(address => uint))) public unrevokableUntil; mapping(address => uint) public changed; mapping(address => uint) public nonce; @@ -55,8 +55,8 @@ contract EthereumDIDRegistry { return (validity >= block.timestamp); } - function isDelegateUnrevokable(address identity, bytes32 delegateType, address delegate) public view returns(bool) { - return unrevokable[identity][keccak256(delegateType)][delegate]; + function isDelegateRevokable(address identity, bytes32 delegateType, address delegate) public view returns(bool) { + return unrevokableUntil[identity][keccak256(delegateType)][delegate] < block.timestamp; } function changeOwner(address identity, address actor, address newOwner) internal onlyOwner(identity, actor) { @@ -74,26 +74,26 @@ contract EthereumDIDRegistry { changeOwner(identity, checkSignature(identity, sigV, sigR, sigS, hash), newOwner); } - function addDelegate(address identity, address actor, bytes32 delegateType, address delegate, uint validity, bool _unrevokable) internal onlyOwner(identity, actor) { + function addDelegate(address identity, address actor, bytes32 delegateType, address delegate, uint validity, bool revokable) internal onlyOwner(identity, actor) { delegates[identity][keccak256(delegateType)][delegate] = block.timestamp + validity; - if (_unrevokable) { - unrevokable[identity][keccak256(delegateType)][delegate] = true; + if (!revokable) { + unrevokableUntil[identity][keccak256(delegateType)][delegate] = block.timestamp + validity; } emit DIDDelegateChanged(identity, delegateType, delegate, block.timestamp + validity, changed[identity]); changed[identity] = block.number; } - function addDelegate(address identity, bytes32 delegateType, address delegate, uint validity, bool _unrevokable) public { - addDelegate(identity, msg.sender, delegateType, delegate, validity, _unrevokable); + function addDelegate(address identity, bytes32 delegateType, address delegate, uint validity, bool revokable) public { + addDelegate(identity, msg.sender, delegateType, delegate, validity, revokable); } - function addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate, uint validity, bool _unrevokable) public { - bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "addDelegate", delegateType, delegate, validity, _unrevokable); - addDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate, validity, _unrevokable); + function addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate, uint validity, bool revokable) public { + bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "addDelegate", delegateType, delegate, validity, revokable); + addDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate, validity, revokable); } function revokeDelegate(address identity, address actor, bytes32 delegateType, address delegate) internal onlyOwner(identity, actor) { - require(!unrevokable[identity][keccak256(delegateType)][delegate]); + require(unrevokableUntil[identity][keccak256(delegateType)][delegate] < block.timestamp); delegates[identity][keccak256(delegateType)][delegate] = 0; emit DIDDelegateChanged(identity, delegateType, delegate, 0, changed[identity]); changed[identity] = block.number; diff --git a/test/ethereum_did_registry.js b/test/ethereum_did_registry.js index 8ce7667..ca99305 100644 --- a/test/ethereum_did_registry.js +++ b/test/ethereum_did_registry.js @@ -212,7 +212,7 @@ contract('EthereumDIDRegistry', function(accounts) { let block before(async () => { previousChange = await didReg.changed(identity) - tx = await didReg.addDelegate(identity, 'attestor', delegate3, 86400, false, {from: delegate2}) + tx = await didReg.addDelegate(identity, 'attestor', delegate3, 86400, true, {from: delegate2}) block = await getBlock(tx.receipt.blockNumber) }) it('validDelegate should be true', async () => { @@ -237,7 +237,7 @@ contract('EthereumDIDRegistry', function(accounts) { describe('as attacker', () => { it('should fail', async () => { try { - const tx = await didReg.addDelegate(identity, 'attestor', badboy, 86400, false, {from: badboy}) + const tx = await didReg.addDelegate(identity, 'attestor', badboy, 86400, true, {from: badboy}) assert.equal(tx, undefined, 'this should not happen') } catch (error) { assert.equal(error.message, 'VM Exception while processing transaction: revert') @@ -256,25 +256,25 @@ contract('EthereumDIDRegistry', function(accounts) { before(async () => { // revokable delegate previousChange1 = await didReg.changed(signerAddress) - let sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('addDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate) + leftPad(new BN(86400).toString(16)) + False) - tx1 = await didReg.addDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate, 86400, false, {from: badboy}) + let sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('addDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate) + leftPad(new BN(86400).toString(16)) + True) + tx1 = await didReg.addDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate, 86400, true, {from: badboy}) block1 = await getBlock(tx1.receipt.blockNumber) // unrevokable delegate4 previousChange2 = await didReg.changed(signerAddress) - sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('addDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate4) + leftPad(new BN(86400).toString(16)) + True) - tx2 = await didReg.addDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate4, 86400, true, {from: badboy}) + sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('addDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate4) + leftPad(new BN(86400).toString(16)) + False) + tx2 = await didReg.addDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate4, 86400, false, {from: badboy}) block2 = await getBlock(tx2.receipt.blockNumber) }) it('validDelegate should be true', async () => { let valid = await didReg.validDelegate(signerAddress, 'attestor', delegate) assert.equal(valid, true, 'assigned delegate correctly') - let unrevokable = await didReg.unrevokable.call(signerAddress, 'attestor', delegate) - assert.equal(unrevokable, false, 'delegate should be not unrevokable') + let revokable = await didReg.isDelegateRevokable(signerAddress, 'attestor', delegate) + assert.equal(revokable, true, 'delegate should be revokable') // unrevokable delegate4 valid = await didReg.validDelegate(signerAddress, 'attestor', delegate4) assert.equal(valid, true, 'assigned delegate correctly') - unrevokable = await didReg.isDelegateUnrevokable(signerAddress, 'attestor', delegate4) - assert.equal(unrevokable, true, 'delegate4 should be unrevokable') + revokable = await didReg.isDelegateRevokable(signerAddress, 'attestor', delegate4) + assert.equal(revokable, false, 'delegate4 should be unrevokable') }) it('should sets changed to transaction block', async () => { const latest = await didReg.changed(signerAddress) From f8d80ffd3e71bc96e8cc19d38822dcc8f7682b99 Mon Sep 17 00:00:00 2001 From: Joel Torstensson Date: Wed, 13 Jun 2018 10:42:00 +0200 Subject: [PATCH 7/8] Revoked delegates are now saved. all delegates are revokable again --- contracts/EthereumDIDRegistry.sol | 33 +++++++------------- test/ethereum_did_registry.js | 52 +++++-------------------------- 2 files changed, 20 insertions(+), 65 deletions(-) diff --git a/contracts/EthereumDIDRegistry.sol b/contracts/EthereumDIDRegistry.sol index 8f76dba..b253672 100644 --- a/contracts/EthereumDIDRegistry.sol +++ b/contracts/EthereumDIDRegistry.sol @@ -4,7 +4,6 @@ contract EthereumDIDRegistry { mapping(address => address) public owners; mapping(address => mapping(bytes32 => mapping(address => uint))) public delegates; - mapping(address => mapping(bytes32 => mapping(address => uint))) public unrevokableUntil; mapping(address => uint) public changed; mapping(address => uint) public nonce; @@ -52,11 +51,7 @@ contract EthereumDIDRegistry { function validDelegate(address identity, bytes32 delegateType, address delegate) public view returns(bool) { uint validity = delegates[identity][keccak256(delegateType)][delegate]; - return (validity >= block.timestamp); - } - - function isDelegateRevokable(address identity, bytes32 delegateType, address delegate) public view returns(bool) { - return unrevokableUntil[identity][keccak256(delegateType)][delegate] < block.timestamp; + return (validity > now); } function changeOwner(address identity, address actor, address newOwner) internal onlyOwner(identity, actor) { @@ -74,28 +69,24 @@ contract EthereumDIDRegistry { changeOwner(identity, checkSignature(identity, sigV, sigR, sigS, hash), newOwner); } - function addDelegate(address identity, address actor, bytes32 delegateType, address delegate, uint validity, bool revokable) internal onlyOwner(identity, actor) { - delegates[identity][keccak256(delegateType)][delegate] = block.timestamp + validity; - if (!revokable) { - unrevokableUntil[identity][keccak256(delegateType)][delegate] = block.timestamp + validity; - } - emit DIDDelegateChanged(identity, delegateType, delegate, block.timestamp + validity, changed[identity]); + function addDelegate(address identity, address actor, bytes32 delegateType, address delegate, uint validity) internal onlyOwner(identity, actor) { + delegates[identity][keccak256(delegateType)][delegate] = now + validity; + emit DIDDelegateChanged(identity, delegateType, delegate, now + validity, changed[identity]); changed[identity] = block.number; } - function addDelegate(address identity, bytes32 delegateType, address delegate, uint validity, bool revokable) public { - addDelegate(identity, msg.sender, delegateType, delegate, validity, revokable); + function addDelegate(address identity, bytes32 delegateType, address delegate, uint validity) public { + addDelegate(identity, msg.sender, delegateType, delegate, validity); } - function addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate, uint validity, bool revokable) public { - bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "addDelegate", delegateType, delegate, validity, revokable); - addDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate, validity, revokable); + function addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate, uint validity) public { + bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, "addDelegate", delegateType, delegate, validity); + addDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate, validity); } function revokeDelegate(address identity, address actor, bytes32 delegateType, address delegate) internal onlyOwner(identity, actor) { - require(unrevokableUntil[identity][keccak256(delegateType)][delegate] < block.timestamp); - delegates[identity][keccak256(delegateType)][delegate] = 0; - emit DIDDelegateChanged(identity, delegateType, delegate, 0, changed[identity]); + delegates[identity][keccak256(delegateType)][delegate] = now; + emit DIDDelegateChanged(identity, delegateType, delegate, now, changed[identity]); changed[identity] = block.number; } @@ -109,7 +100,7 @@ contract EthereumDIDRegistry { } function setAttribute(address identity, address actor, bytes32 name, bytes value, uint validity ) internal onlyOwner(identity, actor) { - emit DIDAttributeChanged(identity, name, value, block.timestamp + validity, changed[identity]); + emit DIDAttributeChanged(identity, name, value, now + validity, changed[identity]); changed[identity] = block.number; } diff --git a/test/ethereum_did_registry.js b/test/ethereum_did_registry.js index ca99305..b277f18 100644 --- a/test/ethereum_did_registry.js +++ b/test/ethereum_did_registry.js @@ -3,8 +3,6 @@ var sha3 = require('js-sha3').keccak_256 var EthereumDIDRegistry = artifacts.require("./EthereumDIDRegistry.sol"); var BN = require('bn.js') -const True = '01' -const False = '00' contract('EthereumDIDRegistry', function(accounts) { let didReg @@ -212,7 +210,7 @@ contract('EthereumDIDRegistry', function(accounts) { let block before(async () => { previousChange = await didReg.changed(identity) - tx = await didReg.addDelegate(identity, 'attestor', delegate3, 86400, true, {from: delegate2}) + tx = await didReg.addDelegate(identity, 'attestor', delegate3, 86400, {from: delegate2}) block = await getBlock(tx.receipt.blockNumber) }) it('validDelegate should be true', async () => { @@ -237,7 +235,7 @@ contract('EthereumDIDRegistry', function(accounts) { describe('as attacker', () => { it('should fail', async () => { try { - const tx = await didReg.addDelegate(identity, 'attestor', badboy, 86400, true, {from: badboy}) + const tx = await didReg.addDelegate(identity, 'attestor', badboy, 86400, {from: badboy}) assert.equal(tx, undefined, 'this should not happen') } catch (error) { assert.equal(error.message, 'VM Exception while processing transaction: revert') @@ -254,31 +252,18 @@ contract('EthereumDIDRegistry', function(accounts) { let block2 let previousChange2 before(async () => { - // revokable delegate previousChange1 = await didReg.changed(signerAddress) - let sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('addDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate) + leftPad(new BN(86400).toString(16)) + True) - tx1 = await didReg.addDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate, 86400, true, {from: badboy}) + let sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('addDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate) + leftPad(new BN(86400).toString(16))) + tx1 = await didReg.addDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate, 86400, {from: badboy}) block1 = await getBlock(tx1.receipt.blockNumber) - // unrevokable delegate4 - previousChange2 = await didReg.changed(signerAddress) - sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('addDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate4) + leftPad(new BN(86400).toString(16)) + False) - tx2 = await didReg.addDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate4, 86400, false, {from: badboy}) - block2 = await getBlock(tx2.receipt.blockNumber) }) it('validDelegate should be true', async () => { let valid = await didReg.validDelegate(signerAddress, 'attestor', delegate) assert.equal(valid, true, 'assigned delegate correctly') - let revokable = await didReg.isDelegateRevokable(signerAddress, 'attestor', delegate) - assert.equal(revokable, true, 'delegate should be revokable') - // unrevokable delegate4 - valid = await didReg.validDelegate(signerAddress, 'attestor', delegate4) - assert.equal(valid, true, 'assigned delegate correctly') - revokable = await didReg.isDelegateRevokable(signerAddress, 'attestor', delegate4) - assert.equal(revokable, false, 'delegate4 should be unrevokable') }) it('should sets changed to transaction block', async () => { const latest = await didReg.changed(signerAddress) - assert.equal(latest.toNumber(), tx2.receipt.blockNumber) + assert.equal(latest.toNumber(), tx1.receipt.blockNumber) }) it('should create DIDDelegateChanged event', () => { let event = tx1.logs[0] @@ -288,14 +273,6 @@ contract('EthereumDIDRegistry', function(accounts) { assert.equal(event.args.delegate, delegate) assert.equal(event.args.validTo.toNumber(), block1.timestamp + 86400) assert.equal(event.args.previousChange.toNumber(), previousChange1.toNumber()) - // unrevokable delegate4 - event = tx2.logs[0] - assert.equal(event.event, 'DIDDelegateChanged') - assert.equal(event.args.identity, signerAddress) - assert.equal(bytes32ToString(event.args.delegateType), 'attestor') - assert.equal(event.args.delegate, delegate4) - assert.equal(event.args.validTo.toNumber(), block1.timestamp + 86400) - assert.equal(event.args.previousChange.toNumber(), previousChange2.toNumber()) }) }) }) @@ -329,7 +306,7 @@ contract('EthereumDIDRegistry', function(accounts) { assert.equal(event.args.identity, identity) assert.equal(bytes32ToString(event.args.delegateType), 'attestor') assert.equal(event.args.delegate, delegate3) - assert.equal(event.args.validTo.toNumber(), 0) + assert.isBelow(event.args.validTo.toNumber(), Math.floor(Date.now()/1000) + 1) assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) }) }) @@ -353,7 +330,7 @@ contract('EthereumDIDRegistry', function(accounts) { tx = await didReg.revokeDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate, {from: badboy}) block = await getBlock(tx.receipt.blockNumber) }) - it('validDelegate should be true', async () => { + it('validDelegate should be false', async () => { const valid = await didReg.validDelegate(signerAddress, 'attestor', delegate) assert.equal(valid, false, 'revoked delegate correctly') }) @@ -367,23 +344,10 @@ contract('EthereumDIDRegistry', function(accounts) { assert.equal(event.args.identity, signerAddress) assert.equal(bytes32ToString(event.args.delegateType), 'attestor') assert.equal(event.args.delegate, delegate) - assert.equal(event.args.validTo.toNumber(), 0) + assert.isBelow(event.args.validTo.toNumber(), Math.floor(Date.now()/1000) + 1) assert.equal(event.args.previousChange.toNumber(), previousChange.toNumber()) }) }) - describe('unrevokable delegate should not be revokable', async () => { - it('should throw if trying to revoke delegate4', async () => { - let didThrow = false - const sig = await signData(signerAddress, signerAddress2, privateKey2, Buffer.from('revokeDelegate').toString('hex') + stringToBytes32('attestor') + stripHexPrefix(delegate4)) - try { - await didReg.revokeDelegateSigned(signerAddress, sig.v, sig.r, sig.s, 'attestor', delegate4, {from: badboy}) - } catch (e) { - didThrow = true - } - assert.isTrue(didThrow, 'should have thrown') - }) - }) - }) }) From fb53b4e744ed3a9bf8fa3f9c1ce4c43de5de2ebb Mon Sep 17 00:00:00 2001 From: Pelle Braendgaard Date: Thu, 14 Jun 2018 19:21:56 -0600 Subject: [PATCH 8/8] Bump to version 0.0.3 --- README.md | 8 +- build/contracts/EthereumDIDRegistry.json | 28818 +++++++++++++-------- package.json | 2 +- 3 files changed, 18586 insertions(+), 10242 deletions(-) diff --git a/README.md b/README.md index 9f9f805..2602a3c 100644 --- a/README.md +++ b/README.md @@ -40,10 +40,10 @@ let didReg = DidReg.at(DidRegistryContract.networks[networkId].address) ## Contract Deployments |Network|Address| | --|--| -|Mainnet (id: 1)|[0x160c5ce58e2cc4fe7cc45a9dd569a10083b2a275](https://etherscan.io/address/0x160c5ce58e2cc4fe7cc45a9dd569a10083b2a275)| -|Ropsten (id: 3)|[0x160c5ce58e2cc4fe7cc45a9dd569a10083b2a275](https://ropsten.etherscan.io/address/0x160c5ce58e2cc4fe7cc45a9dd569a10083b2a275)| -|Rinkeby (id: 4)|[0x160c5ce58e2cc4fe7cc45a9dd569a10083b2a275](https://rinkeby.etherscan.io/address/0x160c5ce58e2cc4fe7cc45a9dd569a10083b2a275)| -|Kovan (id: 42)|[0x160c5ce58e2cc4fe7cc45a9dd569a10083b2a275](https://kovan.etherscan.io/address/0x160c5ce58e2cc4fe7cc45a9dd569a10083b2a275)| +|Mainnet (id: 1)|[0xdca7ef03e98e0dc2b855be647c39abe984fcf21b](https://etherscan.io/address/0xdca7ef03e98e0dc2b855be647c39abe984fcf21b)| +|Ropsten (id: 3)|[0xdca7ef03e98e0dc2b855be647c39abe984fcf21b](https://ropsten.etherscan.io/address/0xdca7ef03e98e0dc2b855be647c39abe984fcf21b)| +|Rinkeby (id: 4)|[0xdca7ef03e98e0dc2b855be647c39abe984fcf21b](https://rinkeby.etherscan.io/address/0xdca7ef03e98e0dc2b855be647c39abe984fcf21b)| +|Kovan (id: 42)|[0xdca7ef03e98e0dc2b855be647c39abe984fcf21b](https://kovan.etherscan.io/address/0xdca7ef03e98e0dc2b855be647c39abe984fcf21b)| ## On-chain vs Off-chain For on-chain interactions Ethereum has a built in account abstraction that can be used regardless of whether the account is a smart contract or a key pair. Any transaction has a `msg.sender` as the verified send of the transaction. diff --git a/build/contracts/EthereumDIDRegistry.json b/build/contracts/EthereumDIDRegistry.json index bd1a7ac..33e8782 100644 --- a/build/contracts/EthereumDIDRegistry.json +++ b/build/contracts/EthereumDIDRegistry.json @@ -85,12 +85,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, { "anonymous": false, "inputs": [ @@ -124,7 +118,7 @@ { "indexed": false, "name": "delegateType", - "type": "string" + "type": "bytes32" }, { "indexed": false, @@ -156,7 +150,7 @@ { "indexed": false, "name": "name", - "type": "string" + "type": "bytes32" }, { "indexed": false, @@ -205,7 +199,7 @@ }, { "name": "delegateType", - "type": "string" + "type": "bytes32" }, { "name": "delegate", @@ -223,45 +217,6 @@ "stateMutability": "view", "type": "function" }, - { - "constant": false, - "inputs": [ - { - "name": "identity", - "type": "address" - }, - { - "name": "delegateType", - "type": "string" - }, - { - "name": "sigV", - "type": "uint8" - }, - { - "name": "sigR", - "type": "bytes32" - }, - { - "name": "sigS", - "type": "bytes32" - }, - { - "name": "hash", - "type": "bytes32" - } - ], - "name": "validDelegateSignature", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, { "constant": false, "inputs": [ @@ -319,7 +274,7 @@ }, { "name": "delegateType", - "type": "string" + "type": "bytes32" }, { "name": "delegate", @@ -357,7 +312,7 @@ }, { "name": "delegateType", - "type": "string" + "type": "bytes32" }, { "name": "delegate", @@ -383,7 +338,7 @@ }, { "name": "delegateType", - "type": "string" + "type": "bytes32" }, { "name": "delegate", @@ -417,7 +372,7 @@ }, { "name": "delegateType", - "type": "string" + "type": "bytes32" }, { "name": "delegate", @@ -439,7 +394,7 @@ }, { "name": "name", - "type": "string" + "type": "bytes32" }, { "name": "value", @@ -477,7 +432,7 @@ }, { "name": "name", - "type": "string" + "type": "bytes32" }, { "name": "value", @@ -503,7 +458,7 @@ }, { "name": "name", - "type": "string" + "type": "bytes32" }, { "name": "value", @@ -537,7 +492,7 @@ }, { "name": "name", - "type": "string" + "type": "bytes32" }, { "name": "value", @@ -551,11013 +506,19402 @@ "type": "function" } ], - "bytecode": "0x6060604052341561000f57600080fd5b6128e28061001e6000396000f3006060604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063022914a7146100f6578063057339891461016f5780630d44625b146102375780631ecc05f2146102b0578063240cf1fa146103635780633c71b7b6146103e15780636a833a6c146104d057806370ae92d21461059a5780637ab528c9146105e75780637feda59a146106825780638733d4e8146107415780639a94ab9c146107ba578063a641d28e1461085e578063d25a12121461091f578063f00d4b5d14610a04578063f3f2e65614610a5c578063f96d0f9f14610b4a575b600080fd5b341561010157600080fd5b61012d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b97565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561017a57600080fd5b610235600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091905050610bca565b005b341561024257600080fd5b61029a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bdd565b6040518082815260200191505060405180910390f35b34156102bb57600080fd5b610349600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c0f565b604051808215151515815260200191505060405180910390f35b341561036e57600080fd5b6103df600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d1a565b005b34156103ec57600080fd5b61048e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035600019169060200190919080356000191690602001909190803560001916906020019091905050610f69565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104db57600080fd5b610598600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611068565b005b34156105a557600080fd5b6105d1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611318565b6040518082815260200191505060405180910390f35b34156105f257600080fd5b610680600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611330565b005b341561068d57600080fd5b61073f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611341565b005b341561074c57600080fd5b610778600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611352565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107c557600080fd5b61085c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506113e8565b005b341561086957600080fd5b61091d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113fb565b005b341561092a57600080fd5b610a02600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506116a1565b005b3415610a0f57600080fd5b610a5a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611951565b005b3415610a6757600080fd5b610b48600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091905050611960565b005b3415610b5557600080fd5b610b81600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611c1a565b6040518082815260200191505060405180910390f35b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bd78433858585611c32565b50505050565b600160205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856040518082805190602001908083835b602083101515610c895780518252602082019150602081019050602083039250610c64565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050428110159150509392505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f0100000000000000000000000000000000000000000000000000000000000000023060036000610d728b611352565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054898660405180877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f6368616e67654f776e6572000000000000000000000000000000000000000000815250600b018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401965050505050505060405180910390209050610f6186610f5b8888888887611e34565b84611f5e565b505050505050565b600080600183878787604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515610fea57600080fd5b5050602060405103519050611000888883610c0f565b151561100b57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550809150509695505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360006110c08d611352565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b88888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f61646444656c6567617465000000000000000000000000000000000000000000815250600b0184805190602001908083835b6020831015156112785780518252602082019150602081019050602083039250611253565b6001836020036101000a0380198251168184511680821785525050505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001985050505050505050506040518091039020905061130e886113068a8a8a8a87611e34565b86868661212b565b5050505050505050565b60036020528060005260406000206000915090505481565b61133c833384846123f2565b505050565b61134d833384846126b6565b505050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff161415156113de578091506113e2565b8291505b50919050565b6113f5843385858561212b565b50505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360006114538c611352565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7265766f6b6544656c6567617465000000000000000000000000000000000000815250600e0183805190602001908083835b60208310151561160a57805182526020820191506020810190506020830392506115e5565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140197505050505050505060405180910390209050611698876116918989898987611e34565b85856123f2565b50505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7265766f6b654174747269627574650000000000000000000000000000000000815250600f0183805190602001908083835b6020831015156118a85780518252602082019150602081019050602083039250611883565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831015156118fb57805182526020820191506020810190506020830392506118d6565b6001836020036101000a03801982511681845116808217855250505050505090500197505050505050505060405180910390209050611948876119418989898987611e34565b85856126b6565b50505050505050565b61195c823383611f5e565b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b88888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7365744174747269627574650000000000000000000000000000000000000000815250600c0184805190602001908083835b602083101515611b685780518252602082019150602081019050602083039250611b43565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b602083101515611bbb5780518252602082019150602081019050602083039250611b96565b6001836020036101000a0380198251168184511680821785525050505050509050018281526020019850505050505050505060405180910390209050611c1088611c088a8a8a8a87611e34565b868686611c32565b5050505050505050565b60026020528060005260406000206000915090505481565b8484611c3d82611352565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611c7657600080fd5b8673ffffffffffffffffffffffffffffffffffffffff167fe3cf3321991c9bb5c44a59a2cd69c096405984c1293b5e247a0430f1b28d887b8686864201600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015611d43578082015181840152602081019050611d28565b50505050905090810190601f168015611d705780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b83811015611da9578082015181840152602081019050611d8e565b50505050905090810190601f168015611dd65780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b600080600183878787604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515611eb557600080fd5b5050602060405103519050611ec987611352565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611f0257600080fd5b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508091505095945050505050565b8282611f6982611352565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611fa257600080fd5b826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f38a5a6e68f30ed1ab45860a4afb34bcb2fc00f22ca462d249b8a8d40cda6f7a384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a243600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b848461213682611352565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561216f57600080fd5b824201600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876040518082805190602001908083835b6020831015156121e957805182526020820191506020810190506020830392506121c4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff167f5697afae5a61b1e4f36be1b0a0309dc0c28e6e0f5527d2c0a68679deb0d21bf98686864201600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561236857808201518184015260208101905061234d565b50505050905090810190601f1680156123955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b83836123fd82611352565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561243657600080fd5b6000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866040518082805190602001908083835b6020831015156124af578051825260208201915060208101905060208303925061248a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167f5697afae5a61b1e4f36be1b0a0309dc0c28e6e0f5527d2c0a68679deb0d21bf985856000600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561262d578082015181840152602081019050612612565b50505050905090810190601f16801561265a5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b83836126c182611352565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156126fa57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff167fe3cf3321991c9bb5c44a59a2cd69c096405984c1293b5e247a0430f1b28d887b85856000600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156127c65780820151818401526020810190506127ab565b50505050905090810190601f1680156127f35780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b8381101561282c578082015181840152602081019050612811565b50505050905090810190601f1680156128595780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050505600a165627a7a723058203f7b8ca314a4654a95ebbd14d79d2d8a47ea0f619772ae2760d5100d5b3c79850029", - "deployedBytecode": "0x6060604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063022914a7146100f6578063057339891461016f5780630d44625b146102375780631ecc05f2146102b0578063240cf1fa146103635780633c71b7b6146103e15780636a833a6c146104d057806370ae92d21461059a5780637ab528c9146105e75780637feda59a146106825780638733d4e8146107415780639a94ab9c146107ba578063a641d28e1461085e578063d25a12121461091f578063f00d4b5d14610a04578063f3f2e65614610a5c578063f96d0f9f14610b4a575b600080fd5b341561010157600080fd5b61012d600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610b97565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561017a57600080fd5b610235600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091905050610bca565b005b341561024257600080fd5b61029a600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610bdd565b6040518082815260200191505060405180910390f35b34156102bb57600080fd5b610349600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c0f565b604051808215151515815260200191505060405180910390f35b341561036e57600080fd5b6103df600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610d1a565b005b34156103ec57600080fd5b61048e600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035600019169060200190919080356000191690602001909190803560001916906020019091905050610f69565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156104db57600080fd5b610598600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050611068565b005b34156105a557600080fd5b6105d1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611318565b6040518082815260200191505060405180910390f35b34156105f257600080fd5b610680600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611330565b005b341561068d57600080fd5b61073f600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611341565b005b341561074c57600080fd5b610778600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611352565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156107c557600080fd5b61085c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506113e8565b005b341561086957600080fd5b61091d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506113fb565b005b341561092a57600080fd5b610a02600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919050506116a1565b005b3415610a0f57600080fd5b610a5a600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611951565b005b3415610a6757600080fd5b610b48600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091908035600019169060200190919080356000191690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091908035906020019091905050611960565b005b3415610b5557600080fd5b610b81600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611c1a565b6040518082815260200191505060405180910390f35b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610bd78433858585611c32565b50505050565b600160205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856040518082805190602001908083835b602083101515610c895780518252602082019150602081019050602083039250610c64565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050428110159150509392505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f0100000000000000000000000000000000000000000000000000000000000000023060036000610d728b611352565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054898660405180877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f6368616e67654f776e6572000000000000000000000000000000000000000000815250600b018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401965050505050505060405180910390209050610f6186610f5b8888888887611e34565b84611f5e565b505050505050565b600080600183878787604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515610fea57600080fd5b5050602060405103519050611000888883610c0f565b151561100b57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008154809291906001019190505550809150509695505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360006110c08d611352565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b88888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f61646444656c6567617465000000000000000000000000000000000000000000815250600b0184805190602001908083835b6020831015156112785780518252602082019150602081019050602083039250611253565b6001836020036101000a0380198251168184511680821785525050505050509050018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001985050505050505050506040518091039020905061130e886113068a8a8a8a87611e34565b86868661212b565b5050505050505050565b60036020528060005260406000206000915090505481565b61133c833384846123f2565b505050565b61134d833384846126b6565b505050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff161415156113de578091506113e2565b8291505b50919050565b6113f5843385858561212b565b50505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360006114538c611352565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7265766f6b6544656c6567617465000000000000000000000000000000000000815250600e0183805190602001908083835b60208310151561160a57805182526020820191506020810190506020830392506115e5565b6001836020036101000a0380198251168184511680821785525050505050509050018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140197505050505050505060405180910390209050611698876116918989898987611e34565b85856123f2565b50505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7265766f6b654174747269627574650000000000000000000000000000000000815250600f0183805190602001908083835b6020831015156118a85780518252602082019150602081019050602083039250611883565b6001836020036101000a03801982511681845116808217855250505050505090500182805190602001908083835b6020831015156118fb57805182526020820191506020810190506020830392506118d6565b6001836020036101000a03801982511681845116808217855250505050505090500197505050505050505060405180910390209050611948876119418989898987611e34565b85856126b6565b50505050505050565b61195c823383611f5e565b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b88888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7365744174747269627574650000000000000000000000000000000000000000815250600c0184805190602001908083835b602083101515611b685780518252602082019150602081019050602083039250611b43565b6001836020036101000a03801982511681845116808217855250505050505090500183805190602001908083835b602083101515611bbb5780518252602082019150602081019050602083039250611b96565b6001836020036101000a0380198251168184511680821785525050505050509050018281526020019850505050505050505060405180910390209050611c1088611c088a8a8a8a87611e34565b868686611c32565b5050505050505050565b60026020528060005260406000206000915090505481565b8484611c3d82611352565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611c7657600080fd5b8673ffffffffffffffffffffffffffffffffffffffff167fe3cf3321991c9bb5c44a59a2cd69c096405984c1293b5e247a0430f1b28d887b8686864201600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b83811015611d43578082015181840152602081019050611d28565b50505050905090810190601f168015611d705780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b83811015611da9578082015181840152602081019050611d8e565b50505050905090810190601f168015611dd65780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b600080600183878787604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f11515611eb557600080fd5b5050602060405103519050611ec987611352565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611f0257600080fd5b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508091505095945050505050565b8282611f6982611352565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611fa257600080fd5b826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f38a5a6e68f30ed1ab45860a4afb34bcb2fc00f22ca462d249b8a8d40cda6f7a384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a243600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b848461213682611352565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561216f57600080fd5b824201600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876040518082805190602001908083835b6020831015156121e957805182526020820191506020810190506020830392506121c4565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff167f5697afae5a61b1e4f36be1b0a0309dc0c28e6e0f5527d2c0a68679deb0d21bf98686864201600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561236857808201518184015260208101905061234d565b50505050905090810190601f1680156123955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b83836123fd82611352565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561243657600080fd5b6000600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866040518082805190602001908083835b6020831015156124af578051825260208201915060208101905060208303925061248a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390206000191660001916815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167f5697afae5a61b1e4f36be1b0a0309dc0c28e6e0f5527d2c0a68679deb0d21bf985856000600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180806020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001848152602001838152602001828103825286818151815260200191508051906020019080838360005b8381101561262d578082015181840152602081019050612612565b50505050905090810190601f16801561265a5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b83836126c182611352565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156126fa57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff167fe3cf3321991c9bb5c44a59a2cd69c096405984c1293b5e247a0430f1b28d887b85856000600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808060200180602001858152602001848152602001838103835287818151815260200191508051906020019080838360005b838110156127c65780820151818401526020810190506127ab565b50505050905090810190601f1680156127f35780820380516001836020036101000a031916815260200191505b50838103825286818151815260200191508051906020019080838360005b8381101561282c578082015181840152602081019050612811565b50505050905090810190601f1680156128595780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050505600a165627a7a723058203f7b8ca314a4654a95ebbd14d79d2d8a47ea0f619772ae2760d5100d5b3c79850029", - "sourceMap": "25:5908:0:-;;;788:43;;;;;;;;25:5908;;;;;;", - "deployedSourceMap": "25:5908:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4686:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;104:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1305:229;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2222:327;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1538:310;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3121:411;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;232:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3859:159;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5452:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;835:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2939:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4022:385;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5592:338;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2100:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4846:364;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;189:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59:41;;;;;;;;;;;;;;;;;;;;;;:::o;4686:156::-;4780:57;4793:8;4803:10;4815:4;4821:5;4828:8;4780:12;:57::i;:::-;4686:156;;;;:::o;104:81::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1305:229::-;1405:4;1417:13;1433:9;:19;1443:8;1433:19;;;;;;;;;;;;;;;:44;1463:12;1453:23;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;1433:44:0;;;;;;;;;;;;;;;;;:54;1478:8;1433:54;;;;;;;;;;;;;;;;1417:70;;1513:15;1501:8;:27;;1493:36;;1305:229;;;;;;:::o;2222:327::-;2338:12;2368:4;2363:10;;2380:1;2375:7;;2384:4;2390:5;:30;2396:23;2410:8;2396:13;:23::i;:::-;2390:30;;;;;;;;;;;;;;;;2422:8;2447;2353:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2338:118;;2463:81;2475:8;2485:48;2500:8;2510:4;2516;2522;2528;2485:14;:48::i;:::-;2535:8;2463:11;:81::i;:::-;2222:327;;;;;;:::o;1538:310::-;1678:7;1693:14;1710:33;1720:4;1726;1732;1738;1710:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1693:50;;1757:45;1771:8;1781:12;1795:6;1757:13;:45::i;:::-;1749:54;;;;;;;;1809:5;:13;1815:6;1809:13;;;;;;;;;;;;;;;;:15;;;;;;;;;;;;;1837:6;1830:13;;1538:310;;;;;;;;;:::o;3121:411::-;3273:12;3303:4;3298:10;;3315:1;3310:7;;3319:4;3325:5;:30;3331:23;3345:8;3331:13;:23::i;:::-;3325:30;;;;;;;;;;;;;;;;3357:8;3382:12;3396:8;3406;3288:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3273:142:0;;3422:105;3434:8;3444:48;3459:8;3469:4;3475;3481;3487;3444:14;:48::i;:::-;3494:12;3508:8;3518;3422:11;:105::i;:::-;3121:411;;;;;;;;:::o;232:37::-;;;;;;;;;;;;;;;;;:::o;3859:159::-;3953:60;3968:8;3978:10;3990:12;4004:8;3953:14;:60::i;:::-;3859:159;;;:::o;5452:137::-;5534:50;5550:8;5560:10;5572:4;5578:5;5534:15;:50::i;:::-;5452:137;;;:::o;835:189::-;896:7;912:13;928:6;:16;935:8;928:16;;;;;;;;;;;;;;;;;;;;;;;;;912:32;;964:3;955:5;:12;;;;951:47;;;985:5;978:12;;;;951:47;1011:8;1004:15;;835:189;;;;;:::o;2939:178::-;3045:67;3057:8;3067:10;3079:12;3093:8;3103;3045:11;:67::i;:::-;2939:178;;;;:::o;4022:385::-;4162:12;4192:4;4187:10;;4204:1;4199:7;;4208:4;4214:5;:30;4220:23;4234:8;4220:13;:23::i;:::-;4214:30;;;;;;;;;;;;;;;;4246:8;4274:12;4288:8;4177:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4162:135:0;;4304:98;4319:8;4329:48;4344:8;4354:4;4360;4366;4372;4329:14;:48::i;:::-;4379:12;4393:8;4304:14;:98::i;:::-;4022:385;;;;;;;:::o;5592:338::-;5720:12;5750:4;5745:10;;5762:1;5757:7;;5766:4;5772:5;:15;5778:8;5772:15;;;;;;;;;;;;;;;;5789:8;5818:4;5824:5;5735:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;5720:110:0;;5837:88;5853:8;5863:48;5878:8;5888:4;5894;5900;5906;5863:14;:48::i;:::-;5913:4;5919:5;5837:15;:88::i;:::-;5592:338;;;;;;;:::o;2100:118::-;2170:43;2182:8;2192:10;2204:8;2170:11;:43::i;:::-;2100:118;;:::o;4846:364::-;4986:12;5016:4;5011:10;;5028:1;5023:7;;5032:4;5038:5;:15;5044:8;5038:15;;;;;;;;;;;;;;;;5055:8;5081:4;5087:5;5094:8;5001:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;36:153;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4986:117:0;;5110:95;5123:8;5133:48;5148:8;5158:4;5164;5170;5176;5133:14;:48::i;:::-;5183:4;5189:5;5196:8;5110:12;:95::i;:::-;4846:364;;;;;;;;:::o;189:39::-;;;;;;;;;;;;;;;;;:::o;4411:271::-;4527:8;4537:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;4570:8;4550:89;;;4580:4;4586:5;4611:8;4593:15;:26;4621:7;:17;4629:8;4621:17;;;;;;;;;;;;;;;;4550:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4665:12:0;4645:7;:17;4653:8;4645:17;;;;;;;;;;;;;;;:32;;;;4411:271;;;;;;;:::o;1028:273::-;1141:7;1156:14;1173:33;1183:4;1189;1195;1201;1173:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:50;;1230:23;1244:8;1230:13;:23::i;:::-;1220:33;;:6;:33;;;1212:42;;;;;;;;1260:5;:15;1266:8;1260:15;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;1290:6;1283:13;;1028:273;;;;;;;;:::o;1852:244::-;1943:8;1953:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;1985:8;1966:6;:16;1973:8;1966:16;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2015:8;1999:54;;;2025:8;2035:7;:17;2043:8;2035:17;;;;;;;;;;;;;;;;1999:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;2079:12;2059:7;:17;2067:8;2059:17;;;;;;;;;;;;;;;:32;;;;1852:244;;;;;:::o;2553:382::-;2681:8;2691:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;2779:8;2761:15;:26;2704:9;:19;2714:8;2704:19;;;;;;;;;;;;;;;:44;2734:12;2724:23;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;2704:44:0;;;;;;;;;;;;;;;;;:54;2749:8;2704:54;;;;;;;;;;;;;;;:83;;;;2812:8;2793:99;;;2822:12;2836:8;2864;2846:15;:26;2874:7;:17;2882:8;2874:17;;;;;;;;;;;;;;;;2793:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2918:12:0;2898:7;:17;2906:8;2898:17;;;;;;;;;;;;;;;:32;;;;2553:382;;;;;;;:::o;3536:319::-;3651:8;3661:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;3731:1;3674:9;:19;3684:8;3674:19;;;;;;;;;;;;;;;:44;3704:12;3694:23;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;3674:44:0;;;;;;;;;;;;;;;;;:54;3719:8;3674:54;;;;;;;;;;;;;;;:58;;;;3757:8;3738:74;;;3767:12;3781:8;3791:1;3794:7;:17;3802:8;3794:17;;;;;;;;;;;;;;;;3738:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3838:12:0;3818:7;:17;3826:8;3818:17;;;;;;;;;;;;;;;:32;;;;3536:319;;;;;;:::o;5214:234::-;5318:8;5328:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;5361:8;5341:64;;;5371:4;5377:5;5384:1;5387:7;:17;5395:8;5387:17;;;;;;;;;;;;;;;;5341:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23: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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5431:12:0;5411:7;:17;5419:8;5411:17;;;;;;;;;;;;;;;:32;;;;5214:234;;;;;;:::o", - "source": "pragma solidity ^0.4.4;\n\ncontract EthereumDIDRegistry {\n\n mapping(address => address) public owners;\n mapping(address => mapping(bytes32 => mapping(address => uint))) public delegates;\n mapping(address => uint) public changed;\n mapping(address => uint) public nonce;\n\n modifier onlyOwner(address identity, address actor) {\n require (actor == identityOwner(identity));\n _;\n }\n\n event DIDOwnerChanged(\n address indexed identity,\n address owner,\n uint previousChange\n );\n\n event DIDDelegateChanged(\n address indexed identity,\n string delegateType,\n address delegate,\n uint validTo,\n uint previousChange\n );\n\n event DIDAttributeChanged(\n address indexed identity,\n string name,\n bytes value,\n uint validTo,\n uint previousChange\n );\n\n function EthereumDIDRegistry() public {\n }\n\n function identityOwner(address identity) public view returns(address) {\n address owner = owners[identity];\n if (owner != 0x0) {\n return owner;\n }\n return identity;\n }\n\n function checkSignature(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 hash) internal returns(address) {\n address signer = ecrecover(hash, sigV, sigR, sigS);\n require(signer == identityOwner(identity));\n nonce[identity]++;\n return signer;\n }\n\n function validDelegate(address identity, string delegateType, address delegate) public view returns(bool) {\n uint validity = delegates[identity][keccak256(delegateType)][delegate];\n return (validity >= block.timestamp);\n }\n\n function validDelegateSignature(address identity, string delegateType, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 hash) public returns(address) {\n address signer = ecrecover(hash, sigV, sigR, sigS);\n require(validDelegate(identity, delegateType, signer));\n nonce[signer]++;\n return signer;\n }\n\n function changeOwner(address identity, address actor, address newOwner) internal onlyOwner(identity, actor) {\n owners[identity] = newOwner;\n DIDOwnerChanged(identity, newOwner, changed[identity]);\n changed[identity] = block.number;\n }\n\n function changeOwner(address identity, address newOwner) public {\n changeOwner(identity, msg.sender, newOwner);\n }\n\n function changeOwnerSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, address newOwner) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, \"changeOwner\", newOwner); \n changeOwner(identity, checkSignature(identity, sigV, sigR, sigS, hash), newOwner);\n }\n\n function addDelegate(address identity, address actor, string delegateType, address delegate, uint validity ) internal onlyOwner(identity, actor) {\n delegates[identity][keccak256(delegateType)][delegate] = block.timestamp + validity;\n DIDDelegateChanged(identity, delegateType, delegate, block.timestamp + validity, changed[identity]);\n changed[identity] = block.number;\n }\n\n function addDelegate(address identity, string delegateType, address delegate, uint validity) public {\n addDelegate(identity, msg.sender, delegateType, delegate, validity);\n }\n\n function addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, string delegateType, address delegate, uint validity) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, \"addDelegate\", delegateType, delegate, validity); \n addDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate, validity);\n }\n\n function revokeDelegate(address identity, address actor, string delegateType, address delegate) internal onlyOwner(identity, actor) {\n delegates[identity][keccak256(delegateType)][delegate] = 0;\n DIDDelegateChanged(identity, delegateType, delegate, 0, changed[identity]);\n changed[identity] = block.number;\n }\n\n function revokeDelegate(address identity, string delegateType, address delegate) public {\n revokeDelegate(identity, msg.sender, delegateType, delegate);\n }\n\n function revokeDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, string delegateType, address delegate) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, \"revokeDelegate\", delegateType, delegate); \n revokeDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate);\n }\n\n function setAttribute(address identity, address actor, string name, bytes value, uint validity ) internal onlyOwner(identity, actor) {\n DIDAttributeChanged(identity, name, value, block.timestamp + validity, changed[identity]);\n changed[identity] = block.number;\n }\n\n function setAttribute(address identity, string name, bytes value, uint validity) public {\n setAttribute(identity, msg.sender, name, value, validity);\n }\n\n function setAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, string name, bytes value, uint validity) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identity], identity, \"setAttribute\", name, value, validity); \n setAttribute(identity, checkSignature(identity, sigV, sigR, sigS, hash), name, value, validity);\n }\n\n function revokeAttribute(address identity, address actor, string name, bytes value ) internal onlyOwner(identity, actor) {\n DIDAttributeChanged(identity, name, value, 0, changed[identity]);\n changed[identity] = block.number;\n }\n\n function revokeAttribute(address identity, string name, bytes value) public {\n revokeAttribute(identity, msg.sender, name, value);\n }\n\n function revokeAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, string name, bytes value) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identity], identity, \"revokeAttribute\", name, value); \n revokeAttribute(identity, checkSignature(identity, sigV, sigR, sigS, hash), name, value);\n }\n\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50612273806100206000396000f3006080604052600436106100e5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062c023da146100ea578063022914a7146101815780630d44625b14610204578063123b5e9814610289578063240cf1fa14610353578063622b2a3c146103df57806370ae92d2146104685780637ad4b0a4146104bf57806380b29f7c146105605780638733d4e8146105d157806393072684146106545780639c2c1b2b146106ee578063a7068d6614610792578063e476af5c1461080d578063f00d4b5d146108cd578063f96d0f9f14610930575b600080fd5b3480156100f657600080fd5b5061017f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610987565b005b34801561018d57600080fd5b506101c2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610998565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021057600080fd5b50610273600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109cb565b6040518082815260200191505060405180910390f35b34801561029557600080fd5b50610351600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001909291905050506109fd565b005b34801561035f57600080fd5b506103dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c72565b005b3480156103eb57600080fd5b5061044e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ec1565b604051808215151515815260200191505060405180910390f35b34801561047457600080fd5b506104a9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f86565b6040518082815260200191505060405180910390f35b3480156104cb57600080fd5b5061055e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610f9e565b005b34801561056c57600080fd5b506105cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fb1565b005b3480156105dd57600080fd5b50610612600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fc2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066057600080fd5b506106ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611058565b005b3480156106fa57600080fd5b50610790600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112b9565b005b34801561079e57600080fd5b5061080b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611524565b005b34801561081957600080fd5b506108cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611537565b005b3480156108d957600080fd5b5061092e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117a2565b005b34801561093c57600080fd5b50610971600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b1565b6040518082815260200191505060405180910390f35b610993833384846117c9565b505050565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b88888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7365744174747269627574650000000000000000000000000000000000000000815250600c01846000191660001916815260200183805190602001908083835b602083101515610c135780518252602082019150602081019050602083039250610bee565b6001836020036101000a0380198251168184511680821785525050505050509050018281526020019850505050505050505060405180910390209050610c6888610c608a8a8a8a8761196c565b868686611a90565b5050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f0100000000000000000000000000000000000000000000000000000000000000023060036000610cca8b610fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054898660405180877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f6368616e67654f776e6572000000000000000000000000000000000000000000815250600b018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401965050505050505060405180910390209050610eb986610eb3888888888761196c565b84611c35565b505050505050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560405180826000191660001916815260200191505060405180910390206000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490504281119150509392505050565b60036020528060005260406000206000915090505481565b610fab8433858585611a90565b50505050565b610fbd83338484611e02565b505050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1614151561104e57809150611052565b8291505b50919050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360006110b08c610fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7265766f6b6544656c6567617465000000000000000000000000000000000000815250600e0183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401975050505050505050604051809103902090506112b0876112a9898989898761196c565b8585611e02565b50505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360006113118d610fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b88888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f61646444656c6567617465000000000000000000000000000000000000000000815250600b0184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001985050505050505050506040518091039020905061151a886115128a8a8a8a8761196c565b868686612022565b5050505050505050565b6115318433858585612022565b50505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7265766f6b654174747269627574650000000000000000000000000000000000815250600f01836000191660001916815260200182805190602001908083835b60208310151561174c5780518252602082019150602081019050602083039250611727565b6001836020036101000a0380198251168184511680821785525050505050509050019750505050505050506040518091039020905061179987611792898989898761196c565b85856117c9565b50505050505050565b6117ad823383611c35565b5050565b60026020528060005260406000206000915090505481565b83836117d482610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561180d57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff167f18ab6b2ae3d64306c00ce663125f2bd680e441a098de1635bd7ad8b0d44965e485856000600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180856000191660001916815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b838110156118e35780820151818401526020810190506118c8565b50505050905090810190601f1680156119105780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b600080600183878787604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156119e6573d6000803e3d6000fd5b5050506020604051035190506119fb87610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611a3457600080fd5b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508091505095945050505050565b8484611a9b82610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611ad457600080fd5b8673ffffffffffffffffffffffffffffffffffffffff167f18ab6b2ae3d64306c00ce663125f2bd680e441a098de1635bd7ad8b0d44965e48686864201600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180856000191660001916815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015611bab578082015181840152602081019050611b90565b50505050905090810190601f168015611bd85780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b8282611c4082610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611c7957600080fd5b826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f38a5a6e68f30ed1ab45860a4afb34bcb2fc00f22ca462d249b8a8d40cda6f7a384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a243600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b8383611e0d82610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611e4657600080fd5b42600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008660405180826000191660001916815260200191505060405180910390206000191660001916815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167f5a5084339536bcab65f20799fcc58724588145ca054bd2be626174b27ba156f7858542600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518085600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b848461202d82610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561206657600080fd5b824201600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760405180826000191660001916815260200191505060405180910390206000191660001916815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff167f5a5084339536bcab65f20799fcc58724588145ca054bd2be626174b27ba156f78686864201600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518085600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050505600a165627a7a72305820ce15794c08edea0fae7ce9c85210f71a312b60c8d5cb2e5fd716c2adcd7403c70029", + "deployedBytecode": "0x6080604052600436106100e5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168062c023da146100ea578063022914a7146101815780630d44625b14610204578063123b5e9814610289578063240cf1fa14610353578063622b2a3c146103df57806370ae92d2146104685780637ad4b0a4146104bf57806380b29f7c146105605780638733d4e8146105d157806393072684146106545780639c2c1b2b146106ee578063a7068d6614610792578063e476af5c1461080d578063f00d4b5d146108cd578063f96d0f9f14610930575b600080fd5b3480156100f657600080fd5b5061017f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610987565b005b34801561018d57600080fd5b506101c2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610998565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021057600080fd5b50610273600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109cb565b6040518082815260200191505060405180910390f35b34801561029557600080fd5b50610351600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001909291905050506109fd565b005b34801561035f57600080fd5b506103dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c72565b005b3480156103eb57600080fd5b5061044e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ec1565b604051808215151515815260200191505060405180910390f35b34801561047457600080fd5b506104a9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f86565b6040518082815260200191505060405180910390f35b3480156104cb57600080fd5b5061055e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610f9e565b005b34801561056c57600080fd5b506105cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fb1565b005b3480156105dd57600080fd5b50610612600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fc2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561066057600080fd5b506106ec600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611058565b005b3480156106fa57600080fd5b50610790600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112b9565b005b34801561079e57600080fd5b5061080b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611524565b005b34801561081957600080fd5b506108cb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080356000191690602001909291908035600019169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611537565b005b3480156108d957600080fd5b5061092e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117a2565b005b34801561093c57600080fd5b50610971600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117b1565b6040518082815260200191505060405180910390f35b610993833384846117c9565b505050565b60006020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160205282600052604060002060205281600052604060002060205280600052604060002060009250925050505481565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b88888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7365744174747269627574650000000000000000000000000000000000000000815250600c01846000191660001916815260200183805190602001908083835b602083101515610c135780518252602082019150602081019050602083039250610bee565b6001836020036101000a0380198251168184511680821785525050505050509050018281526020019850505050505050505060405180910390209050610c6888610c608a8a8a8a8761196c565b868686611a90565b5050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f0100000000000000000000000000000000000000000000000000000000000000023060036000610cca8b610fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054898660405180877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101867effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f6368616e67654f776e6572000000000000000000000000000000000000000000815250600b018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401965050505050505060405180910390209050610eb986610eb3888888888761196c565b84611c35565b505050505050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560405180826000191660001916815260200191505060405180910390206000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490504281119150509392505050565b60036020528060005260406000206000915090505481565b610fab8433858585611a90565b50505050565b610fbd83338484611e02565b505050565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008173ffffffffffffffffffffffffffffffffffffffff1614151561104e57809150611052565b8291505b50919050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360006110b08c610fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7265766f6b6544656c6567617465000000000000000000000000000000000000815250600e0183600019166000191681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401975050505050505050604051809103902090506112b0876112a9898989898761196c565b8585611e02565b50505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360006113118d610fc2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548b88888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f61646444656c6567617465000000000000000000000000000000000000000000815250600b0184600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001985050505050505050506040518091039020905061151a886115128a8a8a8a8761196c565b868686612022565b5050505050505050565b6115318433858585612022565b50505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548a878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401807f7265766f6b654174747269627574650000000000000000000000000000000000815250600f01836000191660001916815260200182805190602001908083835b60208310151561174c5780518252602082019150602081019050602083039250611727565b6001836020036101000a0380198251168184511680821785525050505050509050019750505050505050506040518091039020905061179987611792898989898761196c565b85856117c9565b50505050505050565b6117ad823383611c35565b5050565b60026020528060005260406000206000915090505481565b83836117d482610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561180d57600080fd5b8573ffffffffffffffffffffffffffffffffffffffff167f18ab6b2ae3d64306c00ce663125f2bd680e441a098de1635bd7ad8b0d44965e485856000600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180856000191660001916815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b838110156118e35780820151818401526020810190506118c8565b50505050905090810190601f1680156119105780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b600080600183878787604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156119e6573d6000803e3d6000fd5b5050506020604051035190506119fb87610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611a3457600080fd5b600360008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919060010191905055508091505095945050505050565b8484611a9b82610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611ad457600080fd5b8673ffffffffffffffffffffffffffffffffffffffff167f18ab6b2ae3d64306c00ce663125f2bd680e441a098de1635bd7ad8b0d44965e48686864201600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460405180856000191660001916815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015611bab578082015181840152602081019050611b90565b50505050905090810190601f168015611bd85780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505050505050565b8282611c4082610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611c7957600080fd5b826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508473ffffffffffffffffffffffffffffffffffffffff167f38a5a6e68f30ed1ab45860a4afb34bcb2fc00f22ca462d249b8a8d40cda6f7a384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a243600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050505050565b8383611e0d82610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611e4657600080fd5b42600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008660405180826000191660001916815260200191505060405180910390206000191660001916815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff167f5a5084339536bcab65f20799fcc58724588145ca054bd2be626174b27ba156f7858542600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518085600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a243600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b848461202d82610fc2565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561206657600080fd5b824201600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760405180826000191660001916815260200191505060405180910390206000191660001916815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff167f5a5084339536bcab65f20799fcc58724588145ca054bd2be626174b27ba156f78686864201600260008d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518085600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200183815260200182815260200194505050505060405180910390a243600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050505600a165627a7a72305820ce15794c08edea0fae7ce9c85210f71a312b60c8d5cb2e5fd716c2adcd7403c70029", + "sourceMap": "25:5537:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25:5537:0;;;;;;;", + "deployedSourceMap": "25:5537:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5079:138;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5079:138:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;59:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;59:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;104:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;104:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4467:364;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4467:364:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1856:326;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1856:326:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1260:217;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1260:217:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;232:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;232:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4306:157;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4306:157:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3484:160;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3484:160:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;790:189;;8:9:-1;5:2;;;30:1;27;20:12;5:2;790:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3648:385;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3648:385:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2736:411;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2736:411:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2553:179;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2553:179:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5220:339;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5220:339:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1734:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1734:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;189:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;189:39:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5079:138;5162:50;5178:8;5188:10;5200:4;5206:5;5162:15;:50::i;:::-;5079:138;;;:::o;59:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;104:81::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4467:364::-;4608:12;4638:4;4633:10;;4650:1;4645:7;;4654:4;4660:5;:15;4666:8;4660:15;;;;;;;;;;;;;;;;4677:8;4703:4;4709:5;4716:8;4623:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4623:102:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4608:117;;4731:95;4744:8;4754:48;4769:8;4779:4;4785;4791;4797;4754:14;:48::i;:::-;4804:4;4810:5;4817:8;4731:12;:95::i;:::-;4467:364;;;;;;;;:::o;1856:326::-;1972:12;2002:4;1997:10;;2014:1;2009:7;;2018:4;2024:5;:30;2030:23;2044:8;2030:13;:23::i;:::-;2024:30;;;;;;;;;;;;;;;;2056:8;2081;1987:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1972:118;;2096:81;2108:8;2118:48;2133:8;2143:4;2149;2155;2161;2118:14;:48::i;:::-;2168:8;2096:11;:81::i;:::-;1856:326;;;;;;:::o;1260:217::-;1361:4;1373:13;1389:9;:19;1399:8;1389:19;;;;;;;;;;;;;;;:44;1419:12;1409:23;;;;;;;;;;;;;;;;;;;;;;;;1389:44;;;;;;;;;;;;;;;;;:54;1434:8;1389:54;;;;;;;;;;;;;;;;1373:70;;1468:3;1457:8;:14;1449:23;;1260:217;;;;;;:::o;232:37::-;;;;;;;;;;;;;;;;;:::o;4306:157::-;4401:57;4414:8;4424:10;4436:4;4442:5;4449:8;4401:12;:57::i;:::-;4306:157;;;;:::o;3484:160::-;3579:60;3594:8;3604:10;3616:12;3630:8;3579:14;:60::i;:::-;3484:160;;;:::o;790:189::-;851:7;867:13;883:6;:16;890:8;883:16;;;;;;;;;;;;;;;;;;;;;;;;;867:32;;919:3;910:5;:12;;;;906:47;;;940:5;933:12;;;;906:47;966:8;959:15;;790:189;;;;;:::o;3648:385::-;3789:12;3819:4;3814:10;;3831:1;3826:7;;3835:4;3841:5;:30;3847:23;3861:8;3847:13;:23::i;:::-;3841:30;;;;;;;;;;;;;;;;3873:8;3901:12;3915:8;3804:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3789:135;;3930:98;3945:8;3955:48;3970:8;3980:4;3986;3992;3998;3955:14;:48::i;:::-;4005:12;4019:8;3930:14;:98::i;:::-;3648:385;;;;;;;:::o;2736:411::-;2889:12;2919:4;2914:10;;2931:1;2926:7;;2935:4;2941:5;:30;2947:23;2961:8;2947:13;:23::i;:::-;2941:30;;;;;;;;;;;;;;;;2973:8;2998:12;3012:8;3022;2904:127;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2889:142;;3037:105;3049:8;3059:48;3074:8;3084:4;3090;3096;3102;3059:14;:48::i;:::-;3109:12;3123:8;3133;3037:11;:105::i;:::-;2736:411;;;;;;;;:::o;2553:179::-;2660:67;2672:8;2682:10;2694:12;2708:8;2718;2660:11;:67::i;:::-;2553:179;;;;:::o;5220:339::-;5349:12;5379:4;5374:10;;5391:1;5386:7;;5395:4;5401:5;:15;5407:8;5401:15;;;;;;;;;;;;;;;;5418:8;5447:4;5453:5;5364:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5364:95:0;;;;;;;;;;;;;;;;;;;;;;5349:110;;5466:88;5482:8;5492:48;5507:8;5517:4;5523;5529;5535;5492:14;:48::i;:::-;5542:4;5548:5;5466:15;:88::i;:::-;5220:339;;;;;;;:::o;1734:118::-;1804:43;1816:8;1826:10;1838:8;1804:11;:43::i;:::-;1734:118;;:::o;189:39::-;;;;;;;;;;;;;;;;;:::o;4835:240::-;4940:8;4950:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;4988:8;4968:64;;;4998:4;5004:5;5011:1;5014:7;:17;5022:8;5014:17;;;;;;;;;;;;;;;;4968:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4968:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5058:12;5038:7;:17;5046:8;5038:17;;;;;;;;;;;;;;;:32;;;;4835:240;;;;;;:::o;983:273::-;1096:7;1111:14;1128:33;1138:4;1144;1150;1156;1128:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1128:33:0;;;;;;;;1111:50;;1185:23;1199:8;1185:13;:23::i;:::-;1175:33;;:6;:33;;;1167:42;;;;;;;;1215:5;:15;1221:8;1215:15;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;1245:6;1238:13;;983:273;;;;;;;;:::o;4037:265::-;4154:8;4164:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;4202:8;4182:77;;;4212:4;4218:5;4231:8;4225:3;:14;4241:7;:17;4249:8;4241:17;;;;;;;;;;;;;;;;4182:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;4182:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4285:12;4265:7;:17;4273:8;4265:17;;;;;;;;;;;;;;;:32;;;;4037:265;;;;;;;:::o;1481:249::-;1572:8;1582:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;1614:8;1595:6;:16;1602:8;1595:16;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1649:8;1633:54;;;1659:8;1669:7;:17;1677:8;1669:17;;;;;;;;;;;;;;;;1633:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;1713:12;1693:7;:17;1701:8;1693:17;;;;;;;;;;;;;;;:32;;;;1481:249;;;;;:::o;3151:329::-;3267:8;3277:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;3347:3;3290:9;:19;3300:8;3290:19;;;;;;;;;;;;;;;:44;3320:12;3310:23;;;;;;;;;;;;;;;;;;;;;;;;3290:44;;;;;;;;;;;;;;;;;:54;3335:8;3290:54;;;;;;;;;;;;;;;:60;;;;3380:8;3361:76;;;3390:12;3404:8;3414:3;3419:7;:17;3427:8;3419:17;;;;;;;;;;;;;;;;3361:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3463:12;3443:7;:17;3451:8;3443:17;;;;;;;;;;;;;;;:32;;;;3151:329;;;;;;:::o;2186:363::-;2314:8;2324:5;350:23;364:8;350:13;:23::i;:::-;341:32;;:5;:32;;;332:42;;;;;;;;2400:8;2394:3;:14;2337:9;:19;2347:8;2337:19;;;;;;;;;;;;;;;:44;2367:12;2357:23;;;;;;;;;;;;;;;;;;;;;;;;2337:44;;;;;;;;;;;;;;;;;:54;2382:8;2337:54;;;;;;;;;;;;;;;:71;;;;2438:8;2419:87;;;2448:12;2462:8;2478;2472:3;:14;2488:7;:17;2496:8;2488:17;;;;;;;;;;;;;;;;2419:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2532:12;2512:7;:17;2520:8;2512:17;;;;;;;;;;;;;;;:32;;;;2186:363;;;;;;;:::o", + "source": "pragma solidity ^0.4.4;\n\ncontract EthereumDIDRegistry {\n\n mapping(address => address) public owners;\n mapping(address => mapping(bytes32 => mapping(address => uint))) public delegates;\n mapping(address => uint) public changed;\n mapping(address => uint) public nonce;\n\n modifier onlyOwner(address identity, address actor) {\n require (actor == identityOwner(identity));\n _;\n }\n\n event DIDOwnerChanged(\n address indexed identity,\n address owner,\n uint previousChange\n );\n\n event DIDDelegateChanged(\n address indexed identity,\n bytes32 delegateType,\n address delegate,\n uint validTo,\n uint previousChange\n );\n\n event DIDAttributeChanged(\n address indexed identity,\n bytes32 name,\n bytes value,\n uint validTo,\n uint previousChange\n );\n\n function identityOwner(address identity) public view returns(address) {\n address owner = owners[identity];\n if (owner != 0x0) {\n return owner;\n }\n return identity;\n }\n\n function checkSignature(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 hash) internal returns(address) {\n address signer = ecrecover(hash, sigV, sigR, sigS);\n require(signer == identityOwner(identity));\n nonce[identity]++;\n return signer;\n }\n\n function validDelegate(address identity, bytes32 delegateType, address delegate) public view returns(bool) {\n uint validity = delegates[identity][keccak256(delegateType)][delegate];\n return (validity > now);\n }\n\n function changeOwner(address identity, address actor, address newOwner) internal onlyOwner(identity, actor) {\n owners[identity] = newOwner;\n emit DIDOwnerChanged(identity, newOwner, changed[identity]);\n changed[identity] = block.number;\n }\n\n function changeOwner(address identity, address newOwner) public {\n changeOwner(identity, msg.sender, newOwner);\n }\n\n function changeOwnerSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, address newOwner) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, \"changeOwner\", newOwner);\n changeOwner(identity, checkSignature(identity, sigV, sigR, sigS, hash), newOwner);\n }\n\n function addDelegate(address identity, address actor, bytes32 delegateType, address delegate, uint validity) internal onlyOwner(identity, actor) {\n delegates[identity][keccak256(delegateType)][delegate] = now + validity;\n emit DIDDelegateChanged(identity, delegateType, delegate, now + validity, changed[identity]);\n changed[identity] = block.number;\n }\n\n function addDelegate(address identity, bytes32 delegateType, address delegate, uint validity) public {\n addDelegate(identity, msg.sender, delegateType, delegate, validity);\n }\n\n function addDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate, uint validity) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, \"addDelegate\", delegateType, delegate, validity);\n addDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate, validity);\n }\n\n function revokeDelegate(address identity, address actor, bytes32 delegateType, address delegate) internal onlyOwner(identity, actor) {\n delegates[identity][keccak256(delegateType)][delegate] = now;\n emit DIDDelegateChanged(identity, delegateType, delegate, now, changed[identity]);\n changed[identity] = block.number;\n }\n\n function revokeDelegate(address identity, bytes32 delegateType, address delegate) public {\n revokeDelegate(identity, msg.sender, delegateType, delegate);\n }\n\n function revokeDelegateSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 delegateType, address delegate) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identityOwner(identity)], identity, \"revokeDelegate\", delegateType, delegate);\n revokeDelegate(identity, checkSignature(identity, sigV, sigR, sigS, hash), delegateType, delegate);\n }\n\n function setAttribute(address identity, address actor, bytes32 name, bytes value, uint validity ) internal onlyOwner(identity, actor) {\n emit DIDAttributeChanged(identity, name, value, now + validity, changed[identity]);\n changed[identity] = block.number;\n }\n\n function setAttribute(address identity, bytes32 name, bytes value, uint validity) public {\n setAttribute(identity, msg.sender, name, value, validity);\n }\n\n function setAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes value, uint validity) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identity], identity, \"setAttribute\", name, value, validity);\n setAttribute(identity, checkSignature(identity, sigV, sigR, sigS, hash), name, value, validity);\n }\n\n function revokeAttribute(address identity, address actor, bytes32 name, bytes value ) internal onlyOwner(identity, actor) {\n emit DIDAttributeChanged(identity, name, value, 0, changed[identity]);\n changed[identity] = block.number;\n }\n\n function revokeAttribute(address identity, bytes32 name, bytes value) public {\n revokeAttribute(identity, msg.sender, name, value);\n }\n\n function revokeAttributeSigned(address identity, uint8 sigV, bytes32 sigR, bytes32 sigS, bytes32 name, bytes value) public {\n bytes32 hash = keccak256(byte(0x19), byte(0), this, nonce[identity], identity, \"revokeAttribute\", name, value); \n revokeAttribute(identity, checkSignature(identity, sigV, sigR, sigS, hash), name, value);\n }\n\n}\n", "sourcePath": "/Users/pelleb/code/consensys/ethereum-did-registry/contracts/EthereumDIDRegistry.sol", "ast": { - "attributes": { - "absolutePath": "/Users/pelleb/code/consensys/ethereum-did-registry/contracts/EthereumDIDRegistry.sol", - "exportedSymbols": { - "EthereumDIDRegistry": [ - 756 - ] - } + "absolutePath": "/Users/pelleb/code/consensys/ethereum-did-registry/contracts/EthereumDIDRegistry.sol", + "exportedSymbols": { + "EthereumDIDRegistry": [ + 706 + ] }, - "children": [ + "id": 707, + "nodeType": "SourceUnit", + "nodes": [ { - "attributes": { - "literals": [ - "solidity", - "^", - "0.4", - ".4" - ] - }, "id": 1, - "name": "PragmaDirective", + "literals": [ + "solidity", + "^", + "0.4", + ".4" + ], + "nodeType": "PragmaDirective", "src": "0:23:0" }, { - "attributes": { - "baseContracts": [ - null - ], - "contractDependencies": [ - null - ], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "linearizedBaseContracts": [ - 756 - ], - "name": "EthereumDIDRegistry", - "scope": 757 - }, - "children": [ + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 706, + "linearizedBaseContracts": [ + 706 + ], + "name": "EthereumDIDRegistry", + "nodeType": "ContractDefinition", + "nodes": [ { - "attributes": { - "constant": false, - "name": "owners", - "scope": 756, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(address => address)", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => address)" + "constant": false, + "id": 5, + "name": "owners", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "59:41:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "typeName": { + "id": 4, + "keyType": { + "id": 2, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "67:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "59:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "78:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 13, + "name": "delegates", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "104:81:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" + }, + "typeName": { + "id": 12, + "keyType": { + "id": 6, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "112:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "104:64:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" + }, + "valueType": { + "id": 11, + "keyType": { + "id": 7, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "131:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 2, - "name": "ElementaryTypeName", - "src": "67:7:0" + "nodeType": "Mapping", + "src": "123:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" + }, + "valueType": { + "id": 10, + "keyType": { + "id": 8, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "150:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 3, - "name": "ElementaryTypeName", - "src": "78:7:0" + "nodeType": "Mapping", + "src": "142:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 9, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "161:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } - ], - "id": 4, - "name": "Mapping", - "src": "59:27:0" + } } - ], - "id": 5, - "name": "VariableDeclaration", - "src": "59:41:0" + }, + "value": null, + "visibility": "public" }, { - "attributes": { - "constant": false, - "name": "delegates", - "scope": 756, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(address => mapping(bytes32 => mapping(address => uint256)))", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 6, - "name": "ElementaryTypeName", - "src": "112:7:0" - }, - { - "attributes": { - "type": "mapping(bytes32 => mapping(address => uint256))" - }, - "children": [ + "constant": false, + "id": 17, + "name": "changed", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "189:39:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 16, + "keyType": { + "id": 14, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "197:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "189:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 15, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "208:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 21, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "232:37:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 20, + "keyType": { + "id": 18, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "240:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "232:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 19, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "251:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 36, + "nodeType": "Block", + "src": "326:60:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "bytes32", - "type": "bytes32" + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 7, - "name": "ElementaryTypeName", - "src": "131:7:0" - }, - { - "attributes": { - "type": "mapping(address => uint256)" + "id": 32, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 28, + "name": "actor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "341:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 8, - "name": "ElementaryTypeName", - "src": "150:7:0" + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 30, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "364:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 29, + "name": "identityOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "350:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view returns (address)" + } }, - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 9, - "name": "ElementaryTypeName", - "src": "161:4:0" + "id": 31, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 10, - "name": "Mapping", - "src": "142:24:0" + }, + "src": "341:32:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } } ], - "id": 11, - "name": "Mapping", - "src": "123:44:0" - } - ], - "id": 12, - "name": "Mapping", - "src": "104:64:0" - } - ], - "id": 13, - "name": "VariableDeclaration", - "src": "104:81:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 27, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 724, + 725 + ], + "referencedDeclaration": 724, + "src": "332:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 33, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "332:42:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34, + "nodeType": "ExpressionStatement", + "src": "332:42:0" + }, + { + "id": 35, + "nodeType": "PlaceholderStatement", + "src": "380:1:0" + } + ] + }, + "documentation": null, + "id": 37, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 26, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "293:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 22, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "293:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 25, + "name": "actor", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "311:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 24, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "311:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "292:33:0" + }, + "src": "274:112:0", + "visibility": "internal" }, { - "attributes": { - "constant": false, - "name": "changed", - "scope": 756, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(address => uint256)", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => uint256)" + "anonymous": false, + "documentation": null, + "id": 45, + "name": "DIDOwnerChanged", + "nodeType": "EventDefinition", + "parameters": { + "id": 44, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 39, + "indexed": true, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "417:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 38, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "417:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 14, - "name": "ElementaryTypeName", - "src": "197:7:0" + { + "constant": false, + "id": 41, + "indexed": false, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "447:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" }, - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 15, - "name": "ElementaryTypeName", - "src": "208:4:0" - } - ], - "id": 16, - "name": "Mapping", - "src": "189:24:0" - } - ], - "id": 17, - "name": "VariableDeclaration", - "src": "189:39:0" + "typeName": { + "id": 40, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "447:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43, + "indexed": false, + "name": "previousChange", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "466:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 42, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "466:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "411:78:0" + }, + "src": "390:100:0" }, { - "attributes": { - "constant": false, - "name": "nonce", - "scope": 756, - "stateVariable": true, - "storageLocation": "default", - "type": "mapping(address => uint256)", - "value": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "type": "mapping(address => uint256)" + "anonymous": false, + "documentation": null, + "id": 57, + "name": "DIDDelegateChanged", + "nodeType": "EventDefinition", + "parameters": { + "id": 56, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 47, + "indexed": true, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "524:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 46, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "524:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 18, - "name": "ElementaryTypeName", - "src": "240:7:0" + { + "constant": false, + "id": 49, + "indexed": false, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "554:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 19, - "name": "ElementaryTypeName", - "src": "251:4:0" - } - ], - "id": 20, - "name": "Mapping", - "src": "232:24:0" - } - ], - "id": 21, - "name": "VariableDeclaration", - "src": "232:37:0" + "typeName": { + "id": 48, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "554:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 51, + "indexed": false, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "580:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "580:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 53, + "indexed": false, + "name": "validTo", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "602:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 52, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "602:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 55, + "indexed": false, + "name": "previousChange", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "620:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 54, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "620:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "518:125:0" + }, + "src": "494:150:0" }, { - "attributes": { - "name": "onlyOwner", - "visibility": "internal" + "anonymous": false, + "documentation": null, + "id": 69, + "name": "DIDAttributeChanged", + "nodeType": "EventDefinition", + "parameters": { + "id": 68, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 59, + "indexed": true, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "679:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 58, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "679:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 61, + "indexed": false, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "709:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 60, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "709:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 63, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "727:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 62, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "727:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 65, + "indexed": false, + "name": "validTo", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "744:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 64, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "744:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 67, + "indexed": false, + "name": "previousChange", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "762:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "762:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "673:112:0" }, - "children": [ - { - "children": [ - { - "attributes": { + "src": "648:138:0" + }, + { + "body": { + "id": 91, + "nodeType": "Block", + "src": "860:119:0", + "statements": [ + { + "assignments": [ + 77 + ], + "declarations": [ + { "constant": false, - "name": "identity", - "scope": 37, + "id": 77, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "867:13:0", "stateVariable": false, "storageLocation": "default", - "type": "address", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 76, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "867:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, "value": null, "visibility": "internal" + } + ], + "id": 81, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 78, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "883:6:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 22, - "name": "ElementaryTypeName", - "src": "293:7:0" + "id": 80, + "indexExpression": { + "argumentTypes": null, + "id": 79, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "890:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 23, - "name": "VariableDeclaration", - "src": "293:16:0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "883:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - { - "attributes": { - "constant": false, - "name": "actor", - "scope": 37, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" + "nodeType": "VariableDeclarationStatement", + "src": "867:32:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 82, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "910:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "307830", + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "919:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" }, - "children": [ + "src": "910:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 88, + "nodeType": "IfStatement", + "src": "906:47:0", + "trueBody": { + "id": 87, + "nodeType": "Block", + "src": "924:29:0", + "statements": [ { - "attributes": { - "name": "address", - "type": "address" + "expression": { + "argumentTypes": null, + "id": 85, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "940:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "id": 24, - "name": "ElementaryTypeName", - "src": "311:7:0" + "functionReturnParameters": 75, + "id": 86, + "nodeType": "Return", + "src": "933:12:0" } - ], - "id": 25, - "name": "VariableDeclaration", - "src": "311:13:0" + ] } - ], - "id": 26, - "name": "ParameterList", - "src": "292:33:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 771, - "type": "function (bool) pure", - "value": "require" - }, - "id": 27, - "name": "Identifier", - "src": "332:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 25, - "type": "address", - "value": "actor" - }, - "id": 28, - "name": "Identifier", - "src": "341:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 96, - "type": "function (address) view returns (address)", - "value": "identityOwner" - }, - "id": 29, - "name": "Identifier", - "src": "350:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 23, - "type": "address", - "value": "identity" - }, - "id": 30, - "name": "Identifier", - "src": "364:8:0" - } - ], - "id": 31, - "name": "FunctionCall", - "src": "350:23:0" - } - ], - "id": 32, - "name": "BinaryOperation", - "src": "341:32:0" - } - ], - "id": 33, - "name": "FunctionCall", - "src": "332:42:0" - } - ], - "id": 34, - "name": "ExpressionStatement", - "src": "332:42:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 89, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "966:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - { - "id": 35, - "name": "PlaceholderStatement", - "src": "380:1:0" - } - ], - "id": 36, - "name": "Block", - "src": "326:60:0" - } - ], - "id": 37, - "name": "ModifierDefinition", - "src": "274:112:0" + "functionReturnParameters": 75, + "id": 90, + "nodeType": "Return", + "src": "959:15:0" + } + ] + }, + "documentation": null, + "id": 92, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "identityOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 72, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 71, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "813:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 70, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "813:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "812:18:0" + }, + "payable": false, + "returnParameters": { + "id": 75, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 74, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "851:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 73, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "851:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "850:9:0" + }, + "scope": 706, + "src": "790:189:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" }, { - "attributes": { - "anonymous": false, - "name": "DIDOwnerChanged" - }, - "children": [ - { - "children": [ - { - "attributes": { + "body": { + "id": 131, + "nodeType": "Block", + "src": "1105:151:0", + "statements": [ + { + "assignments": [ + 108 + ], + "declarations": [ + { "constant": false, - "indexed": true, - "name": "identity", - "scope": 45, + "id": 108, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1111:14:0", "stateVariable": false, "storageLocation": "default", - "type": "address", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 107, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1111:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, "value": null, "visibility": "internal" - }, - "children": [ + } + ], + "id": 115, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 38, - "name": "ElementaryTypeName", - "src": "417:7:0" + "argumentTypes": null, + "id": 110, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "1138:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 111, + "name": "sigV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "1144:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 112, + "name": "sigR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 98, + "src": "1150:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 113, + "name": "sigS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "1156:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } } ], - "id": 39, - "name": "VariableDeclaration", - "src": "417:24:0" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "owner", - "scope": 45, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - "id": 40, - "name": "ElementaryTypeName", - "src": "447:7:0" + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 109, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 713, + "src": "1128:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } - ], - "id": 41, - "name": "VariableDeclaration", - "src": "447:13:0" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "previousChange", - "scope": 45, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" }, - "children": [ + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1128:33:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1111:50:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "uint", - "type": "uint256" + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 117, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "1175:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 119, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "1199:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 118, + "name": "identityOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "1185:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view returns (address)" + } + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1185:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "id": 42, - "name": "ElementaryTypeName", - "src": "466:4:0" + "src": "1175:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } } ], - "id": 43, - "name": "VariableDeclaration", - "src": "466:19:0" - } - ], - "id": 44, - "name": "ParameterList", - "src": "411:78:0" - } - ], - "id": 45, - "name": "EventDefinition", - "src": "390:100:0" - }, - { - "attributes": { - "anonymous": false, - "name": "DIDDelegateChanged" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "identity", - "scope": 57, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 116, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 724, + 725 + ], + "referencedDeclaration": 724, + "src": "1167:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 46, - "name": "ElementaryTypeName", - "src": "524:7:0" + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1167:42:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 123, + "nodeType": "ExpressionStatement", + "src": "1167:42:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1215:17:0", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 124, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "1215:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 126, + "indexExpression": { + "argumentTypes": null, + "id": 125, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "1221:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1215:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 47, - "name": "VariableDeclaration", - "src": "524:24:0" + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "attributes": { + "id": 128, + "nodeType": "ExpressionStatement", + "src": "1215:17:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 129, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "1245:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 106, + "id": 130, + "nodeType": "Return", + "src": "1238:13:0" + } + ] + }, + "documentation": null, + "id": 132, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "checkSignature", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 103, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1007:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 93, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1007:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 96, + "name": "sigV", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1025:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 95, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1025:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 98, + "name": "sigR", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1037:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 97, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1037:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 100, + "name": "sigS", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1051:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 99, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1051:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 102, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1065:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 101, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1065:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1006:72:0" + }, + "payable": false, + "returnParameters": { + "id": 106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 105, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1096:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1096:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1095:9:0" + }, + "scope": 706, + "src": "983:273:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 160, + "nodeType": "Block", + "src": "1367:110:0", + "statements": [ + { + "assignments": [ + 144 + ], + "declarations": [ + { "constant": false, - "indexed": false, - "name": "delegateType", - "scope": 57, + "id": 144, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "1373:13:0", "stateVariable": false, "storageLocation": "default", - "type": "string memory", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 143, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1373:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, "value": null, "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string storage pointer" + } + ], + "id": 154, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 145, + "name": "delegates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "1389:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" + } + }, + "id": 147, + "indexExpression": { + "argumentTypes": null, + "id": 146, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "1399:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1389:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" + } + }, + "id": 151, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 149, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 136, + "src": "1419:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 148, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "1409:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } }, - "id": 48, - "name": "ElementaryTypeName", - "src": "554:6:0" + "id": 150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1409:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1389:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } - ], - "id": 49, - "name": "VariableDeclaration", - "src": "554:19:0" - }, - { - "attributes": { - "constant": false, - "indexed": false, + }, + "id": 153, + "indexExpression": { + "argumentTypes": null, + "id": 152, "name": "delegate", - "scope": 57, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 138, + "src": "1434:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "children": [ + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1389:54:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1373:70:0" + }, + { + "expression": { + "argumentTypes": null, + "components": [ { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 155, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "1457:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "id": 50, - "name": "ElementaryTypeName", - "src": "579:7:0" + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 156, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "1468:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1457:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } } ], - "id": 51, - "name": "VariableDeclaration", - "src": "579:16:0" + "id": 158, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1456:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "validTo", - "scope": 57, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" + "functionReturnParameters": 142, + "id": 159, + "nodeType": "Return", + "src": "1449:23:0" + } + ] + }, + "documentation": null, + "id": 161, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "validDelegate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 134, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "1283:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1283:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 136, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "1301:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 135, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1301:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 138, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "1323:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 137, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1323:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1282:58:0" + }, + "payable": false, + "returnParameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 141, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "1361:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 140, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1361:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1360:6:0" + }, + "scope": 706, + "src": "1260:217:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 195, + "nodeType": "Block", + "src": "1589:141:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 174, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "1595:6:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 176, + "indexExpression": { + "argumentTypes": null, + "id": 175, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "1602:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1595:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 177, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "1614:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "children": [ + "src": "1595:27:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 179, + "nodeType": "ExpressionStatement", + "src": "1595:27:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "uint", - "type": "uint256" + "argumentTypes": null, + "id": 181, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "1649:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 182, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "1659:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 183, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "1669:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 185, + "indexExpression": { + "argumentTypes": null, + "id": 184, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "1677:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "id": 52, - "name": "ElementaryTypeName", - "src": "601:4:0" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1669:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 53, - "name": "VariableDeclaration", - "src": "601:12:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 180, + "name": "DIDOwnerChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "1633:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1633:54:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "previousChange", - "scope": 57, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" + "id": 187, + "nodeType": "EmitStatement", + "src": "1628:59:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 188, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "1693:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 190, + "indexExpression": { + "argumentTypes": null, + "id": 189, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "1701:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1693:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 54, - "name": "ElementaryTypeName", - "src": "619:4:0" + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 191, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "1713:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1713:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 55, - "name": "VariableDeclaration", - "src": "619:19:0" + }, + "src": "1693:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 194, + "nodeType": "ExpressionStatement", + "src": "1693:32:0" + } + ] + }, + "documentation": null, + "id": 196, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 170, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "1572:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 171, + "name": "actor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "1582:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 56, - "name": "ParameterList", - "src": "518:124:0" + "id": 172, + "modifierName": { + "argumentTypes": null, + "id": 169, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "1562:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_address_$", + "typeString": "modifier (address,address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1562:26:0" } ], - "id": 57, - "name": "EventDefinition", - "src": "494:149:0" + "name": "changeOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 163, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 196, + "src": "1502:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 162, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1502:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 165, + "name": "actor", + "nodeType": "VariableDeclaration", + "scope": 196, + "src": "1520:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1520:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 167, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 196, + "src": "1535:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 166, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1535:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1501:51:0" + }, + "payable": false, + "returnParameters": { + "id": 173, + "nodeType": "ParameterList", + "parameters": [], + "src": "1589:0:0" + }, + "scope": 706, + "src": "1481:249:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" }, { - "attributes": { - "anonymous": false, - "name": "DIDAttributeChanged" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "indexed": true, - "name": "identity", - "scope": 69, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "body": { + "id": 210, + "nodeType": "Block", + "src": "1798:54:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 58, - "name": "ElementaryTypeName", - "src": "678:7:0" - } - ], - "id": 59, - "name": "VariableDeclaration", - "src": "678:24:0" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "name", - "scope": 69, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "id": 204, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 198, + "src": "1816:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "string", - "type": "string storage pointer" + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 205, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 721, + "src": "1826:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } }, - "id": 60, - "name": "ElementaryTypeName", - "src": "708:6:0" - } - ], - "id": 61, - "name": "VariableDeclaration", - "src": "708:11:0" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "value", - "scope": 69, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes memory", - "value": null, - "visibility": "internal" - }, - "children": [ + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1826:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "bytes", - "type": "bytes storage pointer" - }, - "id": 62, - "name": "ElementaryTypeName", - "src": "725:5:0" + "argumentTypes": null, + "id": 207, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 200, + "src": "1838:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 63, - "name": "VariableDeclaration", - "src": "725:11:0" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "validTo", - "scope": 69, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 64, - "name": "ElementaryTypeName", - "src": "742:4:0" - } - ], - "id": 65, - "name": "VariableDeclaration", - "src": "742:12:0" - }, - { - "attributes": { - "constant": false, - "indexed": false, - "name": "previousChange", - "scope": 69, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 66, - "name": "ElementaryTypeName", - "src": "760:4:0" + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 203, + "name": "changeOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 196, + 211 + ], + "referencedDeclaration": 196, + "src": "1804:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address,address)" } - ], - "id": 67, - "name": "VariableDeclaration", - "src": "760:19:0" - } - ], - "id": 68, - "name": "ParameterList", - "src": "672:111:0" - } - ], - "id": 69, - "name": "EventDefinition", - "src": "647:137:0" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": true, - "modifiers": [ - null + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1804:43:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 209, + "nodeType": "ExpressionStatement", + "src": "1804:43:0" + } + ] + }, + "documentation": null, + "id": 211, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "changeOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 198, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 211, + "src": "1755:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 197, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1755:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 200, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 211, + "src": "1773:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 199, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1773:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } ], - "name": "EthereumDIDRegistry", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 70, - "name": "ParameterList", - "src": "816:2:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 71, - "name": "ParameterList", - "src": "826:0:0" - }, - { - "attributes": { - "statements": [ - null - ] - }, - "children": [], - "id": 72, - "name": "Block", - "src": "826:5:0" - } - ], - "id": 73, - "name": "FunctionDefinition", - "src": "788:43:0" + "src": "1754:36:0" + }, + "payable": false, + "returnParameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [], + "src": "1798:0:0" + }, + "scope": 706, + "src": "1734:118:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" }, { - "attributes": { - "constant": true, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "identityOwner", - "payable": false, - "scope": 756, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 96, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 74, - "name": "ElementaryTypeName", - "src": "858:7:0" - } - ], - "id": 75, - "name": "VariableDeclaration", - "src": "858:16:0" - } - ], - "id": 76, - "name": "ParameterList", - "src": "857:18:0" - }, - { - "children": [ - { - "attributes": { + "body": { + "id": 256, + "nodeType": "Block", + "src": "1966:216:0", + "statements": [ + { + "assignments": [ + 225 + ], + "declarations": [ + { "constant": false, - "name": "", - "scope": 96, + "id": 225, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "1972:12:0", "stateVariable": false, "storageLocation": "default", - "type": "address", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 224, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1972:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, "value": null, "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 77, - "name": "ElementaryTypeName", - "src": "896:7:0" - } - ], - "id": 78, - "name": "VariableDeclaration", - "src": "896:7:0" - } - ], - "id": 79, - "name": "ParameterList", - "src": "895:9:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 81 - ] - }, - "children": [ + } + ], + "id": 243, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "constant": false, - "name": "owner", - "scope": 96, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "hexValue": "30783139", + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2002:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" }, - "id": 80, - "name": "ElementaryTypeName", - "src": "912:7:0" + "value": "0x19" } ], - "id": 81, - "name": "VariableDeclaration", - "src": "912:13:0" - }, - { - "attributes": { - "argumentTypes": null, + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 227, "isConstant": false, - "isLValue": true, - "isPure": false, + "isLValue": false, + "isPure": true, "lValueRequested": false, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 5, - "type": "mapping(address => address)", - "value": "owners" - }, - "id": 82, - "name": "Identifier", - "src": "928:6:0" + "nodeType": "ElementaryTypeNameExpression", + "src": "1997:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, + "typeName": "byte" + }, + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1997:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 75, - "type": "address", - "value": "identity" + "argumentTypes": null, + "hexValue": "30", + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2014:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "id": 83, - "name": "Identifier", - "src": "935:8:0" + "value": "0" } ], - "id": 84, - "name": "IndexAccess", - "src": "928:16:0" - } - ], - "id": 85, - "name": "VariableDeclarationStatement", - "src": "912:32:0" - }, - { - "attributes": { - "falseBody": null - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 230, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, "lValueRequested": false, - "operator": "!=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 81, - "type": "address", - "value": "owner" - }, - "id": 86, - "name": "Identifier", - "src": "955:5:0" + "nodeType": "ElementaryTypeNameExpression", + "src": "2009:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "307830", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0x0" - }, - "id": 87, - "name": "Literal", - "src": "964:3:0" - } - ], - "id": 88, - "name": "BinaryOperation", - "src": "955:12:0" + "typeName": "byte" + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2009:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } }, { - "children": [ - { - "attributes": { - "functionReturnParameters": 79 - }, - "children": [ + "argumentTypes": null, + "id": 233, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "2018:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 234, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "2024:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 238, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 236, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "2044:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 81, - "type": "address", - "value": "owner" - }, - "id": 89, - "name": "Identifier", - "src": "985:5:0" + "typeIdentifier": "t_address", + "typeString": "address" } ], - "id": 90, - "name": "Return", - "src": "978:12:0" + "id": 235, + "name": "identityOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "2030:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view returns (address)" + } + }, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2030:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 91, - "name": "Block", - "src": "969:29:0" - } - ], - "id": 92, - "name": "IfStatement", - "src": "951:47:0" - }, - { - "attributes": { - "functionReturnParameters": 79 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 75, - "type": "address", - "value": "identity" }, - "id": 93, - "name": "Identifier", - "src": "1011:8:0" - } - ], - "id": 94, - "name": "Return", - "src": "1004:15:0" - } - ], - "id": 95, - "name": "Block", - "src": "905:119:0" - } - ], - "id": 96, - "name": "FunctionDefinition", - "src": "835:189:0" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "checkSignature", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 136, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2024:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 239, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "2056:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "hexValue": "6368616e67654f776e6572", + "id": 240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2066:13:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_497a2d03cc86298e55cb693e1ab1fe854c7b50c0aa5aad6229104986e0bf69c9", + "typeString": "literal_string \"changeOwner\"" }, - "id": 97, - "name": "ElementaryTypeName", - "src": "1052:7:0" + "value": "changeOwner" + }, + { + "argumentTypes": null, + "id": 241, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 221, + "src": "2081:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 98, - "name": "VariableDeclaration", - "src": "1052:16:0" - }, - { - "attributes": { - "constant": false, - "name": "sigV", - "scope": 136, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" }, - "id": 99, - "name": "ElementaryTypeName", - "src": "1070:5:0" - } - ], - "id": 100, - "name": "VariableDeclaration", - "src": "1070:10:0" - }, - { - "attributes": { - "constant": false, - "name": "sigR", - "scope": 136, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" }, - "id": 101, - "name": "ElementaryTypeName", - "src": "1082:7:0" - } - ], - "id": 102, - "name": "VariableDeclaration", - "src": "1082:12:0" - }, - { - "attributes": { - "constant": false, - "name": "sigS", - "scope": 136, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" + { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" }, - "id": 103, - "name": "ElementaryTypeName", - "src": "1096:7:0" - } - ], - "id": 104, - "name": "VariableDeclaration", - "src": "1096:12:0" - }, - { - "attributes": { - "constant": false, - "name": "hash", - "scope": 136, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 105, - "name": "ElementaryTypeName", - "src": "1110:7:0" - } - ], - "id": 106, - "name": "VariableDeclaration", - "src": "1110:12:0" - } - ], - "id": 107, - "name": "ParameterList", - "src": "1051:72:0" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 136, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 108, - "name": "ElementaryTypeName", - "src": "1141:7:0" + { + "typeIdentifier": "t_stringliteral_497a2d03cc86298e55cb693e1ab1fe854c7b50c0aa5aad6229104986e0bf69c9", + "typeString": "literal_string \"changeOwner\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 226, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "1987:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" } - ], - "id": 109, - "name": "VariableDeclaration", - "src": "1141:7:0" - } - ], - "id": 110, - "name": "ParameterList", - "src": "1140:9:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 112 - ] }, - "children": [ + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1987:103:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1972:118:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "constant": false, - "name": "signer", - "scope": 136, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 111, - "name": "ElementaryTypeName", - "src": "1156:7:0" - } - ], - "id": 112, - "name": "VariableDeclaration", - "src": "1156:14:0" + "argumentTypes": null, + "id": 245, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "2108:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": false - }, - "children": [ + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 761, - "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)", - "value": "ecrecover" - }, - "id": 113, - "name": "Identifier", - "src": "1173:9:0" + "argumentTypes": null, + "id": 247, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "2133:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 106, - "type": "bytes32", - "value": "hash" - }, - "id": 114, - "name": "Identifier", - "src": "1183:4:0" + "argumentTypes": null, + "id": 248, + "name": "sigV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 215, + "src": "2143:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 100, - "type": "uint8", - "value": "sigV" - }, - "id": 115, - "name": "Identifier", - "src": "1189:4:0" + "argumentTypes": null, + "id": 249, + "name": "sigR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 217, + "src": "2149:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 102, - "type": "bytes32", - "value": "sigR" - }, - "id": 116, - "name": "Identifier", - "src": "1195:4:0" + "argumentTypes": null, + "id": 250, + "name": "sigS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 219, + "src": "2155:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 104, - "type": "bytes32", - "value": "sigS" - }, - "id": 117, - "name": "Identifier", - "src": "1201:4:0" + "argumentTypes": null, + "id": 251, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 225, + "src": "2161:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } } ], - "id": 118, - "name": "FunctionCall", - "src": "1173:33:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 246, + "name": "checkSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "2118:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" + } + }, + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2118:48:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 253, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 221, + "src": "2168:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 119, - "name": "VariableDeclarationStatement", - "src": "1156:50:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 244, + "name": "changeOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 196, + 211 + ], + "referencedDeclaration": 196, + "src": "2096:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address,address)" + } + }, + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2096:81:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "children": [ - { - "attributes": { + "id": 255, + "nodeType": "ExpressionStatement", + "src": "2096:81:0" + } + ] + }, + "documentation": null, + "id": 257, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "changeOwnerSigned", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 213, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "1883:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1883:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 215, + "name": "sigV", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "1901:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 214, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1901:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 217, + "name": "sigR", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "1913:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 216, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1913:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 219, + "name": "sigS", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "1927:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 218, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1927:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 221, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "1941:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 220, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1941:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1882:76:0" + }, + "payable": false, + "returnParameters": { + "id": 223, + "nodeType": "ParameterList", + "parameters": [], + "src": "1966:0:0" + }, + "scope": 706, + "src": "1856:326:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 307, + "nodeType": "Block", + "src": "2331:218:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 274, + "name": "delegates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "2337:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" + } + }, + "id": 280, + "indexExpression": { + "argumentTypes": null, + "id": 275, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "2347:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "isStructConstructorCall": false, "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false + "nodeType": "IndexAccess", + "src": "2337:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" + } }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 771, - "type": "function (bool) pure", - "value": "require" - }, - "id": 120, - "name": "Identifier", - "src": "1212:7:0" - }, - { - "attributes": { + "id": 281, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "==", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 112, - "type": "address", - "value": "signer" - }, - "id": 121, - "name": "Identifier", - "src": "1220:6:0" - }, + "id": 277, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 263, + "src": "2367:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 96, - "type": "function (address) view returns (address)", - "value": "identityOwner" - }, - "id": 122, - "name": "Identifier", - "src": "1230:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 98, - "type": "address", - "value": "identity" - }, - "id": 123, - "name": "Identifier", - "src": "1244:8:0" - } - ], - "id": 124, - "name": "FunctionCall", - "src": "1230:23:0" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } ], - "id": 125, - "name": "BinaryOperation", - "src": "1220:33:0" - } - ], - "id": 126, - "name": "FunctionCall", - "src": "1212:42:0" - } - ], - "id": 127, - "name": "ExpressionStatement", - "src": "1212:42:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, + "id": 276, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "2357:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 278, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 21, - "type": "mapping(address => uint256)", - "value": "nonce" - }, - "id": 128, - "name": "Identifier", - "src": "1260:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 98, - "type": "address", - "value": "identity" - }, - "id": 129, - "name": "Identifier", - "src": "1266:8:0" - } - ], - "id": 130, - "name": "IndexAccess", - "src": "1260:15:0" + "names": [], + "nodeType": "FunctionCall", + "src": "2357:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } - ], - "id": 131, - "name": "UnaryOperation", - "src": "1260:17:0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2337:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 282, + "indexExpression": { + "argumentTypes": null, + "id": 279, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "2382:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2337:54:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 283, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "2394:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 284, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 267, + "src": "2400:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2394:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 132, - "name": "ExpressionStatement", - "src": "1260:17:0" - }, - { - "attributes": { - "functionReturnParameters": 110 }, - "children": [ + "src": "2337:71:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 287, + "nodeType": "ExpressionStatement", + "src": "2337:71:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 289, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "2438:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 290, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 263, + "src": "2448:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 291, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "2462:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 112, - "type": "address", - "value": "signer" + "id": 292, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "2472:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "id": 133, - "name": "Identifier", - "src": "1290:6:0" - } - ], - "id": 134, - "name": "Return", - "src": "1283:13:0" - } - ], - "id": 135, - "name": "Block", - "src": "1150:151:0" - } - ], - "id": 136, - "name": "FunctionDefinition", - "src": "1028:273:0" - }, - { - "attributes": { - "constant": true, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "validDelegate", - "payable": false, - "scope": 756, - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 166, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 293, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 267, + "src": "2478:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2472:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 295, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "2488:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 297, + "indexExpression": { + "argumentTypes": null, + "id": 296, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "2496:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "id": 137, - "name": "ElementaryTypeName", - "src": "1328:7:0" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2488:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 138, - "name": "VariableDeclaration", - "src": "1328:16:0" - }, - { - "attributes": { - "constant": false, - "name": "delegateType", - "scope": 166, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string storage pointer" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - "id": 139, - "name": "ElementaryTypeName", - "src": "1346:6:0" + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 288, + "name": "DIDDelegateChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "2419:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,address,uint256,uint256)" } - ], - "id": 140, - "name": "VariableDeclaration", - "src": "1346:19:0" + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2419:87:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { - "constant": false, - "name": "delegate", - "scope": 166, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" + "id": 299, + "nodeType": "EmitStatement", + "src": "2414:92:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 300, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "2512:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 302, + "indexExpression": { + "argumentTypes": null, + "id": 301, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "2520:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2512:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 141, - "name": "ElementaryTypeName", - "src": "1367:7:0" + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 303, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "2532:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2532:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 142, - "name": "VariableDeclaration", - "src": "1367:16:0" - } - ], - "id": 143, - "name": "ParameterList", - "src": "1327:57:0" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 166, - "stateVariable": false, - "storageLocation": "default", - "type": "bool", - "value": null, - "visibility": "internal" }, - "children": [ - { - "attributes": { - "name": "bool", - "type": "bool" - }, - "id": 144, - "name": "ElementaryTypeName", - "src": "1405:4:0" - } - ], - "id": 145, - "name": "VariableDeclaration", - "src": "1405:4:0" - } - ], - "id": 146, - "name": "ParameterList", - "src": "1404:6:0" - }, + "src": "2512:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 306, + "nodeType": "ExpressionStatement", + "src": "2512:32:0" + } + ] + }, + "documentation": null, + "id": 308, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ { - "children": [ + "arguments": [ { - "attributes": { - "assignments": [ - 148 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "validity", - "scope": 166, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 147, - "name": "ElementaryTypeName", - "src": "1417:4:0" - } - ], - "id": 148, - "name": "VariableDeclaration", - "src": "1417:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(address => uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(bytes32 => mapping(address => uint256))" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 13, - "type": "mapping(address => mapping(bytes32 => mapping(address => uint256)))", - "value": "delegates" - }, - "id": 149, - "name": "Identifier", - "src": "1433:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 138, - "type": "address", - "value": "identity" - }, - "id": 150, - "name": "Identifier", - "src": "1443:8:0" - } - ], - "id": 151, - "name": "IndexAccess", - "src": "1433:19:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes32", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 762, - "type": "function () pure returns (bytes32)", - "value": "keccak256" - }, - "id": 152, - "name": "Identifier", - "src": "1453:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 140, - "type": "string memory", - "value": "delegateType" - }, - "id": 153, - "name": "Identifier", - "src": "1463:12:0" - } - ], - "id": 154, - "name": "FunctionCall", - "src": "1453:23:0" - } - ], - "id": 155, - "name": "IndexAccess", - "src": "1433:44:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 142, - "type": "address", - "value": "delegate" - }, - "id": 156, - "name": "Identifier", - "src": "1478:8:0" - } - ], - "id": 157, - "name": "IndexAccess", - "src": "1433:54:0" - } - ], - "id": 158, - "name": "VariableDeclarationStatement", - "src": "1417:70:0" + "argumentTypes": null, + "id": 270, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "2314:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "functionReturnParameters": 146 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": ">=", - "type": "bool" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 148, - "type": "uint256", - "value": "validity" - }, - "id": 159, - "name": "Identifier", - "src": "1501:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 760, - "type": "block", - "value": "block" - }, - "id": 160, - "name": "Identifier", - "src": "1513:5:0" - } - ], - "id": 161, - "name": "MemberAccess", - "src": "1513:15:0" - } - ], - "id": 162, - "name": "BinaryOperation", - "src": "1501:27:0" - } - ], - "id": 163, - "name": "TupleExpression", - "src": "1500:29:0" - } - ], - "id": 164, - "name": "Return", - "src": "1493:36:0" + "argumentTypes": null, + "id": 271, + "name": "actor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "2324:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 165, - "name": "Block", - "src": "1411:123:0" + "id": 272, + "modifierName": { + "argumentTypes": null, + "id": 269, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "2304:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_address_$", + "typeString": "modifier (address,address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "2304:26:0" } ], - "id": 166, - "name": "FunctionDefinition", - "src": "1305:229:0" + "name": "addDelegate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 259, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 308, + "src": "2207:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 258, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2207:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 261, + "name": "actor", + "nodeType": "VariableDeclaration", + "scope": 308, + "src": "2225:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2225:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 263, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 308, + "src": "2240:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 262, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2240:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 265, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 308, + "src": "2262:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 264, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2262:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 267, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 308, + "src": "2280:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 266, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2280:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2206:88:0" + }, + "payable": false, + "returnParameters": { + "id": 273, + "nodeType": "ParameterList", + "parameters": [], + "src": "2331:0:0" + }, + "scope": 706, + "src": "2186:363:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" }, { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "validDelegateSignature", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 208, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "body": { + "id": 328, + "nodeType": "Block", + "src": "2654:78:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 167, - "name": "ElementaryTypeName", - "src": "1570:7:0" - } - ], - "id": 168, - "name": "VariableDeclaration", - "src": "1570:16:0" - }, - { - "attributes": { - "constant": false, - "name": "delegateType", - "scope": 208, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "id": 320, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 310, + "src": "2672:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "string", - "type": "string storage pointer" + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 321, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 721, + "src": "2682:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } }, - "id": 169, - "name": "ElementaryTypeName", - "src": "1588:6:0" - } - ], - "id": 170, - "name": "VariableDeclaration", - "src": "1588:19:0" - }, - { - "attributes": { - "constant": false, - "name": "sigV", - "scope": 208, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2682:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 171, - "name": "ElementaryTypeName", - "src": "1609:5:0" - } - ], - "id": 172, - "name": "VariableDeclaration", - "src": "1609:10:0" - }, - { - "attributes": { - "constant": false, - "name": "sigR", - "scope": 208, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "id": 323, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 312, + "src": "2694:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 173, - "name": "ElementaryTypeName", - "src": "1621:7:0" + "argumentTypes": null, + "id": 324, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 314, + "src": "2708:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 325, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "2718:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 174, - "name": "VariableDeclaration", - "src": "1621:12:0" - }, - { - "attributes": { - "constant": false, - "name": "sigS", - "scope": 208, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 175, - "name": "ElementaryTypeName", - "src": "1635:7:0" + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 319, + "name": "addDelegate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 308, + 329 + ], + "referencedDeclaration": 308, + "src": "2660:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,bytes32,address,uint256)" } - ], - "id": 176, - "name": "VariableDeclaration", - "src": "1635:12:0" + }, + "id": 326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2660:67:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { + "id": 327, + "nodeType": "ExpressionStatement", + "src": "2660:67:0" + } + ] + }, + "documentation": null, + "id": 329, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "addDelegate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 310, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "2574:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 309, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2574:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 312, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "2592:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 311, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2592:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 314, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "2614:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2614:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 316, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "2632:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 315, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2632:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2573:73:0" + }, + "payable": false, + "returnParameters": { + "id": 318, + "nodeType": "ParameterList", + "parameters": [], + "src": "2654:0:0" + }, + "scope": 706, + "src": "2553:179:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 382, + "nodeType": "Block", + "src": "2883:264:0", + "statements": [ + { + "assignments": [ + 347 + ], + "declarations": [ + { "constant": false, + "id": 347, "name": "hash", - "scope": 208, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 177, - "name": "ElementaryTypeName", - "src": "1649:7:0" - } - ], - "id": 178, - "name": "VariableDeclaration", - "src": "1649:12:0" - } - ], - "id": 179, - "name": "ParameterList", - "src": "1569:93:0" - }, - { - "children": [ - { - "attributes": { - "constant": false, - "name": "", - "scope": 208, + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2889:12:0", "stateVariable": false, "storageLocation": "default", - "type": "address", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 346, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2889:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, "value": null, "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 180, - "name": "ElementaryTypeName", - "src": "1678:7:0" - } - ], - "id": 181, - "name": "VariableDeclaration", - "src": "1678:7:0" - } - ], - "id": 182, - "name": "ParameterList", - "src": "1677:9:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 184 - ] - }, - "children": [ + } + ], + "id": 367, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "constant": false, - "name": "signer", - "scope": 208, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "hexValue": "30783139", + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2919:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" }, - "id": 183, - "name": "ElementaryTypeName", - "src": "1693:7:0" + "value": "0x19" } ], - "id": 184, - "name": "VariableDeclaration", - "src": "1693:14:0" - }, - { - "attributes": { - "argumentTypes": null, + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 349, "isConstant": false, "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, + "isPure": true, "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 761, - "type": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)", - "value": "ecrecover" - }, - "id": 185, - "name": "Identifier", - "src": "1710:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 178, - "type": "bytes32", - "value": "hash" - }, - "id": 186, - "name": "Identifier", - "src": "1720:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 172, - "type": "uint8", - "value": "sigV" - }, - "id": 187, - "name": "Identifier", - "src": "1726:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 174, - "type": "bytes32", - "value": "sigR" - }, - "id": 188, - "name": "Identifier", - "src": "1732:4:0" + "nodeType": "ElementaryTypeNameExpression", + "src": "2914:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, + "typeName": "byte" + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2914:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 176, - "type": "bytes32", - "value": "sigS" + "argumentTypes": null, + "hexValue": "30", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2931:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "id": 189, - "name": "Identifier", - "src": "1738:4:0" + "value": "0" } ], - "id": 190, - "name": "FunctionCall", - "src": "1710:33:0" - } - ], - "id": 191, - "name": "VariableDeclarationStatement", - "src": "1693:50:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 352, "isConstant": false, "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, + "isPure": true, "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 771, - "type": "function (bool) pure", - "value": "require" - }, - "id": 192, - "name": "Identifier", - "src": "1749:7:0" + "nodeType": "ElementaryTypeNameExpression", + "src": "2926:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bool", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 166, - "type": "function (address,string memory,address) view returns (bool)", - "value": "validDelegate" - }, - "id": 193, - "name": "Identifier", - "src": "1757:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 168, - "type": "address", - "value": "identity" - }, - "id": 194, - "name": "Identifier", - "src": "1771:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 170, - "type": "string memory", - "value": "delegateType" - }, - "id": 195, - "name": "Identifier", - "src": "1781:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 184, - "type": "address", - "value": "signer" - }, - "id": 196, - "name": "Identifier", - "src": "1795:6:0" - } - ], - "id": 197, - "name": "FunctionCall", - "src": "1757:45:0" - } - ], - "id": 198, - "name": "FunctionCall", - "src": "1749:54:0" - } - ], - "id": 199, - "name": "ExpressionStatement", - "src": "1749:54:0" - }, - { - "children": [ + "typeName": "byte" + }, + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2926:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 355, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "2935:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + } + }, { - "attributes": { + "argumentTypes": null, + "baseExpression": { "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "++", - "prefix": false, - "type": "uint256" + "id": 356, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "2941:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } }, - "children": [ - { - "attributes": { + "id": 360, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 21, - "type": "mapping(address => uint256)", - "value": "nonce" - }, - "id": 200, - "name": "Identifier", - "src": "1809:5:0" - }, + "id": 358, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "2961:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 184, - "type": "address", - "value": "signer" - }, - "id": 201, - "name": "Identifier", - "src": "1815:6:0" + "typeIdentifier": "t_address", + "typeString": "address" } ], - "id": 202, - "name": "IndexAccess", - "src": "1809:13:0" + "id": 357, + "name": "identityOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "2947:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view returns (address)" + } + }, + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2947:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 203, - "name": "UnaryOperation", - "src": "1809:15:0" - } - ], - "id": 204, - "name": "ExpressionStatement", - "src": "1809:15:0" - }, - { - "attributes": { - "functionReturnParameters": 182 - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 184, - "type": "address", - "value": "signer" }, - "id": 205, - "name": "Identifier", - "src": "1837:6:0" - } - ], - "id": 206, - "name": "Return", - "src": "1830:13:0" - } - ], - "id": 207, - "name": "Block", - "src": "1687:161:0" - } - ], - "id": 208, - "name": "FunctionDefinition", - "src": "1538:310:0" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "name": "changeOwner", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 243, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2941:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 361, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "2973:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "hexValue": "61646444656c6567617465", + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2983:13:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_debebbcfc53a895bddcfa7790235910fa4c752e6acb9c798d39f50a51a8429a2", + "typeString": "literal_string \"addDelegate\"" }, - "id": 209, - "name": "ElementaryTypeName", - "src": "1873:7:0" + "value": "addDelegate" + }, + { + "argumentTypes": null, + "id": 363, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 339, + "src": "2998:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 364, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 341, + "src": "3012:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 365, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 343, + "src": "3022:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 210, - "name": "VariableDeclaration", - "src": "1873:16:0" - }, - { - "attributes": { - "constant": false, - "name": "actor", - "scope": 243, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 211, - "name": "ElementaryTypeName", - "src": "1891:7:0" + { + "typeIdentifier": "t_stringliteral_debebbcfc53a895bddcfa7790235910fa4c752e6acb9c798d39f50a51a8429a2", + "typeString": "literal_string \"addDelegate\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 348, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "2904:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" } - ], - "id": 212, - "name": "VariableDeclaration", - "src": "1891:13:0" - }, - { - "attributes": { - "constant": false, - "name": "newOwner", - "scope": 243, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" }, - "children": [ + "id": 366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2904:127:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2889:142:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "id": 369, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "3049:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 371, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "3074:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 372, + "name": "sigV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 333, + "src": "3084:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 373, + "name": "sigR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "3090:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 374, + "name": "sigS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 337, + "src": "3096:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 375, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "3102:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 370, + "name": "checkSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "3059:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" + } }, - "id": 213, - "name": "ElementaryTypeName", - "src": "1906:7:0" + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3059:48:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 377, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 339, + "src": "3109:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 378, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 341, + "src": "3123:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 379, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 343, + "src": "3133:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 214, - "name": "VariableDeclaration", - "src": "1906:16:0" - } - ], - "id": 215, - "name": "ParameterList", - "src": "1872:51:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 220, - "name": "ParameterList", - "src": "1960:0:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } ], - "referencedDeclaration": 37, - "type": "modifier (address,address)", - "value": "onlyOwner" - }, - "id": 216, - "name": "Identifier", - "src": "1933:9:0" - }, - { - "attributes": { - "argumentTypes": null, + "id": 368, + "name": "addDelegate", + "nodeType": "Identifier", "overloadedDeclarations": [ - null + 308, + 329 ], - "referencedDeclaration": 210, - "type": "address", - "value": "identity" + "referencedDeclaration": 308, + "src": "3037:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,bytes32,address,uint256)" + } }, - "id": 217, - "name": "Identifier", - "src": "1943:8:0" + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3037:105:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { + "id": 381, + "nodeType": "ExpressionStatement", + "src": "3037:105:0" + } + ] + }, + "documentation": null, + "id": 383, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "addDelegateSigned", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 331, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2763:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 330, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2763:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 333, + "name": "sigV", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2781:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 332, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2781:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 335, + "name": "sigR", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2793:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 334, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2793:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 337, + "name": "sigS", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2807:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 336, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2807:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 339, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2821:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 338, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2821:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 341, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2843:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 340, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2843:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 343, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2861:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 342, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2861:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2762:113:0" + }, + "payable": false, + "returnParameters": { + "id": 345, + "nodeType": "ParameterList", + "parameters": [], + "src": "2883:0:0" + }, + "scope": 706, + "src": "2736:411:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 427, + "nodeType": "Block", + "src": "3284:196:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 212, - "type": "address", - "value": "actor" - }, - "id": 218, - "name": "Identifier", - "src": "1953:5:0" - } - ], - "id": 219, - "name": "ModifierInvocation", - "src": "1933:26:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { + "baseExpression": { + "argumentTypes": null, + "baseExpression": { "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 398, + "name": "delegates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "3290:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" + } + }, + "id": 404, + "indexExpression": { + "argumentTypes": null, + "id": 399, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3300:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, "lValueRequested": false, - "operator": "=", - "type": "address" + "nodeType": "IndexAccess", + "src": "3290:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" + } }, - "children": [ - { - "attributes": { + "id": 405, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 5, - "type": "mapping(address => address)", - "value": "owners" - }, - "id": 221, - "name": "Identifier", - "src": "1966:6:0" - }, + "id": 401, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 389, + "src": "3320:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 210, - "type": "address", - "value": "identity" - }, - "id": 222, - "name": "Identifier", - "src": "1973:8:0" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } ], - "id": 223, - "name": "IndexAccess", - "src": "1966:16:0" + "id": 400, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "3310:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 214, - "type": "address", - "value": "newOwner" - }, - "id": 224, - "name": "Identifier", - "src": "1985:8:0" - } - ], - "id": 225, - "name": "Assignment", - "src": "1966:27:0" - } - ], - "id": 226, - "name": "ExpressionStatement", - "src": "1966:27:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, + "id": 402, "isConstant": false, "isLValue": false, "isPure": false, - "isStructConstructorCall": false, + "kind": "functionCall", "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 45, - "type": "function (address,address,uint256)", - "value": "DIDOwnerChanged" - }, - "id": 227, - "name": "Identifier", - "src": "1999:15:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 210, - "type": "address", - "value": "identity" - }, - "id": 228, - "name": "Identifier", - "src": "2015:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 214, - "type": "address", - "value": "newOwner" - }, - "id": 229, - "name": "Identifier", - "src": "2025:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 17, - "type": "mapping(address => uint256)", - "value": "changed" - }, - "id": 230, - "name": "Identifier", - "src": "2035:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 210, - "type": "address", - "value": "identity" - }, - "id": 231, - "name": "Identifier", - "src": "2043:8:0" - } - ], - "id": 232, - "name": "IndexAccess", - "src": "2035:17:0" + "names": [], + "nodeType": "FunctionCall", + "src": "3310:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } - ], - "id": 233, - "name": "FunctionCall", - "src": "1999:54:0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3290:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 406, + "indexExpression": { + "argumentTypes": null, + "id": 403, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 391, + "src": "3335:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3290:54:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 234, - "name": "ExpressionStatement", - "src": "1999:54:0" + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 407, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "3347:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3290:60:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "children": [ + "id": 409, + "nodeType": "ExpressionStatement", + "src": "3290:60:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 17, - "type": "mapping(address => uint256)", - "value": "changed" - }, - "id": 235, - "name": "Identifier", - "src": "2059:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 210, - "type": "address", - "value": "identity" - }, - "id": 236, - "name": "Identifier", - "src": "2067:8:0" - } - ], - "id": 237, - "name": "IndexAccess", - "src": "2059:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "number", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 760, - "type": "block", - "value": "block" - }, - "id": 238, - "name": "Identifier", - "src": "2079:5:0" - } - ], - "id": 239, - "name": "MemberAccess", - "src": "2079:12:0" + "argumentTypes": null, + "id": 411, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3380:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 412, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 389, + "src": "3390:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 413, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 391, + "src": "3404:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 414, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "3414:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 415, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "3419:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } - ], - "id": 240, - "name": "Assignment", - "src": "2059:32:0" + }, + "id": 417, + "indexExpression": { + "argumentTypes": null, + "id": 416, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3427:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3419:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 241, - "name": "ExpressionStatement", - "src": "2059:32:0" - } - ], - "id": 242, - "name": "Block", - "src": "1960:136:0" - } - ], - "id": 243, - "name": "FunctionDefinition", - "src": "1852:244:0" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "changeOwner", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 258, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - "id": 244, - "name": "ElementaryTypeName", - "src": "2121:7:0" + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 410, + "name": "DIDDelegateChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "3361:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,address,uint256,uint256)" } - ], - "id": 245, - "name": "VariableDeclaration", - "src": "2121:16:0" + }, + "id": 418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3361:76:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { - "constant": false, - "name": "newOwner", - "scope": 258, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" + "id": 419, + "nodeType": "EmitStatement", + "src": "3356:81:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 420, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "3443:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 422, + "indexExpression": { + "argumentTypes": null, + "id": 421, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3451:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3443:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 246, - "name": "ElementaryTypeName", - "src": "2139:7:0" + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 423, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "3463:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3463:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 247, - "name": "VariableDeclaration", - "src": "2139:16:0" - } - ], - "id": 248, - "name": "ParameterList", - "src": "2120:36:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 249, - "name": "ParameterList", - "src": "2164:0:0" - }, + }, + "src": "3443:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 426, + "nodeType": "ExpressionStatement", + "src": "3443:32:0" + } + ] + }, + "documentation": null, + "id": 428, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ { - "children": [ + "arguments": [ { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - 243, - 258 - ], - "referencedDeclaration": 243, - "type": "function (address,address,address)", - "value": "changeOwner" - }, - "id": 250, - "name": "Identifier", - "src": "2170:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 245, - "type": "address", - "value": "identity" - }, - "id": 251, - "name": "Identifier", - "src": "2182:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 768, - "type": "msg", - "value": "msg" - }, - "id": 252, - "name": "Identifier", - "src": "2192:3:0" - } - ], - "id": 253, - "name": "MemberAccess", - "src": "2192:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 247, - "type": "address", - "value": "newOwner" - }, - "id": 254, - "name": "Identifier", - "src": "2204:8:0" - } - ], - "id": 255, - "name": "FunctionCall", - "src": "2170:43:0" - } - ], - "id": 256, - "name": "ExpressionStatement", - "src": "2170:43:0" + "argumentTypes": null, + "id": 394, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3267:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 395, + "name": "actor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "3277:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 257, - "name": "Block", - "src": "2164:54:0" + "id": 396, + "modifierName": { + "argumentTypes": null, + "id": 393, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "3257:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_address_$", + "typeString": "modifier (address,address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3257:26:0" } ], - "id": 258, - "name": "FunctionDefinition", - "src": "2100:118:0" + "name": "revokeDelegate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 385, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "3175:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 384, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3175:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "name": "actor", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "3193:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3193:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 389, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "3208:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 388, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3208:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 391, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "3230:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 390, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3230:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3174:73:0" + }, + "payable": false, + "returnParameters": { + "id": 397, + "nodeType": "ParameterList", + "parameters": [], + "src": "3284:0:0" + }, + "scope": 706, + "src": "3151:329:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" }, { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "changeOwnerSigned", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 304, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "body": { + "id": 445, + "nodeType": "Block", + "src": "3573:71:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 259, - "name": "ElementaryTypeName", - "src": "2249:7:0" - } - ], - "id": 260, - "name": "VariableDeclaration", - "src": "2249:16:0" - }, - { - "attributes": { - "constant": false, - "name": "sigV", - "scope": 304, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "id": 438, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 430, + "src": "3594:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "uint8", - "type": "uint8" + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 439, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 721, + "src": "3604:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } }, - "id": 261, - "name": "ElementaryTypeName", - "src": "2267:5:0" - } - ], - "id": 262, - "name": "VariableDeclaration", - "src": "2267:10:0" - }, - { - "attributes": { - "constant": false, - "name": "sigR", - "scope": 304, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3604:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 263, - "name": "ElementaryTypeName", - "src": "2279:7:0" + "argumentTypes": null, + "id": 441, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "3616:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 442, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 434, + "src": "3630:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 264, - "name": "VariableDeclaration", - "src": "2279:12:0" - }, - { - "attributes": { - "constant": false, - "name": "sigS", - "scope": 304, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 265, - "name": "ElementaryTypeName", - "src": "2293:7:0" + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 437, + "name": "revokeDelegate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 428, + 446 + ], + "referencedDeclaration": 428, + "src": "3579:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (address,address,bytes32,address)" } - ], - "id": 266, - "name": "VariableDeclaration", - "src": "2293:12:0" + }, + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3579:60:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { + "id": 444, + "nodeType": "ExpressionStatement", + "src": "3579:60:0" + } + ] + }, + "documentation": null, + "id": 446, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "revokeDelegate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 435, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 430, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 446, + "src": "3508:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 429, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3508:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 432, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 446, + "src": "3526:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 431, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3526:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 434, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 446, + "src": "3548:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 433, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3548:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3507:58:0" + }, + "payable": false, + "returnParameters": { + "id": 436, + "nodeType": "ParameterList", + "parameters": [], + "src": "3573:0:0" + }, + "scope": 706, + "src": "3484:160:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 495, + "nodeType": "Block", + "src": "3783:250:0", + "statements": [ + { + "assignments": [ + 462 + ], + "declarations": [ + { "constant": false, - "name": "newOwner", - "scope": 304, + "id": 462, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3789:12:0", "stateVariable": false, "storageLocation": "default", - "type": "address", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 461, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3789:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, "value": null, "visibility": "internal" - }, - "children": [ + } + ], + "id": 481, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 267, - "name": "ElementaryTypeName", - "src": "2307:7:0" - } - ], - "id": 268, - "name": "VariableDeclaration", - "src": "2307:16:0" - } - ], - "id": 269, - "name": "ParameterList", - "src": "2248:76:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 270, - "name": "ParameterList", - "src": "2332:0:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 272 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "hash", - "scope": 304, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "bytes32", - "type": "bytes32" + "argumentTypes": null, + "hexValue": "30783139", + "id": 465, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3819:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" }, - "id": 271, - "name": "ElementaryTypeName", - "src": "2338:7:0" + "value": "0x19" } ], - "id": 272, - "name": "VariableDeclaration", - "src": "2338:12:0" - }, - { - "attributes": { - "argumentTypes": null, + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 464, "isConstant": false, "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, + "isPure": true, "lValueRequested": false, - "names": [ - null - ], - "type": "bytes32", - "type_conversion": false + "nodeType": "ElementaryTypeNameExpression", + "src": "3814:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" }, - "children": [ + "id": 466, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3814:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$756", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_497a2d03cc86298e55cb693e1ab1fe854c7b50c0aa5aad6229104986e0bf69c9", - "typeString": "literal_string \"changeOwner\"" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 762, - "type": "function () pure returns (bytes32)", - "value": "keccak256" + "argumentTypes": null, + "hexValue": "30", + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3831:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "id": 273, - "name": "Identifier", - "src": "2353:9:0" + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 467, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3826:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, - { - "attributes": { + "typeName": "byte" + }, + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3826:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 470, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "3835:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 471, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "3841:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 475, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes1", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes1)", - "value": "byte" - }, - "id": 274, - "name": "ElementaryTypeNameExpression", - "src": "2363:4:0" - }, + "id": 473, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "3861:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "argumentTypes": null, - "hexvalue": "30783139", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 25", - "value": "0x19" - }, - "id": 275, - "name": "Literal", - "src": "2368:4:0" + "typeIdentifier": "t_address", + "typeString": "address" } ], - "id": 276, - "name": "FunctionCall", - "src": "2363:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes1", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes1)", - "value": "byte" - }, - "id": 277, - "name": "ElementaryTypeNameExpression", - "src": "2375:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 278, - "name": "Literal", - "src": "2380:1:0" - } - ], - "id": 279, - "name": "FunctionCall", - "src": "2375:7:0" + "id": 472, + "name": "identityOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "3847:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view returns (address)" + } }, + "id": 474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3847:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3841:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 476, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "3873:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "7265766f6b6544656c6567617465", + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3883:16:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f63fea8fc7bd9fe254f7933b81fa1716b5a073ddd1aa14e432aa87d81784f86c", + "typeString": "literal_string \"revokeDelegate\"" + }, + "value": "revokeDelegate" + }, + { + "argumentTypes": null, + "id": 478, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 456, + "src": "3901:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 479, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "3915:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_f63fea8fc7bd9fe254f7933b81fa1716b5a073ddd1aa14e432aa87d81784f86c", + "typeString": "literal_string \"revokeDelegate\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 463, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "3804:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3804:120:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3789:135:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 483, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "3945:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 779, - "type": "contract EthereumDIDRegistry", - "value": "this" - }, - "id": 280, - "name": "Identifier", - "src": "2384:4:0" + "argumentTypes": null, + "id": 485, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "3970:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 21, - "type": "mapping(address => uint256)", - "value": "nonce" - }, - "id": 281, - "name": "Identifier", - "src": "2390:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 96, - "type": "function (address) view returns (address)", - "value": "identityOwner" - }, - "id": 282, - "name": "Identifier", - "src": "2396:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 260, - "type": "address", - "value": "identity" - }, - "id": 283, - "name": "Identifier", - "src": "2410:8:0" - } - ], - "id": 284, - "name": "FunctionCall", - "src": "2396:23:0" - } - ], - "id": 285, - "name": "IndexAccess", - "src": "2390:30:0" + "argumentTypes": null, + "id": 486, + "name": "sigV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 450, + "src": "3980:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 260, - "type": "address", - "value": "identity" - }, - "id": 286, - "name": "Identifier", - "src": "2422:8:0" + "argumentTypes": null, + "id": 487, + "name": "sigR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "3986:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "hexvalue": "6368616e67654f776e6572", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"changeOwner\"", - "value": "changeOwner" - }, - "id": 287, - "name": "Literal", - "src": "2432:13:0" + "argumentTypes": null, + "id": 488, + "name": "sigS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 454, + "src": "3992:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 268, - "type": "address", - "value": "newOwner" - }, - "id": 288, - "name": "Identifier", - "src": "2447:8:0" + "argumentTypes": null, + "id": 489, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "3998:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } } ], - "id": 289, - "name": "FunctionCall", - "src": "2353:103:0" - } - ], - "id": 290, - "name": "VariableDeclarationStatement", - "src": "2338:118:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - 243, - 258 - ], - "referencedDeclaration": 243, - "type": "function (address,address,address)", - "value": "changeOwner" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 291, - "name": "Identifier", - "src": "2463:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 260, - "type": "address", - "value": "identity" + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, - "id": 292, - "name": "Identifier", - "src": "2475:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": false + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 136, - "type": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)", - "value": "checkSignature" - }, - "id": 293, - "name": "Identifier", - "src": "2485:14:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 260, - "type": "address", - "value": "identity" - }, - "id": 294, - "name": "Identifier", - "src": "2500:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 262, - "type": "uint8", - "value": "sigV" - }, - "id": 295, - "name": "Identifier", - "src": "2510:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 264, - "type": "bytes32", - "value": "sigR" - }, - "id": 296, - "name": "Identifier", - "src": "2516:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 266, - "type": "bytes32", - "value": "sigS" - }, - "id": 297, - "name": "Identifier", - "src": "2522:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 272, - "type": "bytes32", - "value": "hash" - }, - "id": 298, - "name": "Identifier", - "src": "2528:4:0" - } - ], - "id": 299, - "name": "FunctionCall", - "src": "2485:48:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 268, - "type": "address", - "value": "newOwner" + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - "id": 300, - "name": "Identifier", - "src": "2535:8:0" + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 484, + "name": "checkSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "3955:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" } - ], - "id": 301, - "name": "FunctionCall", - "src": "2463:81:0" + }, + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3955:48:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 491, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 456, + "src": "4005:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 492, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "4019:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 302, - "name": "ExpressionStatement", - "src": "2463:81:0" - } - ], - "id": 303, - "name": "Block", - "src": "2332:217:0" - } - ], - "id": 304, - "name": "FunctionDefinition", - "src": "2222:327:0" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "name": "addDelegate", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 357, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 305, - "name": "ElementaryTypeName", - "src": "2574:7:0" + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 482, + "name": "revokeDelegate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 428, + 446 + ], + "referencedDeclaration": 428, + "src": "3930:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (address,address,bytes32,address)" } - ], - "id": 306, - "name": "VariableDeclaration", - "src": "2574:16:0" - }, - { - "attributes": { - "constant": false, - "name": "actor", - "scope": 357, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" }, - "children": [ + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3930:98:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 494, + "nodeType": "ExpressionStatement", + "src": "3930:98:0" + } + ] + }, + "documentation": null, + "id": 496, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "revokeDelegateSigned", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 459, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 448, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3678:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 447, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3678:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 450, + "name": "sigV", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3696:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 449, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3696:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 452, + "name": "sigR", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3708:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 451, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3708:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 454, + "name": "sigS", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3722:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 453, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3722:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 456, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3736:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 455, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3736:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 458, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3758:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 457, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3758:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3677:98:0" + }, + "payable": false, + "returnParameters": { + "id": 460, + "nodeType": "ParameterList", + "parameters": [], + "src": "3783:0:0" + }, + "scope": 706, + "src": "3648:385:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 532, + "nodeType": "Block", + "src": "4171:131:0", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 514, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "4202:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 515, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "4212:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 516, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 504, + "src": "4218:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 307, - "name": "ElementaryTypeName", - "src": "2592:7:0" - } - ], - "id": 308, - "name": "VariableDeclaration", - "src": "2592:13:0" - }, - { - "attributes": { - "constant": false, - "name": "delegateType", - "scope": 357, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 517, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "4225:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 518, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "4231:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4225:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, { - "attributes": { - "name": "string", - "type": "string storage pointer" + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 520, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "4241:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 522, + "indexExpression": { + "argumentTypes": null, + "id": 521, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "4249:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "id": 309, - "name": "ElementaryTypeName", - "src": "2607:6:0" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4241:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 310, - "name": "VariableDeclaration", - "src": "2607:19:0" - }, - { - "attributes": { - "constant": false, - "name": "delegate", - "scope": 357, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" }, - "id": 311, - "name": "ElementaryTypeName", - "src": "2628:7:0" + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 513, + "name": "DIDAttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "4182:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,bytes memory,uint256,uint256)" } - ], - "id": 312, - "name": "VariableDeclaration", - "src": "2628:16:0" - }, - { - "attributes": { - "constant": false, - "name": "validity", - "scope": 357, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 313, - "name": "ElementaryTypeName", - "src": "2646:4:0" + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4182:77:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 524, + "nodeType": "EmitStatement", + "src": "4177:82:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 525, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "4265:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 527, + "indexExpression": { + "argumentTypes": null, + "id": 526, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "4273:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4265:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 314, - "name": "VariableDeclaration", - "src": "2646:13:0" - } - ], - "id": 315, - "name": "ParameterList", - "src": "2573:88:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 320, - "name": "ParameterList", - "src": "2698:0:0" - }, - { - "children": [ - { - "attributes": { + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 37, - "type": "modifier (address,address)", - "value": "onlyOwner" + "expression": { + "argumentTypes": null, + "id": 528, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "4285:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4285:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "id": 316, - "name": "Identifier", - "src": "2671:9:0" + "src": "4265:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, + "id": 531, + "nodeType": "ExpressionStatement", + "src": "4265:32:0" + } + ] + }, + "documentation": null, + "id": 533, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 306, - "type": "address", - "value": "identity" - }, - "id": 317, - "name": "Identifier", - "src": "2681:8:0" + "argumentTypes": null, + "id": 509, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "4154:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 308, - "type": "address", - "value": "actor" - }, - "id": 318, - "name": "Identifier", - "src": "2691:5:0" + "argumentTypes": null, + "id": 510, + "name": "actor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "4164:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 319, - "name": "ModifierInvocation", - "src": "2671:26:0" - }, - { - "children": [ - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(address => uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(bytes32 => mapping(address => uint256))" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 13, - "type": "mapping(address => mapping(bytes32 => mapping(address => uint256)))", - "value": "delegates" - }, - "id": 321, - "name": "Identifier", - "src": "2704:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 306, - "type": "address", - "value": "identity" - }, - "id": 322, - "name": "Identifier", - "src": "2714:8:0" - } - ], - "id": 327, - "name": "IndexAccess", - "src": "2704:19:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes32", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 762, - "type": "function () pure returns (bytes32)", - "value": "keccak256" - }, - "id": 323, - "name": "Identifier", - "src": "2724:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 310, - "type": "string memory", - "value": "delegateType" - }, - "id": 324, - "name": "Identifier", - "src": "2734:12:0" - } - ], - "id": 325, - "name": "FunctionCall", - "src": "2724:23:0" - } - ], - "id": 328, - "name": "IndexAccess", - "src": "2704:44:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 312, - "type": "address", - "value": "delegate" - }, - "id": 326, - "name": "Identifier", - "src": "2749:8:0" - } - ], - "id": 329, - "name": "IndexAccess", - "src": "2704:54:0" - }, - { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "+", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 760, - "type": "block", - "value": "block" - }, - "id": 330, - "name": "Identifier", - "src": "2761:5:0" - } - ], - "id": 331, - "name": "MemberAccess", - "src": "2761:15:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 314, - "type": "uint256", - "value": "validity" - }, - "id": 332, - "name": "Identifier", - "src": "2779:8:0" - } - ], - "id": 333, - "name": "BinaryOperation", - "src": "2761:26:0" + "id": 511, + "modifierName": { + "argumentTypes": null, + "id": 508, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "4144:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_address_$", + "typeString": "modifier (address,address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4144:26:0" + } + ], + "name": "setAttribute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 498, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 533, + "src": "4059:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 497, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4059:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 500, + "name": "actor", + "nodeType": "VariableDeclaration", + "scope": 533, + "src": "4077:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 499, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4077:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 502, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 533, + "src": "4092:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 501, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4092:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 504, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 533, + "src": "4106:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 503, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4106:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 506, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 533, + "src": "4119:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 505, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4119:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4058:76:0" + }, + "payable": false, + "returnParameters": { + "id": 512, + "nodeType": "ParameterList", + "parameters": [], + "src": "4171:0:0" + }, + "scope": 706, + "src": "4037:265:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 553, + "nodeType": "Block", + "src": "4395:68:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 545, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "4414:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 546, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 721, + "src": "4424:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" } - ], - "id": 334, - "name": "Assignment", - "src": "2704:83:0" + }, + "id": 547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4424:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 548, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "4436:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 549, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "4442:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 550, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "4449:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 335, - "name": "ExpressionStatement", - "src": "2704:83:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 544, + "name": "setAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 533, + 554 + ], + "referencedDeclaration": 533, + "src": "4401:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (address,address,bytes32,bytes memory,uint256)" + } + }, + "id": 551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4401:57:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "children": [ + "id": 552, + "nodeType": "ExpressionStatement", + "src": "4401:57:0" + } + ] + }, + "documentation": null, + "id": 554, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setAttribute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 542, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 535, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "4328:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 534, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4328:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 537, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "4346:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 536, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4346:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 539, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "4360:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 538, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4360:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 541, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "4373:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 540, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4373:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4327:60:0" + }, + "payable": false, + "returnParameters": { + "id": 543, + "nodeType": "ParameterList", + "parameters": [], + "src": "4395:0:0" + }, + "scope": 706, + "src": "4306:157:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 605, + "nodeType": "Block", + "src": "4602:229:0", + "statements": [ + { + "assignments": [ + 572 + ], + "declarations": [ + { + "constant": false, + "id": 572, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4608:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 571, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4608:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 590, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4638:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 574, "isConstant": false, "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, + "isPure": true, "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false + "nodeType": "ElementaryTypeNameExpression", + "src": "4633:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" }, - "children": [ + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4633:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "function (address,string memory,address,uint256,uint256)", - "value": "DIDDelegateChanged" + "argumentTypes": null, + "hexValue": "30", + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4650:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "id": 336, - "name": "Identifier", - "src": "2793:18:0" + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4645:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, + "typeName": "byte" + }, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4645:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 580, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "4654:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 581, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "4660:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 583, + "indexExpression": { + "argumentTypes": null, + "id": 582, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "4666:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4660:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 584, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "4677:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "736574417474726962757465", + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4687:14:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e5bbb0cf2a185ea034bc61efc4cb764352403a5c06c1da63a3fd765abbac4ea6", + "typeString": "literal_string \"setAttribute\"" + }, + "value": "setAttribute" + }, + { + "argumentTypes": null, + "id": 586, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "4703:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 587, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 566, + "src": "4709:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 588, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 568, + "src": "4716:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_e5bbb0cf2a185ea034bc61efc4cb764352403a5c06c1da63a3fd765abbac4ea6", + "typeString": "literal_string \"setAttribute\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 573, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "4623:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4623:102:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4608:117:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 592, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "4744:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 306, - "type": "address", - "value": "identity" - }, - "id": 337, - "name": "Identifier", - "src": "2812:8:0" + "argumentTypes": null, + "id": 594, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "4769:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 310, - "type": "string memory", - "value": "delegateType" - }, - "id": 338, - "name": "Identifier", - "src": "2822:12:0" + "argumentTypes": null, + "id": 595, + "name": "sigV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "4779:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 312, - "type": "address", - "value": "delegate" - }, - "id": 339, - "name": "Identifier", - "src": "2836:8:0" + "argumentTypes": null, + "id": 596, + "name": "sigR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 560, + "src": "4785:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "+", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 760, - "type": "block", - "value": "block" - }, - "id": 340, - "name": "Identifier", - "src": "2846:5:0" - } - ], - "id": 341, - "name": "MemberAccess", - "src": "2846:15:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 314, - "type": "uint256", - "value": "validity" - }, - "id": 342, - "name": "Identifier", - "src": "2864:8:0" - } - ], - "id": 343, - "name": "BinaryOperation", - "src": "2846:26:0" + "argumentTypes": null, + "id": 597, + "name": "sigS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 562, + "src": "4791:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 17, - "type": "mapping(address => uint256)", - "value": "changed" - }, - "id": 344, - "name": "Identifier", - "src": "2874:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 306, - "type": "address", - "value": "identity" - }, - "id": 345, - "name": "Identifier", - "src": "2882:8:0" - } - ], - "id": 346, - "name": "IndexAccess", - "src": "2874:17:0" + "argumentTypes": null, + "id": 598, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 572, + "src": "4797:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } } ], - "id": 347, - "name": "FunctionCall", - "src": "2793:99:0" - } - ], - "id": 348, - "name": "ExpressionStatement", - "src": "2793:99:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "uint256" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 17, - "type": "mapping(address => uint256)", - "value": "changed" - }, - "id": 349, - "name": "Identifier", - "src": "2898:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 306, - "type": "address", - "value": "identity" - }, - "id": 350, - "name": "Identifier", - "src": "2906:8:0" - } - ], - "id": 351, - "name": "IndexAccess", - "src": "2898:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "number", - "referencedDeclaration": null, - "type": "uint256" + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 760, - "type": "block", - "value": "block" - }, - "id": 352, - "name": "Identifier", - "src": "2918:5:0" - } - ], - "id": 353, - "name": "MemberAccess", - "src": "2918:12:0" + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 593, + "name": "checkSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "4754:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" } - ], - "id": 354, - "name": "Assignment", - "src": "2898:32:0" - } - ], - "id": 355, - "name": "ExpressionStatement", - "src": "2898:32:0" - } - ], - "id": 356, - "name": "Block", - "src": "2698:237:0" - } - ], - "id": 357, - "name": "FunctionDefinition", - "src": "2553:382:0" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "addDelegate", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 378, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" }, - "id": 358, - "name": "ElementaryTypeName", - "src": "2960:7:0" - } - ], - "id": 359, - "name": "VariableDeclaration", - "src": "2960:16:0" - }, - { - "attributes": { - "constant": false, - "name": "delegateType", - "scope": 378, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4754:48:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "string", - "type": "string storage pointer" - }, - "id": 360, - "name": "ElementaryTypeName", - "src": "2978:6:0" + "argumentTypes": null, + "id": 600, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "4804:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 601, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 566, + "src": "4810:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 602, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 568, + "src": "4817:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 361, - "name": "VariableDeclaration", - "src": "2978:19:0" - }, - { - "attributes": { - "constant": false, - "name": "delegate", - "scope": 378, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 362, - "name": "ElementaryTypeName", - "src": "2999:7:0" + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 591, + "name": "setAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 533, + 554 + ], + "referencedDeclaration": 533, + "src": "4731:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (address,address,bytes32,bytes memory,uint256)" } - ], - "id": 363, - "name": "VariableDeclaration", - "src": "2999:16:0" - }, - { - "attributes": { - "constant": false, - "name": "validity", - "scope": 378, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" }, - "children": [ + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4731:95:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 604, + "nodeType": "ExpressionStatement", + "src": "4731:95:0" + } + ] + }, + "documentation": null, + "id": 606, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setAttributeSigned", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 556, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4495:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4495:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 558, + "name": "sigV", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4513:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 557, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4513:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 560, + "name": "sigR", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4525:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 559, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4525:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 562, + "name": "sigS", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4539:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 561, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4539:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 564, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4553:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 563, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4553:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 566, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4567:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 565, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4567:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 568, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4580:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 567, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4580:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4494:100:0" + }, + "payable": false, + "returnParameters": { + "id": 570, + "nodeType": "ParameterList", + "parameters": [], + "src": "4602:0:0" + }, + "scope": 706, + "src": "4467:364:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 638, + "nodeType": "Block", + "src": "4957:118:0", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 622, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "4988:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 623, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 612, + "src": "4998:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 624, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "5004:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, { - "attributes": { - "name": "uint", - "type": "uint256" + "argumentTypes": null, + "hexValue": "30", + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5011:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "id": 364, - "name": "ElementaryTypeName", - "src": "3017:4:0" - } - ], - "id": 365, - "name": "VariableDeclaration", - "src": "3017:13:0" - } - ], - "id": 366, - "name": "ParameterList", - "src": "2959:72:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 367, - "name": "ParameterList", - "src": "3039:0:0" - }, - { - "children": [ - { - "children": [ + "value": "0" + }, { - "attributes": { + "argumentTypes": null, + "baseExpression": { "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false + "id": 626, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "5014:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - 357, - 378 - ], - "referencedDeclaration": 357, - "type": "function (address,address,string memory,address,uint256)", - "value": "addDelegate" - }, - "id": 368, - "name": "Identifier", - "src": "3045:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 359, - "type": "address", - "value": "identity" - }, - "id": 369, - "name": "Identifier", - "src": "3057:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 768, - "type": "msg", - "value": "msg" - }, - "id": 370, - "name": "Identifier", - "src": "3067:3:0" - } - ], - "id": 371, - "name": "MemberAccess", - "src": "3067:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 361, - "type": "string memory", - "value": "delegateType" - }, - "id": 372, - "name": "Identifier", - "src": "3079:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 363, - "type": "address", - "value": "delegate" - }, - "id": 373, - "name": "Identifier", - "src": "3093:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 365, - "type": "uint256", - "value": "validity" - }, - "id": 374, - "name": "Identifier", - "src": "3103:8:0" + "id": 628, + "indexExpression": { + "argumentTypes": null, + "id": 627, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "5022:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 375, - "name": "FunctionCall", - "src": "3045:67:0" - } - ], - "id": 376, - "name": "ExpressionStatement", - "src": "3045:67:0" - } - ], - "id": 377, - "name": "Block", - "src": "3039:78:0" - } - ], - "id": 378, - "name": "FunctionDefinition", - "src": "2939:178:0" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "addDelegateSigned", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 432, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" }, - "id": 379, - "name": "ElementaryTypeName", - "src": "3148:7:0" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5014:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 380, - "name": "VariableDeclaration", - "src": "3148:16:0" - }, - { - "attributes": { - "constant": false, - "name": "sigV", - "scope": 432, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "id": 381, - "name": "ElementaryTypeName", - "src": "3166:5:0" + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 621, + "name": "DIDAttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "4968:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,bytes memory,uint256,uint256)" } - ], - "id": 382, - "name": "VariableDeclaration", - "src": "3166:10:0" + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4968:64:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { - "constant": false, - "name": "sigR", - "scope": 432, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" + "id": 630, + "nodeType": "EmitStatement", + "src": "4963:69:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 631, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "5038:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 633, + "indexExpression": { + "argumentTypes": null, + "id": 632, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "5046:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5038:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 383, - "name": "ElementaryTypeName", - "src": "3178:7:0" + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 634, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "5058:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5058:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 384, - "name": "VariableDeclaration", - "src": "3178:12:0" + }, + "src": "5038:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "5038:32:0" + } + ] + }, + "documentation": null, + "id": 639, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ { - "attributes": { - "constant": false, - "name": "sigS", - "scope": 432, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 385, - "name": "ElementaryTypeName", - "src": "3192:7:0" - } - ], - "id": 386, - "name": "VariableDeclaration", - "src": "3192:12:0" + "argumentTypes": null, + "id": 617, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "4940:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "constant": false, - "name": "delegateType", - "scope": 432, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "id": 618, + "name": "actor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 610, + "src": "4950:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 619, + "modifierName": { + "argumentTypes": null, + "id": 616, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "4930:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_address_$", + "typeString": "modifier (address,address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4930:26:0" + } + ], + "name": "revokeAttribute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 608, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 639, + "src": "4860:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4860:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 610, + "name": "actor", + "nodeType": "VariableDeclaration", + "scope": 639, + "src": "4878:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4878:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 612, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 639, + "src": "4893:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 611, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4893:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 614, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 639, + "src": "4907:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 613, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4907:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4859:61:0" + }, + "payable": false, + "returnParameters": { + "id": 620, + "nodeType": "ParameterList", + "parameters": [], + "src": "4957:0:0" + }, + "scope": 706, + "src": "4835:240:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 656, + "nodeType": "Block", + "src": "5156:61:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "string", - "type": "string storage pointer" + "argumentTypes": null, + "id": 649, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 641, + "src": "5178:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 650, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 721, + "src": "5188:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } }, - "id": 387, - "name": "ElementaryTypeName", - "src": "3206:6:0" + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5188:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 652, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "5200:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 653, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 645, + "src": "5206:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } } ], - "id": 388, - "name": "VariableDeclaration", - "src": "3206:19:0" - }, - { - "attributes": { - "constant": false, - "name": "delegate", - "scope": 432, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 389, - "name": "ElementaryTypeName", - "src": "3227:7:0" + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 648, + "name": "revokeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 639, + 657 + ], + "referencedDeclaration": 639, + "src": "5162:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,bytes32,bytes memory)" } - ], - "id": 390, - "name": "VariableDeclaration", - "src": "3227:16:0" + }, + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5162:50:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { + "id": 655, + "nodeType": "ExpressionStatement", + "src": "5162:50:0" + } + ] + }, + "documentation": null, + "id": 657, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "revokeAttribute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 641, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 657, + "src": "5104:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 640, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5104:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 643, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 657, + "src": "5122:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 642, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5122:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 645, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 657, + "src": "5136:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 644, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5136:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5103:45:0" + }, + "payable": false, + "returnParameters": { + "id": 647, + "nodeType": "ParameterList", + "parameters": [], + "src": "5156:0:0" + }, + "scope": 706, + "src": "5079:138:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 704, + "nodeType": "Block", + "src": "5343:216:0", + "statements": [ + { + "assignments": [ + 673 + ], + "declarations": [ + { "constant": false, - "name": "validity", - "scope": 432, + "id": 673, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5349:12:0", "stateVariable": false, "storageLocation": "default", - "type": "uint256", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 672, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5349:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, "value": null, "visibility": "internal" - }, - "children": [ + } + ], + "id": 690, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 391, - "name": "ElementaryTypeName", - "src": "3245:4:0" - } - ], - "id": 392, - "name": "VariableDeclaration", - "src": "3245:13:0" - } - ], - "id": 393, - "name": "ParameterList", - "src": "3147:112:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 394, - "name": "ParameterList", - "src": "3267:0:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 396 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "hash", - "scope": 432, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "bytes32", - "type": "bytes32" + "argumentTypes": null, + "hexValue": "30783139", + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5379:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" }, - "id": 395, - "name": "ElementaryTypeName", - "src": "3273:7:0" + "value": "0x19" } ], - "id": 396, - "name": "VariableDeclaration", - "src": "3273:12:0" - }, - { - "attributes": { - "argumentTypes": null, + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 675, "isConstant": false, "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, + "isPure": true, "lValueRequested": false, - "names": [ - null - ], - "type": "bytes32", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$756", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_debebbcfc53a895bddcfa7790235910fa4c752e6acb9c798d39f50a51a8429a2", - "typeString": "literal_string \"addDelegate\"" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 762, - "type": "function () pure returns (bytes32)", - "value": "keccak256" - }, - "id": 397, - "name": "Identifier", - "src": "3288:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes1", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes1)", - "value": "byte" - }, - "id": 398, - "name": "ElementaryTypeNameExpression", - "src": "3298:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30783139", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 25", - "value": "0x19" - }, - "id": 399, - "name": "Literal", - "src": "3303:4:0" - } - ], - "id": 400, - "name": "FunctionCall", - "src": "3298:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes1", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes1)", - "value": "byte" - }, - "id": 401, - "name": "ElementaryTypeNameExpression", - "src": "3310:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 402, - "name": "Literal", - "src": "3315:1:0" - } - ], - "id": 403, - "name": "FunctionCall", - "src": "3310:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 779, - "type": "contract EthereumDIDRegistry", - "value": "this" - }, - "id": 404, - "name": "Identifier", - "src": "3319:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 21, - "type": "mapping(address => uint256)", - "value": "nonce" - }, - "id": 405, - "name": "Identifier", - "src": "3325:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 96, - "type": "function (address) view returns (address)", - "value": "identityOwner" - }, - "id": 406, - "name": "Identifier", - "src": "3331:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 380, - "type": "address", - "value": "identity" - }, - "id": 407, - "name": "Identifier", - "src": "3345:8:0" - } - ], - "id": 408, - "name": "FunctionCall", - "src": "3331:23:0" - } - ], - "id": 409, - "name": "IndexAccess", - "src": "3325:30:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 380, - "type": "address", - "value": "identity" - }, - "id": 410, - "name": "Identifier", - "src": "3357:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "61646444656c6567617465", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"addDelegate\"", - "value": "addDelegate" - }, - "id": 411, - "name": "Literal", - "src": "3367:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 388, - "type": "string memory", - "value": "delegateType" - }, - "id": 412, - "name": "Identifier", - "src": "3382:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 390, - "type": "address", - "value": "delegate" - }, - "id": 413, - "name": "Identifier", - "src": "3396:8:0" + "nodeType": "ElementaryTypeNameExpression", + "src": "5374:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, + "typeName": "byte" + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5374:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 392, - "type": "uint256", - "value": "validity" + "argumentTypes": null, + "hexValue": "30", + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5391:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "id": 414, - "name": "Identifier", - "src": "3406:8:0" + "value": "0" } ], - "id": 415, - "name": "FunctionCall", - "src": "3288:127:0" - } - ], - "id": 416, - "name": "VariableDeclarationStatement", - "src": "3273:142:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 678, "isConstant": false, "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, + "isPure": true, "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - 357, - 378 - ], - "referencedDeclaration": 357, - "type": "function (address,address,string memory,address,uint256)", - "value": "addDelegate" - }, - "id": 417, - "name": "Identifier", - "src": "3422:11:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 380, - "type": "address", - "value": "identity" - }, - "id": 418, - "name": "Identifier", - "src": "3434:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 136, - "type": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)", - "value": "checkSignature" - }, - "id": 419, - "name": "Identifier", - "src": "3444:14:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 380, - "type": "address", - "value": "identity" - }, - "id": 420, - "name": "Identifier", - "src": "3459:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 382, - "type": "uint8", - "value": "sigV" - }, - "id": 421, - "name": "Identifier", - "src": "3469:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 384, - "type": "bytes32", - "value": "sigR" - }, - "id": 422, - "name": "Identifier", - "src": "3475:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 386, - "type": "bytes32", - "value": "sigS" - }, - "id": 423, - "name": "Identifier", - "src": "3481:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 396, - "type": "bytes32", - "value": "hash" - }, - "id": 424, - "name": "Identifier", - "src": "3487:4:0" - } - ], - "id": 425, - "name": "FunctionCall", - "src": "3444:48:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 388, - "type": "string memory", - "value": "delegateType" - }, - "id": 426, - "name": "Identifier", - "src": "3494:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 390, - "type": "address", - "value": "delegate" - }, - "id": 427, - "name": "Identifier", - "src": "3508:8:0" + "nodeType": "ElementaryTypeNameExpression", + "src": "5386:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 392, - "type": "uint256", - "value": "validity" - }, - "id": 428, - "name": "Identifier", - "src": "3518:8:0" - } - ], - "id": 429, - "name": "FunctionCall", - "src": "3422:105:0" - } - ], - "id": 430, - "name": "ExpressionStatement", - "src": "3422:105:0" - } - ], - "id": 431, - "name": "Block", - "src": "3267:265:0" - } - ], - "id": 432, - "name": "FunctionDefinition", - "src": "3121:411:0" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "name": "revokeDelegate", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 477, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" + "typeName": "byte" }, - "id": 433, - "name": "ElementaryTypeName", - "src": "3560:7:0" - } - ], - "id": 434, - "name": "VariableDeclaration", - "src": "3560:16:0" - }, - { - "attributes": { - "constant": false, - "name": "actor", - "scope": 477, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5386:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 435, - "name": "ElementaryTypeName", - "src": "3578:7:0" - } - ], - "id": 436, - "name": "VariableDeclaration", - "src": "3578:13:0" - }, - { - "attributes": { - "constant": false, - "name": "delegateType", - "scope": 477, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "id": 681, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "5395:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + } + }, { - "attributes": { - "name": "string", - "type": "string storage pointer" + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 682, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "5401:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } }, - "id": 437, - "name": "ElementaryTypeName", - "src": "3593:6:0" - } - ], - "id": 438, - "name": "VariableDeclaration", - "src": "3593:19:0" - }, - { - "attributes": { - "constant": false, - "name": "delegate", - "scope": 477, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "id": 684, + "indexExpression": { + "argumentTypes": null, + "id": 683, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "5407:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5401:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "id": 685, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "5418:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "7265766f6b65417474726962757465", + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5428:17:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_168e4cc0ad03cc4b6896d89f8a470b9997cd8bbe87ac639c5474674fa958f860", + "typeString": "literal_string \"revokeAttribute\"" }, - "id": 439, - "name": "ElementaryTypeName", - "src": "3614:7:0" + "value": "revokeAttribute" + }, + { + "argumentTypes": null, + "id": 687, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 667, + "src": "5447:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 688, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 669, + "src": "5453:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } } ], - "id": 440, - "name": "VariableDeclaration", - "src": "3614:16:0" - } - ], - "id": 441, - "name": "ParameterList", - "src": "3559:72:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 446, - "name": "ParameterList", - "src": "3668:0:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 37, - "type": "modifier (address,address)", - "value": "onlyOwner" - }, - "id": 442, - "name": "Identifier", - "src": "3641:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_168e4cc0ad03cc4b6896d89f8a470b9997cd8bbe87ac639c5474674fa958f860", + "typeString": "literal_string \"revokeAttribute\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } ], - "referencedDeclaration": 434, - "type": "address", - "value": "identity" + "id": 674, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "5364:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } }, - "id": 443, - "name": "Identifier", - "src": "3651:8:0" + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5364:95:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 436, - "type": "address", - "value": "actor" - }, - "id": 444, - "name": "Identifier", - "src": "3661:5:0" - } - ], - "id": 445, - "name": "ModifierInvocation", - "src": "3641:26:0" - }, - { - "children": [ - { - "children": [ + "nodeType": "VariableDeclarationStatement", + "src": "5349:110:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(address => uint256)" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "mapping(bytes32 => mapping(address => uint256))" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 13, - "type": "mapping(address => mapping(bytes32 => mapping(address => uint256)))", - "value": "delegates" - }, - "id": 447, - "name": "Identifier", - "src": "3674:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 434, - "type": "address", - "value": "identity" - }, - "id": 448, - "name": "Identifier", - "src": "3684:8:0" - } - ], - "id": 453, - "name": "IndexAccess", - "src": "3674:19:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes32", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 762, - "type": "function () pure returns (bytes32)", - "value": "keccak256" - }, - "id": 449, - "name": "Identifier", - "src": "3694:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 438, - "type": "string memory", - "value": "delegateType" - }, - "id": 450, - "name": "Identifier", - "src": "3704:12:0" - } - ], - "id": 451, - "name": "FunctionCall", - "src": "3694:23:0" - } - ], - "id": 454, - "name": "IndexAccess", - "src": "3674:44:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 440, - "type": "address", - "value": "delegate" - }, - "id": 452, - "name": "Identifier", - "src": "3719:8:0" - } - ], - "id": 455, - "name": "IndexAccess", - "src": "3674:54:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 456, - "name": "Literal", - "src": "3731:1:0" - } - ], - "id": 457, - "name": "Assignment", - "src": "3674:58:0" - } - ], - "id": 458, - "name": "ExpressionStatement", - "src": "3674:58:0" - }, - { - "children": [ + "argumentTypes": null, + "id": 692, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "5482:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 57, - "type": "function (address,string memory,address,uint256,uint256)", - "value": "DIDDelegateChanged" - }, - "id": 459, - "name": "Identifier", - "src": "3738:18:0" + "argumentTypes": null, + "id": 694, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "5507:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 434, - "type": "address", - "value": "identity" - }, - "id": 460, - "name": "Identifier", - "src": "3757:8:0" + "argumentTypes": null, + "id": 695, + "name": "sigV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 661, + "src": "5517:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 438, - "type": "string memory", - "value": "delegateType" - }, - "id": 461, - "name": "Identifier", - "src": "3767:12:0" + "argumentTypes": null, + "id": 696, + "name": "sigR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "5523:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 440, - "type": "address", - "value": "delegate" - }, - "id": 462, - "name": "Identifier", - "src": "3781:8:0" + "argumentTypes": null, + "id": 697, + "name": "sigS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 665, + "src": "5529:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" + "argumentTypes": null, + "id": 698, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 673, + "src": "5535:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 463, - "name": "Literal", - "src": "3791:1:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "uint256" + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 17, - "type": "mapping(address => uint256)", - "value": "changed" - }, - "id": 464, - "name": "Identifier", - "src": "3794:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 434, - "type": "address", - "value": "identity" - }, - "id": 465, - "name": "Identifier", - "src": "3802:8:0" - } - ], - "id": 466, - "name": "IndexAccess", - "src": "3794:17:0" + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 693, + "name": "checkSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "5492:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" } - ], - "id": 467, - "name": "FunctionCall", - "src": "3738:74:0" - } - ], - "id": 468, - "name": "ExpressionStatement", - "src": "3738:74:0" - }, - { - "children": [ + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5492:48:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 700, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 667, + "src": "5542:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 701, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 669, + "src": "5548:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 691, + "name": "revokeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 639, + 657 + ], + "referencedDeclaration": 639, + "src": "5466:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,bytes32,bytes memory)" + } + }, + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5466:88:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 703, + "nodeType": "ExpressionStatement", + "src": "5466:88:0" + } + ] + }, + "documentation": null, + "id": 705, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "revokeAttributeSigned", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 659, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5251:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5251:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 661, + "name": "sigV", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5269:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 660, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5269:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 663, + "name": "sigR", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5281:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 662, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5281:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 665, + "name": "sigS", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5295:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 664, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5295:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 667, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5309:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 666, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5309:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 669, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5323:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 668, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5323:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5250:85:0" + }, + "payable": false, + "returnParameters": { + "id": 671, + "nodeType": "ParameterList", + "parameters": [], + "src": "5343:0:0" + }, + "scope": 706, + "src": "5220:339:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 707, + "src": "25:5537:0" + } + ], + "src": "0:5563:0" + }, + "legacyAST": { + "absolutePath": "/Users/pelleb/code/consensys/ethereum-did-registry/contracts/EthereumDIDRegistry.sol", + "exportedSymbols": { + "EthereumDIDRegistry": [ + 706 + ] + }, + "id": 707, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "^", + "0.4", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 706, + "linearizedBaseContracts": [ + 706 + ], + "name": "EthereumDIDRegistry", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 5, + "name": "owners", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "59:41:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "typeName": { + "id": 4, + "keyType": { + "id": 2, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "67:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "59:27:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + }, + "valueType": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "78:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 13, + "name": "delegates", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "104:81:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" + }, + "typeName": { + "id": 12, + "keyType": { + "id": 6, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "112:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "104:64:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" + }, + "valueType": { + "id": 11, + "keyType": { + "id": 7, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "131:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "123:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" + }, + "valueType": { + "id": 10, + "keyType": { + "id": 8, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "150:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "142:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 9, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "161:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 17, + "name": "changed", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "189:39:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 16, + "keyType": { + "id": 14, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "197:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "189:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 15, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "208:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 21, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 706, + "src": "232:37:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 20, + "keyType": { + "id": 18, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "240:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "232:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 19, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "251:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 36, + "nodeType": "Block", + "src": "326:60:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 32, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "=", - "type": "uint256" + "id": 28, + "name": "actor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "341:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "children": [ - { - "attributes": { + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 17, - "type": "mapping(address => uint256)", - "value": "changed" - }, - "id": 469, - "name": "Identifier", - "src": "3818:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 434, - "type": "address", - "value": "identity" - }, - "id": 470, - "name": "Identifier", - "src": "3826:8:0" + "id": 30, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "364:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 471, - "name": "IndexAccess", - "src": "3818:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "number", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 760, - "type": "block", - "value": "block" - }, - "id": 472, - "name": "Identifier", - "src": "3838:5:0" + "typeIdentifier": "t_address", + "typeString": "address" } ], - "id": 473, - "name": "MemberAccess", - "src": "3838:12:0" + "id": 29, + "name": "identityOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "350:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view returns (address)" + } + }, + "id": 31, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "350:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 474, - "name": "Assignment", - "src": "3818:32:0" + }, + "src": "341:32:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } } ], - "id": 475, - "name": "ExpressionStatement", - "src": "3818:32:0" - } - ], - "id": 476, - "name": "Block", - "src": "3668:187:0" - } - ], - "id": 477, - "name": "FunctionDefinition", - "src": "3536:319:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 27, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 724, + 725 + ], + "referencedDeclaration": 724, + "src": "332:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 33, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "332:42:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 34, + "nodeType": "ExpressionStatement", + "src": "332:42:0" + }, + { + "id": 35, + "nodeType": "PlaceholderStatement", + "src": "380:1:0" + } + ] + }, + "documentation": null, + "id": 37, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 26, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "293:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 22, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "293:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 25, + "name": "actor", + "nodeType": "VariableDeclaration", + "scope": 37, + "src": "311:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 24, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "311:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "292:33:0" + }, + "src": "274:112:0", + "visibility": "internal" }, { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null + "anonymous": false, + "documentation": null, + "id": 45, + "name": "DIDOwnerChanged", + "nodeType": "EventDefinition", + "parameters": { + "id": 44, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 39, + "indexed": true, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "417:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 38, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "417:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 41, + "indexed": false, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "447:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 40, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "447:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43, + "indexed": false, + "name": "previousChange", + "nodeType": "VariableDeclaration", + "scope": 45, + "src": "466:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 42, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "466:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } ], - "name": "revokeDelegate", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { + "src": "411:78:0" + }, + "src": "390:100:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 57, + "name": "DIDDelegateChanged", + "nodeType": "EventDefinition", + "parameters": { + "id": 56, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 47, + "indexed": true, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "524:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 46, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "524:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 49, + "indexed": false, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "554:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 48, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "554:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 51, + "indexed": false, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "580:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "580:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 53, + "indexed": false, + "name": "validTo", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "602:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 52, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "602:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 55, + "indexed": false, + "name": "previousChange", + "nodeType": "VariableDeclaration", + "scope": 57, + "src": "620:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 54, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "620:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "518:125:0" + }, + "src": "494:150:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 69, + "name": "DIDAttributeChanged", + "nodeType": "EventDefinition", + "parameters": { + "id": 68, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 59, + "indexed": true, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "679:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 58, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "679:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 61, + "indexed": false, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "709:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 60, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "709:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 63, + "indexed": false, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "727:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 62, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "727:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 65, + "indexed": false, + "name": "validTo", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "744:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 64, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "744:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 67, + "indexed": false, + "name": "previousChange", + "nodeType": "VariableDeclaration", + "scope": 69, + "src": "762:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 66, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "762:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "673:112:0" + }, + "src": "648:138:0" + }, + { + "body": { + "id": 91, + "nodeType": "Block", + "src": "860:119:0", + "statements": [ + { + "assignments": [ + 77 + ], + "declarations": [ + { "constant": false, - "name": "identity", - "scope": 495, + "id": 77, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "867:13:0", "stateVariable": false, "storageLocation": "default", - "type": "address", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 76, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "867:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, "value": null, "visibility": "internal" + } + ], + "id": 81, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 78, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "883:6:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 478, - "name": "ElementaryTypeName", - "src": "3883:7:0" + "id": 80, + "indexExpression": { + "argumentTypes": null, + "id": 79, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "890:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 479, - "name": "VariableDeclaration", - "src": "3883:16:0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "883:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - { - "attributes": { - "constant": false, - "name": "delegateType", - "scope": 495, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" + "nodeType": "VariableDeclarationStatement", + "src": "867:32:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 82, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "910:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "children": [ + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "307830", + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "919:3:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0x0" + }, + "src": "910:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 88, + "nodeType": "IfStatement", + "src": "906:47:0", + "trueBody": { + "id": 87, + "nodeType": "Block", + "src": "924:29:0", + "statements": [ { - "attributes": { - "name": "string", - "type": "string storage pointer" + "expression": { + "argumentTypes": null, + "id": 85, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 77, + "src": "940:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "id": 480, - "name": "ElementaryTypeName", - "src": "3901:6:0" + "functionReturnParameters": 75, + "id": 86, + "nodeType": "Return", + "src": "933:12:0" } - ], - "id": 481, - "name": "VariableDeclaration", - "src": "3901:19:0" + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 89, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "966:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - { - "attributes": { + "functionReturnParameters": 75, + "id": 90, + "nodeType": "Return", + "src": "959:15:0" + } + ] + }, + "documentation": null, + "id": 92, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "identityOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 72, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 71, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "813:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 70, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "813:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "812:18:0" + }, + "payable": false, + "returnParameters": { + "id": 75, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 74, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 92, + "src": "851:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 73, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "851:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "850:9:0" + }, + "scope": 706, + "src": "790:189:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 131, + "nodeType": "Block", + "src": "1105:151:0", + "statements": [ + { + "assignments": [ + 108 + ], + "declarations": [ + { "constant": false, - "name": "delegate", - "scope": 495, + "id": 108, + "name": "signer", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1111:14:0", "stateVariable": false, "storageLocation": "default", - "type": "address", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 107, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1111:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, "value": null, "visibility": "internal" - }, - "children": [ + } + ], + "id": 115, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 482, - "name": "ElementaryTypeName", - "src": "3922:7:0" - } - ], - "id": 483, - "name": "VariableDeclaration", - "src": "3922:16:0" - } - ], - "id": 484, - "name": "ParameterList", - "src": "3882:57:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 485, - "name": "ParameterList", - "src": "3947:0:0" - }, - { - "children": [ - { - "children": [ + "argumentTypes": null, + "id": 110, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "1138:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 111, + "name": "sigV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 96, + "src": "1144:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 112, + "name": "sigR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 98, + "src": "1150:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 113, + "name": "sigS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "1156:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 109, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 713, + "src": "1128:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1128:33:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1111:50:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false + "id": 117, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "1175:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - 477, - 495 - ], - "referencedDeclaration": 477, - "type": "function (address,address,string memory,address)", - "value": "revokeDelegate" - }, - "id": 486, - "name": "Identifier", - "src": "3953:14:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 479, - "type": "address", - "value": "identity" - }, - "id": 487, - "name": "Identifier", - "src": "3968:8:0" - }, - { - "attributes": { + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address" - }, - "children": [ + "id": 119, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "1199:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 768, - "type": "msg", - "value": "msg" - }, - "id": 488, - "name": "Identifier", - "src": "3978:3:0" + "typeIdentifier": "t_address", + "typeString": "address" } ], - "id": 489, - "name": "MemberAccess", - "src": "3978:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 481, - "type": "string memory", - "value": "delegateType" - }, - "id": 490, - "name": "Identifier", - "src": "3990:12:0" + "id": 118, + "name": "identityOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "1185:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view returns (address)" + } }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 483, - "type": "address", - "value": "delegate" - }, - "id": 491, - "name": "Identifier", - "src": "4004:8:0" + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1185:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 492, - "name": "FunctionCall", - "src": "3953:60:0" + }, + "src": "1175:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } } ], - "id": 493, - "name": "ExpressionStatement", - "src": "3953:60:0" - } - ], - "id": 494, - "name": "Block", - "src": "3947:71:0" - } - ], - "id": 495, - "name": "FunctionDefinition", - "src": "3859:159:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 116, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 724, + 725 + ], + "referencedDeclaration": 724, + "src": "1167:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1167:42:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 123, + "nodeType": "ExpressionStatement", + "src": "1167:42:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1215:17:0", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 124, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "1215:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 126, + "indexExpression": { + "argumentTypes": null, + "id": 125, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 94, + "src": "1221:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1215:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 128, + "nodeType": "ExpressionStatement", + "src": "1215:17:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 129, + "name": "signer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 108, + "src": "1245:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 106, + "id": 130, + "nodeType": "Return", + "src": "1238:13:0" + } + ] + }, + "documentation": null, + "id": 132, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "checkSignature", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 103, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 94, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1007:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 93, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1007:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 96, + "name": "sigV", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1025:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 95, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1025:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 98, + "name": "sigR", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1037:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 97, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1037:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 100, + "name": "sigS", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1051:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 99, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1051:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 102, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1065:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 101, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1065:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1006:72:0" + }, + "payable": false, + "returnParameters": { + "id": 106, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 105, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 132, + "src": "1096:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1096:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1095:9:0" + }, + "scope": 706, + "src": "983:273:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" }, { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "revokeDelegateSigned", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { + "body": { + "id": 160, + "nodeType": "Block", + "src": "1367:110:0", + "statements": [ + { + "assignments": [ + 144 + ], + "declarations": [ + { "constant": false, - "name": "identity", - "scope": 545, + "id": 144, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "1373:13:0", "stateVariable": false, "storageLocation": "default", - "type": "address", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 143, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1373:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, "value": null, "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" + } + ], + "id": 154, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 145, + "name": "delegates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "1389:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" + } + }, + "id": 147, + "indexExpression": { + "argumentTypes": null, + "id": 146, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "1399:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "id": 496, - "name": "ElementaryTypeName", - "src": "4052:7:0" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1389:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" + } + }, + "id": 151, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 149, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 136, + "src": "1419:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 148, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "1409:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1409:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1389:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } - ], - "id": 497, - "name": "VariableDeclaration", - "src": "4052:16:0" - }, - { - "attributes": { - "constant": false, - "name": "sigV", - "scope": 545, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 498, - "name": "ElementaryTypeName", - "src": "4070:5:0" + "id": 153, + "indexExpression": { + "argumentTypes": null, + "id": 152, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 138, + "src": "1434:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 499, - "name": "VariableDeclaration", - "src": "4070:10:0" - }, - { - "attributes": { - "constant": false, - "name": "sigR", - "scope": 545, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" }, - "children": [ + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1389:54:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1373:70:0" + }, + { + "expression": { + "argumentTypes": null, + "components": [ { - "attributes": { - "name": "bytes32", - "type": "bytes32" + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 500, - "name": "ElementaryTypeName", - "src": "4082:7:0" + "id": 157, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 155, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 144, + "src": "1457:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 156, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "1468:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1457:14:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } } ], - "id": 501, - "name": "VariableDeclaration", - "src": "4082:12:0" + "id": 158, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1456:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, - { - "attributes": { - "constant": false, - "name": "sigS", - "scope": 545, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" + "functionReturnParameters": 142, + "id": 159, + "nodeType": "Return", + "src": "1449:23:0" + } + ] + }, + "documentation": null, + "id": 161, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "validDelegate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 134, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "1283:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1283:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 136, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "1301:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 135, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1301:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 138, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "1323:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 137, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1323:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1282:58:0" + }, + "payable": false, + "returnParameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 141, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 161, + "src": "1361:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 140, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1361:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1360:6:0" + }, + "scope": 706, + "src": "1260:217:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 195, + "nodeType": "Block", + "src": "1589:141:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 174, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "1595:6:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_address_$", + "typeString": "mapping(address => address)" + } + }, + "id": 176, + "indexExpression": { + "argumentTypes": null, + "id": 175, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "1602:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1595:16:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 502, - "name": "ElementaryTypeName", - "src": "4096:7:0" + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 177, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "1614:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 503, - "name": "VariableDeclaration", - "src": "4096:12:0" - }, - { - "attributes": { - "constant": false, - "name": "delegateType", - "scope": 545, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" }, - "children": [ + "src": "1595:27:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 179, + "nodeType": "ExpressionStatement", + "src": "1595:27:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 181, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "1649:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 182, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "1659:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "string", - "type": "string storage pointer" + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 183, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "1669:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 185, + "indexExpression": { + "argumentTypes": null, + "id": 184, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "1677:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "id": 504, - "name": "ElementaryTypeName", - "src": "4110:6:0" + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1669:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 505, - "name": "VariableDeclaration", - "src": "4110:19:0" - }, - { - "attributes": { - "constant": false, - "name": "delegate", - "scope": 545, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 506, - "name": "ElementaryTypeName", - "src": "4131:7:0" + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 180, + "name": "DIDOwnerChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 45, + "src": "1633:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" } - ], - "id": 507, - "name": "VariableDeclaration", - "src": "4131:16:0" - } - ], - "id": 508, - "name": "ParameterList", - "src": "4051:97:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 509, - "name": "ParameterList", - "src": "4156:0:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 511 - ] }, - "children": [ - { - "attributes": { - "constant": false, - "name": "hash", - "scope": 545, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 510, - "name": "ElementaryTypeName", - "src": "4162:7:0" - } - ], - "id": 511, - "name": "VariableDeclaration", - "src": "4162:12:0" + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1633:54:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 187, + "nodeType": "EmitStatement", + "src": "1628:59:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 188, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "1693:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } }, - { - "attributes": { - "argumentTypes": null, + "id": 190, + "indexExpression": { + "argumentTypes": null, + "id": 189, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "1701:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1693:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 191, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "1713:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1713:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1693:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 194, + "nodeType": "ExpressionStatement", + "src": "1693:32:0" + } + ] + }, + "documentation": null, + "id": 196, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 170, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "1572:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 171, + "name": "actor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "1582:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 172, + "modifierName": { + "argumentTypes": null, + "id": 169, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "1562:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_address_$", + "typeString": "modifier (address,address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "1562:26:0" + } + ], + "name": "changeOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 163, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 196, + "src": "1502:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 162, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1502:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 165, + "name": "actor", + "nodeType": "VariableDeclaration", + "scope": 196, + "src": "1520:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1520:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 167, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 196, + "src": "1535:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 166, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1535:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1501:51:0" + }, + "payable": false, + "returnParameters": { + "id": 173, + "nodeType": "ParameterList", + "parameters": [], + "src": "1589:0:0" + }, + "scope": 706, + "src": "1481:249:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 210, + "nodeType": "Block", + "src": "1798:54:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 204, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 198, + "src": "1816:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 205, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 721, + "src": "1826:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1826:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 207, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 200, + "src": "1838:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 203, + "name": "changeOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 196, + 211 + ], + "referencedDeclaration": 196, + "src": "1804:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address,address)" + } + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1804:43:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 209, + "nodeType": "ExpressionStatement", + "src": "1804:43:0" + } + ] + }, + "documentation": null, + "id": 211, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "changeOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 201, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 198, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 211, + "src": "1755:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 197, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1755:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 200, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 211, + "src": "1773:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 199, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1773:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1754:36:0" + }, + "payable": false, + "returnParameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [], + "src": "1798:0:0" + }, + "scope": 706, + "src": "1734:118:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 256, + "nodeType": "Block", + "src": "1966:216:0", + "statements": [ + { + "assignments": [ + 225 + ], + "declarations": [ + { + "constant": false, + "id": 225, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "1972:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 224, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1972:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 243, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2002:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 227, "isConstant": false, "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, + "isPure": true, "lValueRequested": false, - "names": [ - null - ], - "type": "bytes32", - "type_conversion": false + "nodeType": "ElementaryTypeNameExpression", + "src": "1997:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" }, - "children": [ + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1997:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$756", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_f63fea8fc7bd9fe254f7933b81fa1716b5a073ddd1aa14e432aa87d81784f86c", - "typeString": "literal_string \"revokeDelegate\"" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 762, - "type": "function () pure returns (bytes32)", - "value": "keccak256" + "argumentTypes": null, + "hexValue": "30", + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2014:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "id": 512, - "name": "Identifier", - "src": "4177:9:0" + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 230, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2009:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, - { - "attributes": { + "typeName": "byte" + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2009:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 233, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "2018:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 234, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "2024:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 238, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes1", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes1)", - "value": "byte" - }, - "id": 513, - "name": "ElementaryTypeNameExpression", - "src": "4187:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30783139", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 25", - "value": "0x19" - }, - "id": 514, - "name": "Literal", - "src": "4192:4:0" + "id": 236, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "2044:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 515, - "name": "FunctionCall", - "src": "4187:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes1", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes1)", - "value": "byte" - }, - "id": 516, - "name": "ElementaryTypeNameExpression", - "src": "4199:4:0" - }, + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 517, - "name": "Literal", - "src": "4204:1:0" + "typeIdentifier": "t_address", + "typeString": "address" } ], - "id": 518, - "name": "FunctionCall", - "src": "4199:7:0" + "id": 235, + "name": "identityOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "2030:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view returns (address)" + } }, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2030:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2024:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 239, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "2056:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "6368616e67654f776e6572", + "id": 240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2066:13:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_497a2d03cc86298e55cb693e1ab1fe854c7b50c0aa5aad6229104986e0bf69c9", + "typeString": "literal_string \"changeOwner\"" + }, + "value": "changeOwner" + }, + { + "argumentTypes": null, + "id": 241, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 221, + "src": "2081:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_497a2d03cc86298e55cb693e1ab1fe854c7b50c0aa5aad6229104986e0bf69c9", + "typeString": "literal_string \"changeOwner\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 226, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "1987:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1987:103:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1972:118:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 245, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "2108:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 779, - "type": "contract EthereumDIDRegistry", - "value": "this" - }, - "id": 519, - "name": "Identifier", - "src": "4208:4:0" + "argumentTypes": null, + "id": 247, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 213, + "src": "2133:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 21, - "type": "mapping(address => uint256)", - "value": "nonce" - }, - "id": 520, - "name": "Identifier", - "src": "4214:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 96, - "type": "function (address) view returns (address)", - "value": "identityOwner" - }, - "id": 521, - "name": "Identifier", - "src": "4220:13:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 497, - "type": "address", - "value": "identity" - }, - "id": 522, - "name": "Identifier", - "src": "4234:8:0" - } - ], - "id": 523, - "name": "FunctionCall", - "src": "4220:23:0" - } - ], - "id": 524, - "name": "IndexAccess", - "src": "4214:30:0" + "argumentTypes": null, + "id": 248, + "name": "sigV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 215, + "src": "2143:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 497, - "type": "address", - "value": "identity" - }, - "id": 525, - "name": "Identifier", - "src": "4246:8:0" + "argumentTypes": null, + "id": 249, + "name": "sigR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 217, + "src": "2149:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "hexvalue": "7265766f6b6544656c6567617465", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"revokeDelegate\"", - "value": "revokeDelegate" - }, - "id": 526, - "name": "Literal", - "src": "4256:16:0" + "argumentTypes": null, + "id": 250, + "name": "sigS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 219, + "src": "2155:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 505, - "type": "string memory", - "value": "delegateType" + "argumentTypes": null, + "id": 251, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 225, + "src": "2161:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 527, - "name": "Identifier", - "src": "4274:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 507, - "type": "address", - "value": "delegate" + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - "id": 528, - "name": "Identifier", - "src": "4288:8:0" + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 246, + "name": "checkSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "2118:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" } - ], - "id": 529, - "name": "FunctionCall", - "src": "4177:120:0" + }, + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2118:48:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 253, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 221, + "src": "2168:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 530, - "name": "VariableDeclarationStatement", - "src": "4162:135:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 244, + "name": "changeOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 196, + 211 + ], + "referencedDeclaration": 196, + "src": "2096:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address,address)" + } + }, + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2096:81:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "children": [ - { - "attributes": { + "id": 255, + "nodeType": "ExpressionStatement", + "src": "2096:81:0" + } + ] + }, + "documentation": null, + "id": 257, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "changeOwnerSigned", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 222, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 213, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "1883:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 212, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1883:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 215, + "name": "sigV", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "1901:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 214, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1901:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 217, + "name": "sigR", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "1913:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 216, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1913:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 219, + "name": "sigS", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "1927:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 218, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1927:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 221, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 257, + "src": "1941:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 220, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1941:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1882:76:0" + }, + "payable": false, + "returnParameters": { + "id": 223, + "nodeType": "ParameterList", + "parameters": [], + "src": "1966:0:0" + }, + "scope": 706, + "src": "1856:326:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 307, + "nodeType": "Block", + "src": "2331:218:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 274, + "name": "delegates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "2337:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" + } + }, + "id": 280, + "indexExpression": { + "argumentTypes": null, + "id": 275, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "2347:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "isStructConstructorCall": false, "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false + "nodeType": "IndexAccess", + "src": "2337:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" + } }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "overloadedDeclarations": [ - 477, - 495 - ], - "referencedDeclaration": 477, - "type": "function (address,address,string memory,address)", - "value": "revokeDelegate" - }, - "id": 531, - "name": "Identifier", - "src": "4304:14:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 497, - "type": "address", - "value": "identity" - }, - "id": 532, - "name": "Identifier", - "src": "4319:8:0" - }, - { - "attributes": { + "id": 281, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 136, - "type": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)", - "value": "checkSignature" - }, - "id": 533, - "name": "Identifier", - "src": "4329:14:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 497, - "type": "address", - "value": "identity" - }, - "id": 534, - "name": "Identifier", - "src": "4344:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 499, - "type": "uint8", - "value": "sigV" - }, - "id": 535, - "name": "Identifier", - "src": "4354:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 501, - "type": "bytes32", - "value": "sigR" - }, - "id": 536, - "name": "Identifier", - "src": "4360:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 503, - "type": "bytes32", - "value": "sigS" - }, - "id": 537, - "name": "Identifier", - "src": "4366:4:0" - }, + "id": 277, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 263, + "src": "2367:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 511, - "type": "bytes32", - "value": "hash" - }, - "id": 538, - "name": "Identifier", - "src": "4372:4:0" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } ], - "id": 539, - "name": "FunctionCall", - "src": "4329:48:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 505, - "type": "string memory", - "value": "delegateType" - }, - "id": 540, - "name": "Identifier", - "src": "4379:12:0" + "id": 276, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "2357:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 507, - "type": "address", - "value": "delegate" - }, - "id": 541, - "name": "Identifier", - "src": "4393:8:0" + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2357:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } - ], - "id": 542, - "name": "FunctionCall", - "src": "4304:98:0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2337:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 282, + "indexExpression": { + "argumentTypes": null, + "id": 279, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "2382:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2337:54:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 543, - "name": "ExpressionStatement", - "src": "4304:98:0" - } - ], - "id": 544, - "name": "Block", - "src": "4156:251:0" - } - ], - "id": 545, - "name": "FunctionDefinition", - "src": "4022:385:0" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "name": "setAttribute", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 583, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 546, - "name": "ElementaryTypeName", - "src": "4433:7:0" + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 285, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 283, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "2394:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 284, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 267, + "src": "2400:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2394:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 547, - "name": "VariableDeclaration", - "src": "4433:16:0" - }, - { - "attributes": { - "constant": false, - "name": "actor", - "scope": 583, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" }, - "children": [ + "src": "2337:71:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 287, + "nodeType": "ExpressionStatement", + "src": "2337:71:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 289, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "2438:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 290, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 263, + "src": "2448:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "id": 291, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 265, + "src": "2462:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 548, - "name": "ElementaryTypeName", - "src": "4451:7:0" - } - ], - "id": 549, - "name": "VariableDeclaration", - "src": "4451:13:0" - }, - { - "attributes": { - "constant": false, - "name": "name", - "scope": 583, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 292, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "2472:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 293, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 267, + "src": "2478:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2472:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, { - "attributes": { - "name": "string", - "type": "string storage pointer" + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 295, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "2488:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } }, - "id": 550, - "name": "ElementaryTypeName", - "src": "4466:6:0" + "id": 297, + "indexExpression": { + "argumentTypes": null, + "id": 296, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "2496:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2488:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 551, - "name": "VariableDeclaration", - "src": "4466:11:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 288, + "name": "DIDDelegateChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "2419:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,address,uint256,uint256)" + } + }, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2419:87:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { - "constant": false, - "name": "value", - "scope": 583, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes memory", - "value": null, - "visibility": "internal" + "id": 299, + "nodeType": "EmitStatement", + "src": "2414:92:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 300, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "2512:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 302, + "indexExpression": { + "argumentTypes": null, + "id": 301, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "2520:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2512:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes storage pointer" - }, - "id": 552, - "name": "ElementaryTypeName", - "src": "4479:5:0" + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 303, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "2532:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2532:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 553, - "name": "VariableDeclaration", - "src": "4479:11:0" + }, + "src": "2512:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, + "id": 306, + "nodeType": "ExpressionStatement", + "src": "2512:32:0" + } + ] + }, + "documentation": null, + "id": 308, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ { - "attributes": { - "constant": false, - "name": "validity", - "scope": 583, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "id": 270, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "2314:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 271, + "name": "actor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 261, + "src": "2324:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 272, + "modifierName": { + "argumentTypes": null, + "id": 269, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "2304:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_address_$", + "typeString": "modifier (address,address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "2304:26:0" + } + ], + "name": "addDelegate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 268, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 259, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 308, + "src": "2207:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 258, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2207:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 261, + "name": "actor", + "nodeType": "VariableDeclaration", + "scope": 308, + "src": "2225:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2225:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 263, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 308, + "src": "2240:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 262, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2240:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 265, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 308, + "src": "2262:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 264, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2262:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 267, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 308, + "src": "2280:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 266, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2280:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2206:88:0" + }, + "payable": false, + "returnParameters": { + "id": 273, + "nodeType": "ParameterList", + "parameters": [], + "src": "2331:0:0" + }, + "scope": 706, + "src": "2186:363:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 328, + "nodeType": "Block", + "src": "2654:78:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 320, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 310, + "src": "2672:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "uint", - "type": "uint256" + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 321, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 721, + "src": "2682:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } }, - "id": 554, - "name": "ElementaryTypeName", - "src": "4492:4:0" + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2682:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 323, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 312, + "src": "2694:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 324, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 314, + "src": "2708:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 325, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 316, + "src": "2718:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 555, - "name": "VariableDeclaration", - "src": "4492:13:0" - } - ], - "id": 556, - "name": "ParameterList", - "src": "4432:75:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 561, - "name": "ParameterList", - "src": "4544:0:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } ], - "referencedDeclaration": 37, - "type": "modifier (address,address)", - "value": "onlyOwner" - }, - "id": 557, - "name": "Identifier", - "src": "4517:9:0" - }, - { - "attributes": { - "argumentTypes": null, + "id": 319, + "name": "addDelegate", + "nodeType": "Identifier", "overloadedDeclarations": [ - null + 308, + 329 ], - "referencedDeclaration": 547, - "type": "address", - "value": "identity" + "referencedDeclaration": 308, + "src": "2660:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,bytes32,address,uint256)" + } }, - "id": 558, - "name": "Identifier", - "src": "4527:8:0" + "id": 326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2660:67:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 549, - "type": "address", - "value": "actor" - }, - "id": 559, - "name": "Identifier", - "src": "4537:5:0" - } - ], - "id": 560, - "name": "ModifierInvocation", - "src": "4517:26:0" - }, - { - "children": [ - { - "children": [ + "id": 327, + "nodeType": "ExpressionStatement", + "src": "2660:67:0" + } + ] + }, + "documentation": null, + "id": 329, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "addDelegate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 317, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 310, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "2574:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 309, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2574:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 312, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "2592:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 311, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2592:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 314, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "2614:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2614:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 316, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 329, + "src": "2632:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 315, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2632:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2573:73:0" + }, + "payable": false, + "returnParameters": { + "id": 318, + "nodeType": "ParameterList", + "parameters": [], + "src": "2654:0:0" + }, + "scope": 706, + "src": "2553:179:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 382, + "nodeType": "Block", + "src": "2883:264:0", + "statements": [ + { + "assignments": [ + 347 + ], + "declarations": [ + { + "constant": false, + "id": 347, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2889:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 346, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2889:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 367, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2919:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 349, "isConstant": false, "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, + "isPure": true, "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 69, - "type": "function (address,string memory,bytes memory,uint256,uint256)", - "value": "DIDAttributeChanged" - }, - "id": 562, - "name": "Identifier", - "src": "4550:19:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 547, - "type": "address", - "value": "identity" - }, - "id": 563, - "name": "Identifier", - "src": "4570:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 551, - "type": "string memory", - "value": "name" - }, - "id": 564, - "name": "Identifier", - "src": "4580:4:0" + "nodeType": "ElementaryTypeNameExpression", + "src": "2914:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, + "typeName": "byte" + }, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2914:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 553, - "type": "bytes memory", - "value": "value" + "argumentTypes": null, + "hexValue": "30", + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2931:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "id": 565, - "name": "Identifier", - "src": "4586:5:0" + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2926:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, - { - "attributes": { + "typeName": "byte" + }, + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2926:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 355, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "2935:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 356, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "2941:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 360, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "operator": "+", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "timestamp", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 760, - "type": "block", - "value": "block" - }, - "id": 566, - "name": "Identifier", - "src": "4593:5:0" - } - ], - "id": 567, - "name": "MemberAccess", - "src": "4593:15:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 555, - "type": "uint256", - "value": "validity" - }, - "id": 568, - "name": "Identifier", - "src": "4611:8:0" + "id": 358, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "2961:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 569, - "name": "BinaryOperation", - "src": "4593:26:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 17, - "type": "mapping(address => uint256)", - "value": "changed" - }, - "id": 570, - "name": "Identifier", - "src": "4621:7:0" - }, + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 547, - "type": "address", - "value": "identity" - }, - "id": 571, - "name": "Identifier", - "src": "4629:8:0" + "typeIdentifier": "t_address", + "typeString": "address" } ], - "id": 572, - "name": "IndexAccess", - "src": "4621:17:0" - } - ], - "id": 573, - "name": "FunctionCall", - "src": "4550:89:0" - } - ], - "id": 574, - "name": "ExpressionStatement", - "src": "4550:89:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, + "id": 357, + "name": "identityOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "2947:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view returns (address)" + } + }, + "id": 359, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 17, - "type": "mapping(address => uint256)", - "value": "changed" - }, - "id": 575, - "name": "Identifier", - "src": "4645:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 547, - "type": "address", - "value": "identity" - }, - "id": 576, - "name": "Identifier", - "src": "4653:8:0" - } - ], - "id": 577, - "name": "IndexAccess", - "src": "4645:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "number", - "referencedDeclaration": null, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 760, - "type": "block", - "value": "block" - }, - "id": 578, - "name": "Identifier", - "src": "4665:5:0" - } - ], - "id": 579, - "name": "MemberAccess", - "src": "4665:12:0" + "names": [], + "nodeType": "FunctionCall", + "src": "2947:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 580, - "name": "Assignment", - "src": "4645:32:0" - } - ], - "id": 581, - "name": "ExpressionStatement", - "src": "4645:32:0" - } - ], - "id": 582, - "name": "Block", - "src": "4544:138:0" - } - ], - "id": 583, - "name": "FunctionDefinition", - "src": "4411:271:0" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "setAttribute", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 604, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" }, - "id": 584, - "name": "ElementaryTypeName", - "src": "4708:7:0" - } - ], - "id": 585, - "name": "VariableDeclaration", - "src": "4708:16:0" - }, - { - "attributes": { - "constant": false, - "name": "name", - "scope": 604, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2941:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 361, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "2973:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "string", - "type": "string storage pointer" + "argumentTypes": null, + "hexValue": "61646444656c6567617465", + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2983:13:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_debebbcfc53a895bddcfa7790235910fa4c752e6acb9c798d39f50a51a8429a2", + "typeString": "literal_string \"addDelegate\"" }, - "id": 586, - "name": "ElementaryTypeName", - "src": "4726:6:0" + "value": "addDelegate" + }, + { + "argumentTypes": null, + "id": 363, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 339, + "src": "2998:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 364, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 341, + "src": "3012:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 365, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 343, + "src": "3022:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 587, - "name": "VariableDeclaration", - "src": "4726:11:0" - }, - { - "attributes": { - "constant": false, - "name": "value", - "scope": 604, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes memory", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes storage pointer" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" }, - "id": 588, - "name": "ElementaryTypeName", - "src": "4739:5:0" + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_debebbcfc53a895bddcfa7790235910fa4c752e6acb9c798d39f50a51a8429a2", + "typeString": "literal_string \"addDelegate\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 348, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "2904:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" } - ], - "id": 589, - "name": "VariableDeclaration", - "src": "4739:11:0" - }, - { - "attributes": { - "constant": false, - "name": "validity", - "scope": 604, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" }, - "children": [ + "id": 366, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2904:127:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2889:142:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "uint", - "type": "uint256" - }, - "id": 590, - "name": "ElementaryTypeName", - "src": "4752:4:0" - } - ], - "id": 591, - "name": "VariableDeclaration", - "src": "4752:13:0" - } - ], - "id": 592, - "name": "ParameterList", - "src": "4707:59:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 593, - "name": "ParameterList", - "src": "4774:0:0" - }, - { - "children": [ - { - "children": [ + "argumentTypes": null, + "id": 369, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "3049:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - 583, - 604 - ], - "referencedDeclaration": 583, - "type": "function (address,address,string memory,bytes memory,uint256)", - "value": "setAttribute" - }, - "id": 594, - "name": "Identifier", - "src": "4780:12:0" + "argumentTypes": null, + "id": 371, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 331, + "src": "3074:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 585, - "type": "address", - "value": "identity" - }, - "id": 595, - "name": "Identifier", - "src": "4793:8:0" + "argumentTypes": null, + "id": 372, + "name": "sigV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 333, + "src": "3084:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 768, - "type": "msg", - "value": "msg" - }, - "id": 596, - "name": "Identifier", - "src": "4803:3:0" - } - ], - "id": 597, - "name": "MemberAccess", - "src": "4803:10:0" + "argumentTypes": null, + "id": 373, + "name": "sigR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 335, + "src": "3090:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 587, - "type": "string memory", - "value": "name" - }, - "id": 598, - "name": "Identifier", - "src": "4815:4:0" + "argumentTypes": null, + "id": 374, + "name": "sigS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 337, + "src": "3096:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 589, - "type": "bytes memory", - "value": "value" + "argumentTypes": null, + "id": 375, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "3102:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 599, - "name": "Identifier", - "src": "4821:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 591, - "type": "uint256", - "value": "validity" + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, - "id": 600, - "name": "Identifier", - "src": "4828:8:0" + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 370, + "name": "checkSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "3059:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" } - ], - "id": 601, - "name": "FunctionCall", - "src": "4780:57:0" - } - ], - "id": 602, - "name": "ExpressionStatement", - "src": "4780:57:0" - } - ], - "id": 603, - "name": "Block", - "src": "4774:68:0" - } - ], - "id": 604, - "name": "FunctionDefinition", - "src": "4686:156:0" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "setAttributeSigned", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 656, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "address", - "type": "address" }, - "id": 605, - "name": "ElementaryTypeName", - "src": "4874:7:0" - } - ], - "id": 606, - "name": "VariableDeclaration", - "src": "4874:16:0" - }, - { - "attributes": { - "constant": false, - "name": "sigV", - "scope": 656, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" - }, - "children": [ + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3059:48:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 607, - "name": "ElementaryTypeName", - "src": "4892:5:0" - } - ], - "id": 608, - "name": "VariableDeclaration", - "src": "4892:10:0" - }, - { - "attributes": { - "constant": false, - "name": "sigR", - "scope": 656, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "id": 377, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 339, + "src": "3109:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 609, - "name": "ElementaryTypeName", - "src": "4904:7:0" - } - ], - "id": 610, - "name": "VariableDeclaration", - "src": "4904:12:0" - }, - { - "attributes": { - "constant": false, - "name": "sigS", - "scope": 656, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "id": 378, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 341, + "src": "3123:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 611, - "name": "ElementaryTypeName", - "src": "4918:7:0" + "argumentTypes": null, + "id": 379, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 343, + "src": "3133:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 612, - "name": "VariableDeclaration", - "src": "4918:12:0" - }, - { - "attributes": { - "constant": false, - "name": "name", - "scope": 656, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string storage pointer" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 613, - "name": "ElementaryTypeName", - "src": "4932:6:0" - } - ], - "id": 614, - "name": "VariableDeclaration", - "src": "4932:11:0" - }, - { - "attributes": { - "constant": false, - "name": "value", - "scope": 656, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes memory", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes storage pointer" + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 615, - "name": "ElementaryTypeName", - "src": "4945:5:0" - } - ], - "id": 616, - "name": "VariableDeclaration", - "src": "4945:11:0" - }, - { - "attributes": { - "constant": false, - "name": "validity", - "scope": 656, - "stateVariable": false, - "storageLocation": "default", - "type": "uint256", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "uint", - "type": "uint256" + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 617, - "name": "ElementaryTypeName", - "src": "4958:4:0" + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 368, + "name": "addDelegate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 308, + 329 + ], + "referencedDeclaration": 308, + "src": "3037:11:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,bytes32,address,uint256)" } - ], - "id": 618, - "name": "VariableDeclaration", - "src": "4958:13:0" - } - ], - "id": 619, - "name": "ParameterList", - "src": "4873:99:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 620, - "name": "ParameterList", - "src": "4980:0:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 622 - ] }, - "children": [ - { - "attributes": { - "constant": false, - "name": "hash", - "scope": 656, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 621, - "name": "ElementaryTypeName", - "src": "4986:7:0" - } - ], - "id": 622, - "name": "VariableDeclaration", - "src": "4986:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes32", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$756", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_e5bbb0cf2a185ea034bc61efc4cb764352403a5c06c1da63a3fd765abbac4ea6", - "typeString": "literal_string \"setAttribute\"" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 762, - "type": "function () pure returns (bytes32)", - "value": "keccak256" - }, - "id": 623, - "name": "Identifier", - "src": "5001:9:0" + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3037:105:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 381, + "nodeType": "ExpressionStatement", + "src": "3037:105:0" + } + ] + }, + "documentation": null, + "id": 383, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "addDelegateSigned", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 344, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 331, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2763:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 330, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2763:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 333, + "name": "sigV", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2781:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 332, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2781:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 335, + "name": "sigR", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2793:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 334, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2793:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 337, + "name": "sigS", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2807:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 336, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2807:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 339, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2821:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 338, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2821:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 341, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2843:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 340, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2843:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 343, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 383, + "src": "2861:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 342, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2861:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2762:113:0" + }, + "payable": false, + "returnParameters": { + "id": 345, + "nodeType": "ParameterList", + "parameters": [], + "src": "2883:0:0" + }, + "scope": 706, + "src": "2736:411:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 427, + "nodeType": "Block", + "src": "3284:196:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 398, + "name": "delegates", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "3290:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(bytes32 => mapping(address => uint256)))" + } }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes1", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes1)", - "value": "byte" - }, - "id": 624, - "name": "ElementaryTypeNameExpression", - "src": "5011:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30783139", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 25", - "value": "0x19" - }, - "id": 625, - "name": "Literal", - "src": "5016:4:0" - } - ], - "id": 626, - "name": "FunctionCall", - "src": "5011:10:0" + "id": 404, + "indexExpression": { + "argumentTypes": null, + "id": 399, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3300:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - { - "attributes": { + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3290:19:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" + } + }, + "id": 405, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes1", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes1)", - "value": "byte" - }, - "id": 627, - "name": "ElementaryTypeNameExpression", - "src": "5023:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 628, - "name": "Literal", - "src": "5028:1:0" + "id": 401, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 389, + "src": "3320:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } - ], - "id": 629, - "name": "FunctionCall", - "src": "5023:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 779, - "type": "contract EthereumDIDRegistry", - "value": "this" - }, - "id": 630, - "name": "Identifier", - "src": "5032:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 21, - "type": "mapping(address => uint256)", - "value": "nonce" - }, - "id": 631, - "name": "Identifier", - "src": "5038:5:0" - }, + } + ], + "expression": { + "argumentTypes": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 606, - "type": "address", - "value": "identity" - }, - "id": 632, - "name": "Identifier", - "src": "5044:8:0" + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } ], - "id": 633, - "name": "IndexAccess", - "src": "5038:15:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 606, - "type": "address", - "value": "identity" - }, - "id": 634, - "name": "Identifier", - "src": "5055:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "736574417474726962757465", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"setAttribute\"", - "value": "setAttribute" - }, - "id": 635, - "name": "Literal", - "src": "5065:14:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 614, - "type": "string memory", - "value": "name" - }, - "id": 636, - "name": "Identifier", - "src": "5081:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 616, - "type": "bytes memory", - "value": "value" - }, - "id": 637, - "name": "Identifier", - "src": "5087:5:0" + "id": 400, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "3310:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 618, - "type": "uint256", - "value": "validity" - }, - "id": 638, - "name": "Identifier", - "src": "5094:8:0" + "id": 402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3310:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" } - ], - "id": 639, - "name": "FunctionCall", - "src": "5001:102:0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3290:44:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 406, + "indexExpression": { + "argumentTypes": null, + "id": 403, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 391, + "src": "3335:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3290:54:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 640, - "name": "VariableDeclarationStatement", - "src": "4986:117:0" + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 407, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "3347:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3290:60:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - { - "children": [ + "id": 409, + "nodeType": "ExpressionStatement", + "src": "3290:60:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 411, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3380:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 412, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 389, + "src": "3390:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 413, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 391, + "src": "3404:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 414, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "3414:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, { - "attributes": { + "argumentTypes": null, + "baseExpression": { "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false + "id": 415, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "3419:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - 583, - 604 - ], - "referencedDeclaration": 583, - "type": "function (address,address,string memory,bytes memory,uint256)", - "value": "setAttribute" - }, - "id": 641, - "name": "Identifier", - "src": "5110:12:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 606, - "type": "address", - "value": "identity" - }, - "id": 642, - "name": "Identifier", - "src": "5123:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 136, - "type": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)", - "value": "checkSignature" - }, - "id": 643, - "name": "Identifier", - "src": "5133:14:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 606, - "type": "address", - "value": "identity" - }, - "id": 644, - "name": "Identifier", - "src": "5148:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 608, - "type": "uint8", - "value": "sigV" - }, - "id": 645, - "name": "Identifier", - "src": "5158:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 610, - "type": "bytes32", - "value": "sigR" - }, - "id": 646, - "name": "Identifier", - "src": "5164:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 612, - "type": "bytes32", - "value": "sigS" - }, - "id": 647, - "name": "Identifier", - "src": "5170:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 622, - "type": "bytes32", - "value": "hash" - }, - "id": 648, - "name": "Identifier", - "src": "5176:4:0" - } - ], - "id": 649, - "name": "FunctionCall", - "src": "5133:48:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 614, - "type": "string memory", - "value": "name" - }, - "id": 650, - "name": "Identifier", - "src": "5183:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 616, - "type": "bytes memory", - "value": "value" - }, - "id": 651, - "name": "Identifier", - "src": "5189:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 618, - "type": "uint256", - "value": "validity" - }, - "id": 652, - "name": "Identifier", - "src": "5196:8:0" + "id": 417, + "indexExpression": { + "argumentTypes": null, + "id": 416, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3427:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } - ], - "id": 653, - "name": "FunctionCall", - "src": "5110:95:0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3419:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 654, - "name": "ExpressionStatement", - "src": "5110:95:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 410, + "name": "DIDDelegateChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "3361:18:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,address,uint256,uint256)" + } + }, + "id": 418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3361:76:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 419, + "nodeType": "EmitStatement", + "src": "3356:81:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 420, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "3443:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 422, + "indexExpression": { + "argumentTypes": null, + "id": 421, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3451:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3443:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 423, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "3463:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3463:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3443:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 426, + "nodeType": "ExpressionStatement", + "src": "3443:32:0" + } + ] + }, + "documentation": null, + "id": 428, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 394, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3267:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 395, + "name": "actor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "3277:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 655, - "name": "Block", - "src": "4980:230:0" + "id": 396, + "modifierName": { + "argumentTypes": null, + "id": 393, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "3257:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_address_$", + "typeString": "modifier (address,address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "3257:26:0" } ], - "id": 656, - "name": "FunctionDefinition", - "src": "4846:364:0" + "name": "revokeDelegate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 392, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 385, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "3175:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 384, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3175:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "name": "actor", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "3193:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 386, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3193:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 389, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "3208:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 388, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3208:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 391, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "3230:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 390, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3230:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3174:73:0" + }, + "payable": false, + "returnParameters": { + "id": 397, + "nodeType": "ParameterList", + "parameters": [], + "src": "3284:0:0" + }, + "scope": 706, + "src": "3151:329:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" }, { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "name": "revokeAttribute", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 689, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "body": { + "id": 445, + "nodeType": "Block", + "src": "3573:71:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "address", - "type": "address" - }, - "id": 657, - "name": "ElementaryTypeName", - "src": "5239:7:0" - } - ], - "id": 658, - "name": "VariableDeclaration", - "src": "5239:16:0" - }, - { - "attributes": { - "constant": false, - "name": "actor", - "scope": 689, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "id": 438, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 430, + "src": "3594:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 439, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 721, + "src": "3604:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } }, - "id": 659, - "name": "ElementaryTypeName", - "src": "5257:7:0" + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3604:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 441, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 432, + "src": "3616:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 442, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 434, + "src": "3630:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } } ], - "id": 660, - "name": "VariableDeclaration", - "src": "5257:13:0" - }, - { - "attributes": { - "constant": false, - "name": "name", - "scope": 689, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string storage pointer" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 661, - "name": "ElementaryTypeName", - "src": "5272:6:0" + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 437, + "name": "revokeDelegate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 428, + 446 + ], + "referencedDeclaration": 428, + "src": "3579:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (address,address,bytes32,address)" } - ], - "id": 662, - "name": "VariableDeclaration", - "src": "5272:11:0" + }, + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3579:60:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { + "id": 444, + "nodeType": "ExpressionStatement", + "src": "3579:60:0" + } + ] + }, + "documentation": null, + "id": 446, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "revokeDelegate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 435, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 430, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 446, + "src": "3508:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 429, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3508:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 432, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 446, + "src": "3526:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 431, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3526:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 434, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 446, + "src": "3548:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 433, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3548:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3507:58:0" + }, + "payable": false, + "returnParameters": { + "id": 436, + "nodeType": "ParameterList", + "parameters": [], + "src": "3573:0:0" + }, + "scope": 706, + "src": "3484:160:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 495, + "nodeType": "Block", + "src": "3783:250:0", + "statements": [ + { + "assignments": [ + 462 + ], + "declarations": [ + { "constant": false, - "name": "value", - "scope": 689, + "id": 462, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3789:12:0", "stateVariable": false, "storageLocation": "default", - "type": "bytes memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 461, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3789:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, "value": null, "visibility": "internal" - }, - "children": [ + } + ], + "id": 481, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "bytes", - "type": "bytes storage pointer" + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 465, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3819:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 464, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3814:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" }, - "id": 663, - "name": "ElementaryTypeName", - "src": "5285:5:0" - } - ], - "id": 664, - "name": "VariableDeclaration", - "src": "5285:11:0" - } - ], - "id": 665, - "name": "ParameterList", - "src": "5238:60:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 670, - "name": "ParameterList", - "src": "5335:0:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 37, - "type": "modifier (address,address)", - "value": "onlyOwner" - }, - "id": 666, - "name": "Identifier", - "src": "5308:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 658, - "type": "address", - "value": "identity" - }, - "id": 667, - "name": "Identifier", - "src": "5318:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 660, - "type": "address", - "value": "actor" - }, - "id": 668, - "name": "Identifier", - "src": "5328:5:0" - } - ], - "id": 669, - "name": "ModifierInvocation", - "src": "5308:26:0" - }, - { - "children": [ - { - "children": [ + "id": 466, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3814:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 468, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3831:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 467, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3826:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3826:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 470, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "3835:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + } + }, { - "attributes": { + "argumentTypes": null, + "baseExpression": { "argumentTypes": null, + "id": 471, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "3841:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 475, + "indexExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 473, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "3861:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 472, + "name": "identityOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 92, + "src": "3847:13:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$", + "typeString": "function (address) view returns (address)" + } + }, + "id": 474, "isConstant": false, "isLValue": false, "isPure": false, - "isStructConstructorCall": false, + "kind": "functionCall", "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false + "names": [], + "nodeType": "FunctionCall", + "src": "3847:23:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, - "children": [ + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3841:30:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 476, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "3873:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "7265766f6b6544656c6567617465", + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3883:16:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f63fea8fc7bd9fe254f7933b81fa1716b5a073ddd1aa14e432aa87d81784f86c", + "typeString": "literal_string \"revokeDelegate\"" + }, + "value": "revokeDelegate" + }, + { + "argumentTypes": null, + "id": 478, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 456, + "src": "3901:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 479, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "3915:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_f63fea8fc7bd9fe254f7933b81fa1716b5a073ddd1aa14e432aa87d81784f86c", + "typeString": "literal_string \"revokeDelegate\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 463, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "3804:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3804:120:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3789:135:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 483, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "3945:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 69, - "type": "function (address,string memory,bytes memory,uint256,uint256)", - "value": "DIDAttributeChanged" - }, - "id": 671, - "name": "Identifier", - "src": "5341:19:0" + "argumentTypes": null, + "id": 485, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 448, + "src": "3970:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 658, - "type": "address", - "value": "identity" - }, - "id": 672, - "name": "Identifier", - "src": "5361:8:0" + "argumentTypes": null, + "id": 486, + "name": "sigV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 450, + "src": "3980:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 662, - "type": "string memory", - "value": "name" - }, - "id": 673, - "name": "Identifier", - "src": "5371:4:0" + "argumentTypes": null, + "id": 487, + "name": "sigR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "3986:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 664, - "type": "bytes memory", - "value": "value" - }, - "id": 674, - "name": "Identifier", - "src": "5377:5:0" + "argumentTypes": null, + "id": 488, + "name": "sigS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 454, + "src": "3992:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" + "argumentTypes": null, + "id": 489, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "3998:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 675, - "name": "Literal", - "src": "5384:1:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "uint256" + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 17, - "type": "mapping(address => uint256)", - "value": "changed" - }, - "id": 676, - "name": "Identifier", - "src": "5387:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 658, - "type": "address", - "value": "identity" - }, - "id": 677, - "name": "Identifier", - "src": "5395:8:0" - } - ], - "id": 678, - "name": "IndexAccess", - "src": "5387:17:0" + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 484, + "name": "checkSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "3955:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" } - ], - "id": 679, - "name": "FunctionCall", - "src": "5341:64:0" + }, + "id": 490, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3955:48:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 491, + "name": "delegateType", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 456, + "src": "4005:12:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 492, + "name": "delegate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 458, + "src": "4019:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 482, + "name": "revokeDelegate", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 428, + 446 + ], + "referencedDeclaration": 428, + "src": "3930:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_address_$returns$__$", + "typeString": "function (address,address,bytes32,address)" + } + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3930:98:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 494, + "nodeType": "ExpressionStatement", + "src": "3930:98:0" + } + ] + }, + "documentation": null, + "id": 496, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "revokeDelegateSigned", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 459, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 448, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3678:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 447, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3678:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 450, + "name": "sigV", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3696:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 449, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3696:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 452, + "name": "sigR", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3708:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 451, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3708:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 454, + "name": "sigS", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3722:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 453, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3722:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 456, + "name": "delegateType", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3736:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 455, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3736:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 458, + "name": "delegate", + "nodeType": "VariableDeclaration", + "scope": 496, + "src": "3758:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 457, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3758:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3677:98:0" + }, + "payable": false, + "returnParameters": { + "id": 460, + "nodeType": "ParameterList", + "parameters": [], + "src": "3783:0:0" + }, + "scope": 706, + "src": "3648:385:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 532, + "nodeType": "Block", + "src": "4171:131:0", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 514, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "4202:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 515, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "4212:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 516, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 504, + "src": "4218:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 517, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "4225:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 518, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "4231:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4225:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 520, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "4241:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 522, + "indexExpression": { + "argumentTypes": null, + "id": 521, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "4249:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4241:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 680, - "name": "ExpressionStatement", - "src": "5341:64:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 513, + "name": "DIDAttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "4182:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,bytes memory,uint256,uint256)" + } + }, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4182:77:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 524, + "nodeType": "EmitStatement", + "src": "4177:82:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 530, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 525, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "4265:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 527, + "indexExpression": { + "argumentTypes": null, + "id": 526, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "4273:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4265:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 528, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "4285:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4285:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4265:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 531, + "nodeType": "ExpressionStatement", + "src": "4265:32:0" + } + ] + }, + "documentation": null, + "id": 533, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 509, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "4154:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "children": [ + "argumentTypes": null, + "id": 510, + "name": "actor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "4164:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 511, + "modifierName": { + "argumentTypes": null, + "id": 508, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "4144:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_address_$", + "typeString": "modifier (address,address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4144:26:0" + } + ], + "name": "setAttribute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 507, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 498, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 533, + "src": "4059:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 497, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4059:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 500, + "name": "actor", + "nodeType": "VariableDeclaration", + "scope": 533, + "src": "4077:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 499, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4077:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 502, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 533, + "src": "4092:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 501, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4092:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 504, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 533, + "src": "4106:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 503, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4106:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 506, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 533, + "src": "4119:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 505, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4119:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4058:76:0" + }, + "payable": false, + "returnParameters": { + "id": 512, + "nodeType": "ParameterList", + "parameters": [], + "src": "4171:0:0" + }, + "scope": 706, + "src": "4037:265:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 553, + "nodeType": "Block", + "src": "4395:68:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 545, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 535, + "src": "4414:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { + "argumentTypes": null, + "expression": { "argumentTypes": null, + "id": 546, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 721, + "src": "4424:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4424:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 548, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "4436:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 549, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 539, + "src": "4442:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 550, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 541, + "src": "4449:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 544, + "name": "setAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 533, + 554 + ], + "referencedDeclaration": 533, + "src": "4401:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (address,address,bytes32,bytes memory,uint256)" + } + }, + "id": 551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4401:57:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 552, + "nodeType": "ExpressionStatement", + "src": "4401:57:0" + } + ] + }, + "documentation": null, + "id": 554, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setAttribute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 542, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 535, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "4328:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 534, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4328:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 537, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "4346:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 536, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4346:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 539, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "4360:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 538, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4360:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 541, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 554, + "src": "4373:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 540, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4373:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4327:60:0" + }, + "payable": false, + "returnParameters": { + "id": 543, + "nodeType": "ParameterList", + "parameters": [], + "src": "4395:0:0" + }, + "scope": 706, + "src": "4306:157:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 605, + "nodeType": "Block", + "src": "4602:229:0", + "statements": [ + { + "assignments": [ + 572 + ], + "declarations": [ + { + "constant": false, + "id": 572, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4608:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 571, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4608:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 590, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4638:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 574, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, "lValueRequested": false, - "operator": "=", - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 17, - "type": "mapping(address => uint256)", - "value": "changed" - }, - "id": 681, - "name": "Identifier", - "src": "5411:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 658, - "type": "address", - "value": "identity" - }, - "id": 682, - "name": "Identifier", - "src": "5419:8:0" - } - ], - "id": 683, - "name": "IndexAccess", - "src": "5411:17:0" + "nodeType": "ElementaryTypeNameExpression", + "src": "4633:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, + "typeName": "byte" + }, + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4633:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "number", - "referencedDeclaration": null, - "type": "uint256" + "argumentTypes": null, + "hexValue": "30", + "id": 578, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4650:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 760, - "type": "block", - "value": "block" - }, - "id": 684, - "name": "Identifier", - "src": "5431:5:0" - } - ], - "id": 685, - "name": "MemberAccess", - "src": "5431:12:0" + "value": "0" } ], - "id": 686, - "name": "Assignment", - "src": "5411:32:0" - } - ], - "id": 687, - "name": "ExpressionStatement", - "src": "5411:32:0" - } - ], - "id": 688, - "name": "Block", - "src": "5335:113:0" - } - ], - "id": 689, - "name": "FunctionDefinition", - "src": "5214:234:0" - }, - { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "revokeAttribute", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 707, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 577, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4645:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 579, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4645:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 580, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "4654:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + } + }, { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 581, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "4660:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } }, - "id": 690, - "name": "ElementaryTypeName", - "src": "5477:7:0" - } - ], - "id": 691, - "name": "VariableDeclaration", - "src": "5477:16:0" - }, - { - "attributes": { - "constant": false, - "name": "name", - "scope": 707, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ + "id": 583, + "indexExpression": { + "argumentTypes": null, + "id": 582, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "4666:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4660:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, { - "attributes": { - "name": "string", - "type": "string storage pointer" + "argumentTypes": null, + "id": 584, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "4677:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "736574417474726962757465", + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4687:14:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e5bbb0cf2a185ea034bc61efc4cb764352403a5c06c1da63a3fd765abbac4ea6", + "typeString": "literal_string \"setAttribute\"" }, - "id": 692, - "name": "ElementaryTypeName", - "src": "5495:6:0" + "value": "setAttribute" + }, + { + "argumentTypes": null, + "id": 586, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "4703:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 587, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 566, + "src": "4709:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 588, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 568, + "src": "4716:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 693, - "name": "VariableDeclaration", - "src": "5495:11:0" - }, - { - "attributes": { - "constant": false, - "name": "value", - "scope": 707, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes memory", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes", - "type": "bytes storage pointer" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 694, - "name": "ElementaryTypeName", - "src": "5508:5:0" + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_stringliteral_e5bbb0cf2a185ea034bc61efc4cb764352403a5c06c1da63a3fd765abbac4ea6", + "typeString": "literal_string \"setAttribute\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 573, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "4623:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" } - ], - "id": 695, - "name": "VariableDeclaration", - "src": "5508:11:0" - } - ], - "id": 696, - "name": "ParameterList", - "src": "5476:44:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 697, - "name": "ParameterList", - "src": "5528:0:0" - }, - { - "children": [ - { - "children": [ + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4623:102:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4608:117:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false - }, - "children": [ + "argumentTypes": null, + "id": 592, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "4744:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "overloadedDeclarations": [ - 689, - 707 - ], - "referencedDeclaration": 689, - "type": "function (address,address,string memory,bytes memory)", - "value": "revokeAttribute" - }, - "id": 698, - "name": "Identifier", - "src": "5534:15:0" + "argumentTypes": null, + "id": 594, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "4769:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 691, - "type": "address", - "value": "identity" - }, - "id": 699, - "name": "Identifier", - "src": "5550:8:0" + "argumentTypes": null, + "id": 595, + "name": "sigV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "4779:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "member_name": "sender", - "referencedDeclaration": null, - "type": "address" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 768, - "type": "msg", - "value": "msg" - }, - "id": 700, - "name": "Identifier", - "src": "5560:3:0" - } - ], - "id": 701, - "name": "MemberAccess", - "src": "5560:10:0" + "argumentTypes": null, + "id": 596, + "name": "sigR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 560, + "src": "4785:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 693, - "type": "string memory", - "value": "name" - }, - "id": 702, - "name": "Identifier", - "src": "5572:4:0" + "argumentTypes": null, + "id": 597, + "name": "sigS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 562, + "src": "4791:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 695, - "type": "bytes memory", - "value": "value" - }, - "id": 703, - "name": "Identifier", - "src": "5578:5:0" + "argumentTypes": null, + "id": 598, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 572, + "src": "4797:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } } ], - "id": 704, - "name": "FunctionCall", - "src": "5534:50:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 593, + "name": "checkSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "4754:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" + } + }, + "id": 599, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4754:48:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 600, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "4804:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 601, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 566, + "src": "4810:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 602, + "name": "validity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 568, + "src": "4817:8:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 705, - "name": "ExpressionStatement", - "src": "5534:50:0" - } - ], - "id": 706, - "name": "Block", - "src": "5528:61:0" - } - ], - "id": 707, - "name": "FunctionDefinition", - "src": "5452:137:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 591, + "name": "setAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 533, + 554 + ], + "referencedDeclaration": 533, + "src": "4731:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$", + "typeString": "function (address,address,bytes32,bytes memory,uint256)" + } + }, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4731:95:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 604, + "nodeType": "ExpressionStatement", + "src": "4731:95:0" + } + ] + }, + "documentation": null, + "id": 606, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setAttributeSigned", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 569, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 556, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4495:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4495:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 558, + "name": "sigV", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4513:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 557, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4513:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 560, + "name": "sigR", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4525:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 559, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4525:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 562, + "name": "sigS", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4539:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 561, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4539:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 564, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4553:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 563, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4553:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 566, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4567:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 565, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4567:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 568, + "name": "validity", + "nodeType": "VariableDeclaration", + "scope": 606, + "src": "4580:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 567, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4580:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4494:100:0" + }, + "payable": false, + "returnParameters": { + "id": 570, + "nodeType": "ParameterList", + "parameters": [], + "src": "4602:0:0" + }, + "scope": 706, + "src": "4467:364:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" }, { - "attributes": { - "constant": false, - "implemented": true, - "isConstructor": false, - "modifiers": [ - null - ], - "name": "revokeAttributeSigned", - "payable": false, - "scope": 756, - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - "children": [ - { - "children": [ - { - "attributes": { - "constant": false, - "name": "identity", - "scope": 755, - "stateVariable": false, - "storageLocation": "default", - "type": "address", - "value": null, - "visibility": "internal" - }, - "children": [ + "body": { + "id": 638, + "nodeType": "Block", + "src": "4957:118:0", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 622, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "4988:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 623, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 612, + "src": "4998:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 624, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "5004:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5011:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, { - "attributes": { - "name": "address", - "type": "address" + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 626, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "5014:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } }, - "id": 708, - "name": "ElementaryTypeName", - "src": "5623:7:0" + "id": 628, + "indexExpression": { + "argumentTypes": null, + "id": 627, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "5022:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5014:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], - "id": 709, - "name": "VariableDeclaration", - "src": "5623:16:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 621, + "name": "DIDAttributeChanged", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "4968:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,bytes32,bytes memory,uint256,uint256)" + } + }, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4968:64:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { - "constant": false, - "name": "sigV", - "scope": 755, - "stateVariable": false, - "storageLocation": "default", - "type": "uint8", - "value": null, - "visibility": "internal" + "id": 630, + "nodeType": "EmitStatement", + "src": "4963:69:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 631, + "name": "changed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 17, + "src": "5038:7:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 633, + "indexExpression": { + "argumentTypes": null, + "id": 632, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "5046:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5038:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "children": [ - { - "attributes": { - "name": "uint8", - "type": "uint8" - }, - "id": 710, - "name": "ElementaryTypeName", - "src": "5641:5:0" + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 634, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 711, + "src": "5058:5:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 635, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "number", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5058:12:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 711, - "name": "VariableDeclaration", - "src": "5641:10:0" + }, + "src": "5038:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "5038:32:0" + } + ] + }, + "documentation": null, + "id": 639, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 617, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "4940:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 618, + "name": "actor", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 610, + "src": "4950:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 619, + "modifierName": { + "argumentTypes": null, + "id": 616, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "4930:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$_t_address_$_t_address_$", + "typeString": "modifier (address,address)" + } + }, + "nodeType": "ModifierInvocation", + "src": "4930:26:0" + } + ], + "name": "revokeAttribute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 608, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 639, + "src": "4860:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 607, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4860:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 610, + "name": "actor", + "nodeType": "VariableDeclaration", + "scope": 639, + "src": "4878:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 609, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4878:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 612, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 639, + "src": "4893:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" }, - { - "attributes": { - "constant": false, - "name": "sigR", - "scope": 755, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "bytes32", - "type": "bytes32" - }, - "id": 712, - "name": "ElementaryTypeName", - "src": "5653:7:0" - } - ], - "id": 713, - "name": "VariableDeclaration", - "src": "5653:12:0" + "typeName": { + "id": 611, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4893:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, - { - "attributes": { - "constant": false, - "name": "sigS", - "scope": 755, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 614, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 639, + "src": "4907:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 613, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4907:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4859:61:0" + }, + "payable": false, + "returnParameters": { + "id": 620, + "nodeType": "ParameterList", + "parameters": [], + "src": "4957:0:0" + }, + "scope": 706, + "src": "4835:240:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 656, + "nodeType": "Block", + "src": "5156:61:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 649, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 641, + "src": "5178:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, { - "attributes": { - "name": "bytes32", - "type": "bytes32" + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 650, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 721, + "src": "5188:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } }, - "id": 714, - "name": "ElementaryTypeName", - "src": "5667:7:0" + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5188:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 652, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "5200:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 653, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 645, + "src": "5206:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } } ], - "id": 715, - "name": "VariableDeclaration", - "src": "5667:12:0" - }, - { - "attributes": { - "constant": false, - "name": "name", - "scope": 755, - "stateVariable": false, - "storageLocation": "default", - "type": "string memory", - "value": null, - "visibility": "internal" - }, - "children": [ - { - "attributes": { - "name": "string", - "type": "string storage pointer" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 716, - "name": "ElementaryTypeName", - "src": "5681:6:0" + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 648, + "name": "revokeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 639, + 657 + ], + "referencedDeclaration": 639, + "src": "5162:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,bytes32,bytes memory)" } - ], - "id": 717, - "name": "VariableDeclaration", - "src": "5681:11:0" + }, + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5162:50:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - { - "attributes": { + "id": 655, + "nodeType": "ExpressionStatement", + "src": "5162:50:0" + } + ] + }, + "documentation": null, + "id": 657, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "revokeAttribute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 641, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 657, + "src": "5104:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 640, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5104:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 643, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 657, + "src": "5122:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 642, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5122:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 645, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 657, + "src": "5136:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 644, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5136:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5103:45:0" + }, + "payable": false, + "returnParameters": { + "id": 647, + "nodeType": "ParameterList", + "parameters": [], + "src": "5156:0:0" + }, + "scope": 706, + "src": "5079:138:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 704, + "nodeType": "Block", + "src": "5343:216:0", + "statements": [ + { + "assignments": [ + 673 + ], + "declarations": [ + { "constant": false, - "name": "value", - "scope": 755, + "id": 673, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5349:12:0", "stateVariable": false, "storageLocation": "default", - "type": "bytes memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 672, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5349:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, "value": null, "visibility": "internal" - }, - "children": [ + } + ], + "id": 690, + "initialValue": { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "bytes", - "type": "bytes storage pointer" - }, - "id": 718, - "name": "ElementaryTypeName", - "src": "5694:5:0" - } - ], - "id": 719, - "name": "VariableDeclaration", - "src": "5694:11:0" - } - ], - "id": 720, - "name": "ParameterList", - "src": "5622:84:0" - }, - { - "attributes": { - "parameters": [ - null - ] - }, - "children": [], - "id": 721, - "name": "ParameterList", - "src": "5714:0:0" - }, - { - "children": [ - { - "attributes": { - "assignments": [ - 723 - ] - }, - "children": [ - { - "attributes": { - "constant": false, - "name": "hash", - "scope": 755, - "stateVariable": false, - "storageLocation": "default", - "type": "bytes32", - "value": null, - "visibility": "internal" - }, - "children": [ + "argumentTypes": null, + "arguments": [ { - "attributes": { - "name": "bytes32", - "type": "bytes32" + "argumentTypes": null, + "hexValue": "30783139", + "id": 676, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5379:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" }, - "id": 722, - "name": "ElementaryTypeName", - "src": "5720:7:0" + "value": "0x19" } ], - "id": 723, - "name": "VariableDeclaration", - "src": "5720:12:0" - }, - { - "attributes": { - "argumentTypes": null, + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 675, "isConstant": false, "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, + "isPure": true, "lValueRequested": false, - "names": [ - null - ], - "type": "bytes32", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_EthereumDIDRegistry_$756", - "typeString": "contract EthereumDIDRegistry" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_stringliteral_168e4cc0ad03cc4b6896d89f8a470b9997cd8bbe87ac639c5474674fa958f860", - "typeString": "literal_string \"revokeAttribute\"" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 762, - "type": "function () pure returns (bytes32)", - "value": "keccak256" - }, - "id": 724, - "name": "Identifier", - "src": "5735:9:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes1", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes1)", - "value": "byte" - }, - "id": 725, - "name": "ElementaryTypeNameExpression", - "src": "5745:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30783139", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 25", - "value": "0x19" - }, - "id": 726, - "name": "Literal", - "src": "5750:4:0" - } - ], - "id": 727, - "name": "FunctionCall", - "src": "5745:10:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": true, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "bytes1", - "type_conversion": true - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "type": "type(bytes1)", - "value": "byte" - }, - "id": 728, - "name": "ElementaryTypeNameExpression", - "src": "5757:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "30", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "number", - "type": "int_const 0", - "value": "0" - }, - "id": 729, - "name": "Literal", - "src": "5762:1:0" - } - ], - "id": 730, - "name": "FunctionCall", - "src": "5757:7:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 779, - "type": "contract EthereumDIDRegistry", - "value": "this" - }, - "id": 731, - "name": "Identifier", - "src": "5766:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "type": "uint256" - }, - "children": [ - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 21, - "type": "mapping(address => uint256)", - "value": "nonce" - }, - "id": 732, - "name": "Identifier", - "src": "5772:5:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 709, - "type": "address", - "value": "identity" - }, - "id": 733, - "name": "Identifier", - "src": "5778:8:0" - } - ], - "id": 734, - "name": "IndexAccess", - "src": "5772:15:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 709, - "type": "address", - "value": "identity" - }, - "id": 735, - "name": "Identifier", - "src": "5789:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "hexvalue": "7265766f6b65417474726962757465", - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "subdenomination": null, - "token": "string", - "type": "literal_string \"revokeAttribute\"", - "value": "revokeAttribute" - }, - "id": 736, - "name": "Literal", - "src": "5799:17:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 717, - "type": "string memory", - "value": "name" - }, - "id": 737, - "name": "Identifier", - "src": "5818:4:0" + "nodeType": "ElementaryTypeNameExpression", + "src": "5374:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" }, + "typeName": "byte" + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5374:10:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 719, - "type": "bytes memory", - "value": "value" + "argumentTypes": null, + "hexValue": "30", + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5391:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "id": 738, - "name": "Identifier", - "src": "5824:5:0" + "value": "0" } ], - "id": 739, - "name": "FunctionCall", - "src": "5735:95:0" - } - ], - "id": 740, - "name": "VariableDeclarationStatement", - "src": "5720:110:0" - }, - { - "children": [ - { - "attributes": { - "argumentTypes": null, + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 678, "isConstant": false, "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, + "isPure": true, "lValueRequested": false, - "names": [ - null - ], - "type": "tuple()", - "type_conversion": false + "nodeType": "ElementaryTypeNameExpression", + "src": "5386:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5386:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 681, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 734, + "src": "5395:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 682, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 21, + "src": "5401:5:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 684, + "indexExpression": { + "argumentTypes": null, + "id": 683, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "5407:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5401:15:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 685, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "5418:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "7265766f6b65417474726962757465", + "id": 686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5428:17:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_168e4cc0ad03cc4b6896d89f8a470b9997cd8bbe87ac639c5474674fa958f860", + "typeString": "literal_string \"revokeAttribute\"" + }, + "value": "revokeAttribute" + }, + { + "argumentTypes": null, + "id": 687, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 667, + "src": "5447:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 688, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 669, + "src": "5453:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_EthereumDIDRegistry_$706", + "typeString": "contract EthereumDIDRegistry" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" }, - "children": [ + { + "typeIdentifier": "t_stringliteral_168e4cc0ad03cc4b6896d89f8a470b9997cd8bbe87ac639c5474674fa958f860", + "typeString": "literal_string \"revokeAttribute\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 674, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 715, + "src": "5364:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5364:95:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5349:110:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 692, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "5482:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_string_memory_ptr", - "typeString": "string memory" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "overloadedDeclarations": [ - 689, - 707 - ], - "referencedDeclaration": 689, - "type": "function (address,address,string memory,bytes memory)", - "value": "revokeAttribute" - }, - "id": 741, - "name": "Identifier", - "src": "5837:15:0" + "argumentTypes": null, + "id": 694, + "name": "identity", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 659, + "src": "5507:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 709, - "type": "address", - "value": "identity" - }, - "id": 742, - "name": "Identifier", - "src": "5853:8:0" + "argumentTypes": null, + "id": 695, + "name": "sigV", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 661, + "src": "5517:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } }, { - "attributes": { - "argumentTypes": null, - "isConstant": false, - "isLValue": false, - "isPure": false, - "isStructConstructorCall": false, - "lValueRequested": false, - "names": [ - null - ], - "type": "address", - "type_conversion": false - }, - "children": [ - { - "attributes": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 136, - "type": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)", - "value": "checkSignature" - }, - "id": 743, - "name": "Identifier", - "src": "5863:14:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 709, - "type": "address", - "value": "identity" - }, - "id": 744, - "name": "Identifier", - "src": "5878:8:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 711, - "type": "uint8", - "value": "sigV" - }, - "id": 745, - "name": "Identifier", - "src": "5888:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 713, - "type": "bytes32", - "value": "sigR" - }, - "id": 746, - "name": "Identifier", - "src": "5894:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 715, - "type": "bytes32", - "value": "sigS" - }, - "id": 747, - "name": "Identifier", - "src": "5900:4:0" - }, - { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 723, - "type": "bytes32", - "value": "hash" - }, - "id": 748, - "name": "Identifier", - "src": "5906:4:0" - } - ], - "id": 749, - "name": "FunctionCall", - "src": "5863:48:0" + "argumentTypes": null, + "id": 696, + "name": "sigR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "5523:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 717, - "type": "string memory", - "value": "name" - }, - "id": 750, - "name": "Identifier", - "src": "5913:4:0" + "argumentTypes": null, + "id": 697, + "name": "sigS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 665, + "src": "5529:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } }, { - "attributes": { - "argumentTypes": null, - "overloadedDeclarations": [ - null - ], - "referencedDeclaration": 719, - "type": "bytes memory", - "value": "value" - }, - "id": 751, - "name": "Identifier", - "src": "5919:5:0" + "argumentTypes": null, + "id": 698, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 673, + "src": "5535:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } } ], - "id": 752, - "name": "FunctionCall", - "src": "5837:88:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 693, + "name": "checkSignature", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 132, + "src": "5492:14:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (address,uint8,bytes32,bytes32,bytes32) returns (address)" + } + }, + "id": 699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5492:48:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 700, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 667, + "src": "5542:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 701, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 669, + "src": "5548:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } } ], - "id": 753, - "name": "ExpressionStatement", - "src": "5837:88:0" - } - ], - "id": 754, - "name": "Block", - "src": "5714:216:0" - } - ], - "id": 755, - "name": "FunctionDefinition", - "src": "5592:338:0" + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 691, + "name": "revokeAttribute", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 639, + 657 + ], + "referencedDeclaration": 639, + "src": "5466:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,bytes32,bytes memory)" + } + }, + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5466:88:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 703, + "nodeType": "ExpressionStatement", + "src": "5466:88:0" + } + ] + }, + "documentation": null, + "id": 705, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "revokeAttributeSigned", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 670, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 659, + "name": "identity", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5251:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5251:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 661, + "name": "sigV", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5269:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 660, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5269:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 663, + "name": "sigR", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5281:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 662, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5281:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 665, + "name": "sigS", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5295:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 664, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5295:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 667, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5309:12:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 666, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5309:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 669, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 705, + "src": "5323:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 668, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5323:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5250:85:0" + }, + "payable": false, + "returnParameters": { + "id": 671, + "nodeType": "ParameterList", + "parameters": [], + "src": "5343:0:0" + }, + "scope": 706, + "src": "5220:339:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" } ], - "id": 756, - "name": "ContractDefinition", - "src": "25:5908:0" + "scope": 707, + "src": "25:5537:0" } ], - "id": 757, - "name": "SourceUnit", - "src": "0:5934:0" + "src": "0:5563:0" }, "compiler": { "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "1": { "events": {}, "links": {}, - "address": "0x160c5ce58e2cc4fe7cc45a9dd569a10083b2a275" + "address": "0xdca7ef03e98e0dc2b855be647c39abe984fcf21b" }, "3": { "events": {}, "links": {}, - "address": "0x160c5ce58e2cc4fe7cc45a9dd569a10083b2a275" + "address": "0xdca7ef03e98e0dc2b855be647c39abe984fcf21b" }, "4": { "events": {}, "links": {}, - "address": "0x160c5ce58e2cc4fe7cc45a9dd569a10083b2a275" + "address": "0xdca7ef03e98e0dc2b855be647c39abe984fcf21b" }, "42": { "events": {}, "links": {}, - "address": "0x160c5ce58e2cc4fe7cc45a9dd569a10083b2a275" + "address": "0xdca7ef03e98e0dc2b855be647c39abe984fcf21b" } }, - "schemaVersion": "1.0.1", - "updatedAt": "2018-03-31T20:45:29.810Z" + "schemaVersion": "2.0.0", + "updatedAt": "2018-06-15T00:50:05.725Z" } \ No newline at end of file diff --git a/package.json b/package.json index 4220292..f702b7b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ethr-did-registry", - "version": "0.0.2", + "version": "0.0.3", "description": "A repository storing keys and other data about Decentralized Identifiers (DIDs)", "main": "build/contracts/EthereumDIDRegistry.json", "directories": {