From 35e785b61cea8d96f70afcc68c6d14fbd787e564 Mon Sep 17 00:00:00 2001 From: "aziz.karabashov" Date: Wed, 6 Dec 2023 19:01:19 +0500 Subject: [PATCH] Add etherium DID registry and universal DID resolver contract to genesis Signed-off-by: aziz.karabashov --- indy-besu/docs/design/cl-registry.md | 4 +- indy-besu/docs/design/did-methods.md | 2 +- indy-besu/network/config/besu/genesis.json | 87 ++++++++++++------- .../contracts-ts/DidRegistry.ts | 2 +- .../contracts-ts/UniversalDidReolver.ts | 2 +- .../cl/CredentialDefinitionRegistry.sol | 10 +-- .../contracts/cl/SchemaRegistry.sol | 4 +- .../contracts/did/UniversalDidResolver.sol | 8 +- indy-besu/smart_contracts/package.json | 2 +- .../smart_contracts/scripts/genesis/config.ts | 23 ++++- .../contracts/credentialDefinitionRegistry.ts | 10 +-- .../genesis/contracts/ethereumDidRegistry.ts | 12 +++ .../scripts/genesis/contracts/index.ts | 2 + .../genesis/contracts/schemaRegistry.ts | 8 +- .../genesis/contracts/universalDidResolver.ts | 25 ++++++ .../scripts/genesis/generate.ts | 4 + .../test/utils/contract-helpers.ts | 6 +- 17 files changed, 149 insertions(+), 62 deletions(-) create mode 100644 indy-besu/smart_contracts/scripts/genesis/contracts/ethereumDidRegistry.ts create mode 100644 indy-besu/smart_contracts/scripts/genesis/contracts/universalDidResolver.ts diff --git a/indy-besu/docs/design/cl-registry.md b/indy-besu/docs/design/cl-registry.md index 697cec365..17261d830 100644 --- a/indy-besu/docs/design/cl-registry.md +++ b/indy-besu/docs/design/cl-registry.md @@ -9,7 +9,7 @@ | parameter | value | |--------------------|-----------------------------------------------------------------| | id | “did:” method-name “:” namespace “:” method-specific-id | -| method-name | “indy2” | +| method-name | “indy2”, “indy”, “sov”, “ethr” | | namespace | “testnet”/"mainnet" | | indy-id | /anoncreds/v0/SCHEMA// | @@ -136,7 +136,7 @@ Contract name: **SchemaRegistry** | parameter | value | |--------------------|---------------------------------------------------------| | id | “did:” method-name “:” namespace “:” method-specific-id | -| method-name | “indy2” | +| method-name | “indy2”, “indy”, “sov”, “ethr” | | namespace | “testnet”/"mainnet" | | indy-id | /anoncreds/v0/CLAIM_DEF// | diff --git a/indy-besu/docs/design/did-methods.md b/indy-besu/docs/design/did-methods.md index 139ee7564..85fa624bf 100644 --- a/indy-besu/docs/design/did-methods.md +++ b/indy-besu/docs/design/did-methods.md @@ -36,7 +36,7 @@ Example: | parameter | value | |--------------------|---------------------------------------------------------| | did | “did:” method-name “:” namespace “:” method-specific-id | -| method-name | "indy2" | +| method-name | “indy2”, “indy”, “sov” | | namespace | “testnet”/"mainnet" | | method-specific-id | indy-id | | indy-id | Base58(Truncate_msb(16(SHA256(publicKey)))) | diff --git a/indy-besu/network/config/besu/genesis.json b/indy-besu/network/config/besu/genesis.json index ef9c1e2a1..b81f3c04a 100644 --- a/indy-besu/network/config/besu/genesis.json +++ b/indy-besu/network/config/besu/genesis.json @@ -76,23 +76,23 @@ "0x0000000000000000000000000000000000008888": { "comment": "Proxy: Account permissioning smart contract", "balance": "0", - "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea264697066735822122021a4e888b9c1db781305504c1fe4d900ea72bacfd972be843c095665e340c1f864736f6c63430008150033", + "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220b318f7afb60b67fd3dc094cf8eb9b397007adb9376e4f3638cab05cadefc21ab64736f6c63430008140033", "storage": { "0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000009999", "0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000006666", "f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00": "0x0000000000000000000000000000000000000000000000000000000000000001", - "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000009559148a5a3fe772c2800a4fc84121e62ff43fd2" + "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000af926ec0acfe1ea2df5da1154ff901ffe158cc77" } }, - "0x9559148a5a3fe772c2800a4fc84121e62ff43fd2": { + "0xaf926ec0acfe1ea2df5da1154ff901ffe158cc77": { "comment": "Implementation: Account permissioning smart contract", "balance": "0", - "code": "0x60806040526004361061004a5760003560e01c8063485cc9551461004f5780634f1ef2861461007157806352d1902d14610084578063936421d5146100ac578063ad3cb1cc146100dc575b600080fd5b34801561005b57600080fd5b5061006f61006a36600461082c565b61011a565b005b61006f61007f366004610875565b610246565b34801561009057600080fd5b50610099610265565b6040519081526020015b60405180910390f35b3480156100b857600080fd5b506100cc6100c7366004610937565b610282565b60405190151581526020016100a3565b3480156100e857600080fd5b5061010d604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100a39190610a0c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156101605750825b905060008267ffffffffffffffff16600114801561017d5750303b155b90508115801561018b575080155b156101a95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156101d357845460ff60401b1916600160401b1785555b600180546001600160a01b0319166001600160a01b0389161790556101f7866103a8565b831561023d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b61024e6103d2565b61025782610479565b61026182826104df565b5050565b600061026f6105a6565b50600080516020610ad183398151915290565b60006001600160a01b03871615801561030b575060018054604051634f4bdc7b60e11b81526001600160a01b0390911691639e97b8f6916102c891908c90600401610a3f565b602060405180830381865afa1580156102e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103099190610a79565b155b156103185750600061039d565b600154604051634f4bdc7b60e11b81526001600160a01b0390911690639e97b8f69061034b906000908c90600401610a3f565b602060405180830381865afa158015610368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038c9190610a79565b156103995750600061039d565b5060015b979650505050505050565b6103b06105ef565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061045957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661044d600080516020610ad1833981519152546001600160a01b031690565b6001600160a01b031614155b156104775760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b1580156104c457600080fd5b505afa1580156104d8573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610539575060408051601f3d908101601f1916820190925261053691810190610a9b565b60015b61056657604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b600080516020610ad1833981519152811461059757604051632a87526960e21b81526004810182905260240161055d565b6105a18383610638565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104775760405163703e46dd60e11b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661047757604051631afcd79f60e31b815260040160405180910390fd5b6106418261068e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610686576105a182826106f3565b610261610769565b806001600160a01b03163b6000036106c457604051634c9c8ce360e01b81526001600160a01b038216600482015260240161055d565b600080516020610ad183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516107109190610ab4565b600060405180830381855af49150503d806000811461074b576040519150601f19603f3d011682016040523d82523d6000602084013e610750565b606091505b5091509150610760858383610788565b95945050505050565b34156104775760405163b398979f60e01b815260040160405180910390fd5b60608261079d57610798826107e7565b6107e0565b81511580156107b457506001600160a01b0384163b155b156107dd57604051639996b31560e01b81526001600160a01b038516600482015260240161055d565b50805b9392505050565b8051156107f75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461082757600080fd5b919050565b6000806040838503121561083f57600080fd5b61084883610810565b915061085660208401610810565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561088857600080fd5b61089183610810565b9150602083013567ffffffffffffffff808211156108ae57600080fd5b818501915085601f8301126108c257600080fd5b8135818111156108d4576108d461085f565b604051601f8201601f19908116603f011681019083821181831017156108fc576108fc61085f565b8160405282815288602084870101111561091557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080600080600060c0888a03121561095257600080fd5b61095b88610810565b965061096960208901610810565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8082111561099b57600080fd5b818a0191508a601f8301126109af57600080fd5b8135818111156109be57600080fd5b8b60208285010111156109d057600080fd5b60208301945080935050505092959891949750929550565b60005b83811015610a035781810151838201526020016109eb565b50506000910152565b6020815260008251806020840152610a2b8160408501602087016109e8565b601f01601f19169190910160400192915050565b6040810160048410610a6157634e487b7160e01b600052602160045260246000fd5b9281526001600160a01b039190911660209091015290565b600060208284031215610a8b57600080fd5b815180151581146107e057600080fd5b600060208284031215610aad57600080fd5b5051919050565b60008251610ac68184602087016109e8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220682234c19d5769dad07c415069ca6b81640464d46ca57262f5a69f7db2af004b64736f6c63430008150033" + "code": "0x60806040526004361061004a5760003560e01c8063485cc9551461004f5780634f1ef2861461007157806352d1902d14610084578063936421d5146100ac578063ad3cb1cc146100dc575b600080fd5b34801561005b57600080fd5b5061006f61006a36600461082c565b61011a565b005b61006f61007f366004610875565b610246565b34801561009057600080fd5b50610099610265565b6040519081526020015b60405180910390f35b3480156100b857600080fd5b506100cc6100c7366004610937565b610282565b60405190151581526020016100a3565b3480156100e857600080fd5b5061010d604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100a39190610a0c565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156101605750825b905060008267ffffffffffffffff16600114801561017d5750303b155b90508115801561018b575080155b156101a95760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156101d357845460ff60401b1916600160401b1785555b600180546001600160a01b0319166001600160a01b0389161790556101f7866103a8565b831561023d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b61024e6103d2565b61025782610479565b61026182826104df565b5050565b600061026f6105a6565b50600080516020610ad183398151915290565b60006001600160a01b03871615801561030b575060018054604051634f4bdc7b60e11b81526001600160a01b0390911691639e97b8f6916102c891908c90600401610a3f565b602060405180830381865afa1580156102e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103099190610a79565b155b156103185750600061039d565b600154604051634f4bdc7b60e11b81526001600160a01b0390911690639e97b8f69061034b906000908c90600401610a3f565b602060405180830381865afa158015610368573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061038c9190610a79565b156103995750600061039d565b5060015b979650505050505050565b6103b06105ef565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061045957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661044d600080516020610ad1833981519152546001600160a01b031690565b6001600160a01b031614155b156104775760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b1580156104c457600080fd5b505afa1580156104d8573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610539575060408051601f3d908101601f1916820190925261053691810190610a9b565b60015b61056657604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b600080516020610ad1833981519152811461059757604051632a87526960e21b81526004810182905260240161055d565b6105a18383610638565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146104775760405163703e46dd60e11b815260040160405180910390fd5b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661047757604051631afcd79f60e31b815260040160405180910390fd5b6106418261068e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610686576105a182826106f3565b610261610769565b806001600160a01b03163b6000036106c457604051634c9c8ce360e01b81526001600160a01b038216600482015260240161055d565b600080516020610ad183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516107109190610ab4565b600060405180830381855af49150503d806000811461074b576040519150601f19603f3d011682016040523d82523d6000602084013e610750565b606091505b5091509150610760858383610788565b95945050505050565b34156104775760405163b398979f60e01b815260040160405180910390fd5b60608261079d57610798826107e7565b6107e0565b81511580156107b457506001600160a01b0384163b155b156107dd57604051639996b31560e01b81526001600160a01b038516600482015260240161055d565b50805b9392505050565b8051156107f75780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b038116811461082757600080fd5b919050565b6000806040838503121561083f57600080fd5b61084883610810565b915061085660208401610810565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561088857600080fd5b61089183610810565b9150602083013567ffffffffffffffff808211156108ae57600080fd5b818501915085601f8301126108c257600080fd5b8135818111156108d4576108d461085f565b604051601f8201601f19908116603f011681019083821181831017156108fc576108fc61085f565b8160405282815288602084870101111561091557600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b600080600080600080600060c0888a03121561095257600080fd5b61095b88610810565b965061096960208901610810565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff8082111561099b57600080fd5b818a0191508a601f8301126109af57600080fd5b8135818111156109be57600080fd5b8b60208285010111156109d057600080fd5b60208301945080935050505092959891949750929550565b60005b83811015610a035781810151838201526020016109eb565b50506000910152565b6020815260008251806020840152610a2b8160408501602087016109e8565b601f01601f19169190910160400192915050565b6040810160048410610a6157634e487b7160e01b600052602160045260246000fd5b9281526001600160a01b039190911660209091015290565b600060208284031215610a8b57600080fd5b815180151581146107e057600080fd5b600060208284031215610aad57600080fd5b5051919050565b60008251610ac68184602087016109e8565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220fa5012d79f6d2df14337451f8cfad6dd18164efd61b4b8de6dd1072cd27b8c4264736f6c63430008140033" }, "0x0000000000000000000000000000000000006666": { "comment": "Proxy: Smart contract to manage account roles", "balance": "0", - "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea264697066735822122021a4e888b9c1db781305504c1fe4d900ea72bacfd972be843c095665e340c1f864736f6c63430008150033", + "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220b318f7afb60b67fd3dc094cf8eb9b397007adb9376e4f3638cab05cadefc21ab64736f6c63430008140033", "storage": { "0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000009999", "aedead2c33b41c31b4afd2246c6bf5131c209d4b0ca6c2247778ac7be7443a00": "0000000000000000000000000000000000000000000000000000000000000001", @@ -105,18 +105,18 @@ "88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c3": "0000000000000000000000000000000000000000000000000000000000000001", "a15bc60c955c405d20d9149c709e2460f1c2d9a497496a7f46004d1772c3054c": "0000000000000000000000000000000000000000000000000000000000000005", "f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00": "0x0000000000000000000000000000000000000000000000000000000000000001", - "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x00000000000000000000000042e207d898eeb493e3648a033df9657cbc883e17" + "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000ade94cfdeae7a82237f83a3bc41fbc940def1db7" } }, - "0x42e207d898eeb493e3648a033df9657cbc883e17": { + "0xade94cfdeae7a82237f83a3bc41fbc940def1db7": { "comment": "Implementation: Smart contract to manage account roles", "balance": "0", - "code": "0x6080604052600436106100865760003560e01c806388a5bf6e1161005957806388a5bf6e146101425780639e97b8f614610162578063ad3cb1cc14610182578063c4d66de8146101c0578063d02971ca146101e057600080fd5b8063442767331461008b5780634cbb87d3146100da5780634f1ef2861461010a57806352d1902d1461011f575b600080fd5b34801561009757600080fd5b506100c46100a6366004610bc5565b6001600160a01b031660009081526001602052604090205460ff1690565b6040516100d19190610bf6565b60405180910390f35b3480156100e657600080fd5b506100fa6100f5366004610c2d565b610215565b60405190151581526020016100d1565b61011d610118366004610c76565b61037d565b005b34801561012b57600080fd5b5061013461039c565b6040519081526020016100d1565b34801561014e57600080fd5b506100c461015d366004610c2d565b6103b9565b34801561016e57600080fd5b506100fa61017d366004610c2d565b61052e565b34801561018e57600080fd5b506101b3604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100d19190610d5c565b3480156101cc57600080fd5b5061011d6101db366004610bc5565b610577565b3480156101ec57600080fd5b506102006101fb366004610d8f565b6106f2565b60405163ffffffff90911681526020016100d1565b60008260006002600083600381111561023057610230610be0565b600381111561024157610241610be0565b815260208101919091526040016000205460ff169050610261813361052e565b6102855760405163472511eb60e11b81523360048201526024015b60405180910390fd5b61028f858561052e565b15610370576001600160a01b0384166000908152600160205260408120805460ff1916905560039086828111156102c8576102c8610be0565b60038111156102d9576102d9610be0565b815260208101919091526040016000908120805463ffffffff16916102fd83610dc0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050336001600160a01b0316846001600160a01b03167f5a8379f4a3380f87fd5924475f76a3471ac8d775668601653e3f9ef69a3dd2718760405161035f9190610bf6565b60405180910390a360019250610375565b600092505b505092915050565b610385610738565b61038e826107df565b6103988282610845565b5050565b60006103a6610907565b50600080516020610e3983398151915290565b6000826000600260008360038111156103d4576103d4610be0565b60038111156103e5576103e5610be0565b815260208101919091526040016000205460ff169050610405813361052e565b6104245760405163472511eb60e11b815233600482015260240161027c565b61042e858561052e565b610525576001600160a01b03841660009081526001602081905260409091208054879260ff199091169083600381111561046a5761046a610be0565b02179055506003600086600381111561048557610485610be0565b600381111561049657610496610be0565b815260208101919091526040016000908120805463ffffffff16916104ba83610de0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050336001600160a01b0316846001600160a01b03167f47307e88f3e82b4e8cdffde5a264aa53a2ee17636fd8df7effe0a098da4956568760405161051c9190610bf6565b60405180910390a35b50929392505050565b600082600381111561054257610542610be0565b6001600160a01b03831660009081526001602052604090205460ff16600381111561056f5761056f610be0565b149392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806105c15750805467ffffffffffffffff808416911610155b156105df5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff831617600160401b178155610609610950565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e08054600160ff1991821681179092557f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c805482168317905560036000527f88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c3805490911690911790556106a08361095e565b805468ff00000000000000001916815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b60006003600083600381111561070a5761070a610be0565b600381111561071b5761071b610be0565b815260208101919091526040016000205463ffffffff1692915050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107bf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107b3600080516020610e39833981519152546001600160a01b031690565b6001600160a01b031614155b156107dd5760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b15801561082a57600080fd5b505afa15801561083e573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561089f575060408051601f3d908101601f1916820190925261089c91810190610e03565b60015b6108c757604051634c9c8ce360e01b81526001600160a01b038316600482015260240161027c565b600080516020610e3983398151915281146108f857604051632a87526960e21b81526004810182905260240161027c565b6109028383610988565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107dd5760405163703e46dd60e11b815260040160405180910390fd5b61095b6001336103b9565b50565b6109666109de565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b61099182610a27565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156109d6576109028282610a8c565b610398610b02565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166107dd57604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003610a5d57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161027c565b600080516020610e3983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610aa99190610e1c565b600060405180830381855af49150503d8060008114610ae4576040519150601f19603f3d011682016040523d82523d6000602084013e610ae9565b606091505b5091509150610af9858383610b21565b95945050505050565b34156107dd5760405163b398979f60e01b815260040160405180910390fd5b606082610b3657610b3182610b80565b610b79565b8151158015610b4d57506001600160a01b0384163b155b15610b7657604051639996b31560e01b81526001600160a01b038516600482015260240161027c565b50805b9392505050565b805115610b905780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114610bc057600080fd5b919050565b600060208284031215610bd757600080fd5b610b7982610ba9565b634e487b7160e01b600052602160045260246000fd5b6020810160048310610c1857634e487b7160e01b600052602160045260246000fd5b91905290565b803560048110610bc057600080fd5b60008060408385031215610c4057600080fd5b610c4983610c1e565b9150610c5760208401610ba9565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610c8957600080fd5b610c9283610ba9565b9150602083013567ffffffffffffffff80821115610caf57600080fd5b818501915085601f830112610cc357600080fd5b813581811115610cd557610cd5610c60565b604051601f8201601f19908116603f01168101908382118183101715610cfd57610cfd610c60565b81604052828152886020848701011115610d1657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610d53578181015183820152602001610d3b565b50506000910152565b6020815260008251806020840152610d7b816040850160208701610d38565b601f01601f19169190910160400192915050565b600060208284031215610da157600080fd5b610b7982610c1e565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff821680610dd657610dd6610daa565b6000190192915050565b600063ffffffff808316818103610df957610df9610daa565b6001019392505050565b600060208284031215610e1557600080fd5b5051919050565b60008251610e2e818460208701610d38565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca264697066735822122087176c31f0eeac8854a81200abc477592ce10af55cd7b4a8cbdbb725ed4e4a4b64736f6c63430008150033" + "code": "0x6080604052600436106100865760003560e01c806388a5bf6e1161005957806388a5bf6e146101425780639e97b8f614610162578063ad3cb1cc14610182578063c4d66de8146101c0578063d02971ca146101e057600080fd5b8063442767331461008b5780634cbb87d3146100da5780634f1ef2861461010a57806352d1902d1461011f575b600080fd5b34801561009757600080fd5b506100c46100a6366004610bc5565b6001600160a01b031660009081526001602052604090205460ff1690565b6040516100d19190610bf6565b60405180910390f35b3480156100e657600080fd5b506100fa6100f5366004610c2d565b610215565b60405190151581526020016100d1565b61011d610118366004610c76565b61037d565b005b34801561012b57600080fd5b5061013461039c565b6040519081526020016100d1565b34801561014e57600080fd5b506100c461015d366004610c2d565b6103b9565b34801561016e57600080fd5b506100fa61017d366004610c2d565b61052e565b34801561018e57600080fd5b506101b3604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100d19190610d5c565b3480156101cc57600080fd5b5061011d6101db366004610bc5565b610577565b3480156101ec57600080fd5b506102006101fb366004610d8f565b6106f2565b60405163ffffffff90911681526020016100d1565b60008260006002600083600381111561023057610230610be0565b600381111561024157610241610be0565b815260208101919091526040016000205460ff169050610261813361052e565b6102855760405163472511eb60e11b81523360048201526024015b60405180910390fd5b61028f858561052e565b15610370576001600160a01b0384166000908152600160205260408120805460ff1916905560039086828111156102c8576102c8610be0565b60038111156102d9576102d9610be0565b815260208101919091526040016000908120805463ffffffff16916102fd83610dc0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050336001600160a01b0316846001600160a01b03167f5a8379f4a3380f87fd5924475f76a3471ac8d775668601653e3f9ef69a3dd2718760405161035f9190610bf6565b60405180910390a360019250610375565b600092505b505092915050565b610385610738565b61038e826107df565b6103988282610845565b5050565b60006103a6610907565b50600080516020610e3983398151915290565b6000826000600260008360038111156103d4576103d4610be0565b60038111156103e5576103e5610be0565b815260208101919091526040016000205460ff169050610405813361052e565b6104245760405163472511eb60e11b815233600482015260240161027c565b61042e858561052e565b610525576001600160a01b03841660009081526001602081905260409091208054879260ff199091169083600381111561046a5761046a610be0565b02179055506003600086600381111561048557610485610be0565b600381111561049657610496610be0565b815260208101919091526040016000908120805463ffffffff16916104ba83610de0565b91906101000a81548163ffffffff021916908363ffffffff16021790555050336001600160a01b0316846001600160a01b03167f47307e88f3e82b4e8cdffde5a264aa53a2ee17636fd8df7effe0a098da4956568760405161051c9190610bf6565b60405180910390a35b50929392505050565b600082600381111561054257610542610be0565b6001600160a01b03831660009081526001602052604090205460ff16600381111561056f5761056f610be0565b149392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806105c15750805467ffffffffffffffff808416911610155b156105df5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff831617600160401b178155610609610950565b60026020527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e08054600160ff1991821681179092557f679795a0195a1b76cdebb7c51d74e058aee92919b8c3389af86ef24535e8a28c805482168317905560036000527f88601476d11616a71c5be67555bd1dff4b1cbf21533d2669b768b61518cfe1c3805490911690911790556106a08361095e565b805468ff00000000000000001916815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b60006003600083600381111561070a5761070a610be0565b600381111561071b5761071b610be0565b815260208101919091526040016000205463ffffffff1692915050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806107bf57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166107b3600080516020610e39833981519152546001600160a01b031690565b6001600160a01b031614155b156107dd5760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b15801561082a57600080fd5b505afa15801561083e573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561089f575060408051601f3d908101601f1916820190925261089c91810190610e03565b60015b6108c757604051634c9c8ce360e01b81526001600160a01b038316600482015260240161027c565b600080516020610e3983398151915281146108f857604051632a87526960e21b81526004810182905260240161027c565b6109028383610988565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107dd5760405163703e46dd60e11b815260040160405180910390fd5b61095b6001336103b9565b50565b6109666109de565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b61099182610a27565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156109d6576109028282610a8c565b610398610b02565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166107dd57604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003610a5d57604051634c9c8ce360e01b81526001600160a01b038216600482015260240161027c565b600080516020610e3983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610aa99190610e1c565b600060405180830381855af49150503d8060008114610ae4576040519150601f19603f3d011682016040523d82523d6000602084013e610ae9565b606091505b5091509150610af9858383610b21565b95945050505050565b34156107dd5760405163b398979f60e01b815260040160405180910390fd5b606082610b3657610b3182610b80565b610b79565b8151158015610b4d57506001600160a01b0384163b155b15610b7657604051639996b31560e01b81526001600160a01b038516600482015260240161027c565b50805b9392505050565b805115610b905780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114610bc057600080fd5b919050565b600060208284031215610bd757600080fd5b610b7982610ba9565b634e487b7160e01b600052602160045260246000fd5b6020810160048310610c1857634e487b7160e01b600052602160045260246000fd5b91905290565b803560048110610bc057600080fd5b60008060408385031215610c4057600080fd5b610c4983610c1e565b9150610c5760208401610ba9565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610c8957600080fd5b610c9283610ba9565b9150602083013567ffffffffffffffff80821115610caf57600080fd5b818501915085601f830112610cc357600080fd5b813581811115610cd557610cd5610c60565b604051601f8201601f19908116603f01168101908382118183101715610cfd57610cfd610c60565b81604052828152886020848701011115610d1657600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b83811015610d53578181015183820152602001610d3b565b50506000910152565b6020815260008251806020840152610d7b816040850160208701610d38565b601f01601f19169190910160400192915050565b600060208284031215610da157600080fd5b610b7982610c1e565b634e487b7160e01b600052601160045260246000fd5b600063ffffffff821680610dd657610dd6610daa565b6000190192915050565b600063ffffffff808316818103610df957610df9610daa565b6001019392505050565b600060208284031215610e1557600080fd5b5051919050565b60008251610e2e818460208701610d38565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca264697066735822122084b9c016f0d123b1684b5e9339cba44ad7e114e6c24770eb69581f25c6daa10b64736f6c63430008140033" }, "0x0000000000000000000000000000000000007777": { "comment": "Proxy: Smart contract to manage validator nodes", "balance": "0", - "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea264697066735822122021a4e888b9c1db781305504c1fe4d900ea72bacfd972be843c095665e340c1f864736f6c63430008150033", + "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220b318f7afb60b67fd3dc094cf8eb9b397007adb9376e4f3638cab05cadefc21ab64736f6c63430008140033", "storage": { "0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000009999", "0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000006666", @@ -130,88 +130,111 @@ "149d22bf3f008a1407770ecbdb723975d92c5073caa510ba413c1db0f8063ed8": "0000000000000000000000886328869e4e1f401e1052a5f4aae8b45f42610201", "7f33ce678224e207038746a5939df116c5dff1ccc6e79de84c95388c521e898c": "000000000000000000000f48de4a0c2939e62891f3c6aca68982975477e45301", "f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00": "0x0000000000000000000000000000000000000000000000000000000000000001", - "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x00000000000000000000000046e176c8993fdb8d8c3c98b481a560eed5cc8a20" + "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000d43d7f76ba2a9cc9f64d0d7c9245be66ccbd4a62" } }, - "0x46e176c8993fdb8d8c3c98b481a560eed5cc8a20": { + "0xd43d7f76ba2a9cc9f64d0d7c9245be66ccbd4a62": { "comment": "Implementation: Smart contract to manage validator nodes", "balance": "0", - "code": "0x6080604052600436106100705760003560e01c806352d1902d1161004e57806352d1902d146100ca57806398772d88146100f2578063ad3cb1cc14610112578063b7ab4db51461015057600080fd5b806340a141ff146100755780634d238c8e146100975780634f1ef286146100b7575b600080fd5b34801561008157600080fd5b50610095610090366004610f0a565b610172565b005b3480156100a357600080fd5b506100956100b2366004610f0a565b610430565b6100956100c5366004610f95565b610722565b3480156100d657600080fd5b506100df610741565b6040519081526020015b60405180910390f35b3480156100fe57600080fd5b5061009561010d36600461103b565b61075e565b34801561011e57600080fd5b50610143604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100e9919061115c565b34801561015c57600080fd5b50610165610a27565b6040516100e9919061118f565b600154604051634f4bdc7b60e11b81526001600160a01b0390911690639e97b8f6906101a59060039033906004016111dc565b602060405180830381865afa1580156101c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e69190611216565b61020a5760405163472511eb60e11b81523360048201526024015b60405180910390fd5b806001600160a01b0381166102325760405163713ce51160e01b815260040160405180910390fd5b6002546001036102555760405163f1a1929360e01b815260040160405180910390fd5b6001600160a01b03828116600090815260036020908152604091829020825180840190935254928316808352600160a01b90930460ff1690820152906102b957604051635a4887e160e01b81526001600160a01b0384166004820152602401610201565b600081602001519050600060028260ff16815481106102da576102da611238565b6000918252602082200154600280546001600160a01b0390921693509061030390600190611264565b8154811061031357610313611238565b600091825260209091200154600280546001600160a01b039092169250829160ff861690811061034557610345611238565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600390915260409020805460ff60a01b1916600160a01b60ff86160217905560028054806103a2576103a2611277565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b0384168083526003825260409283902080546001600160a81b0319169055600254925160ff9093168352339290917fb10fc4fba5b5eb2a6e82796887299220653537d6a5fc8a3fb60937bd2442ea29910160405180910390a3505050505050565b600154604051634f4bdc7b60e11b81526001600160a01b0390911690639e97b8f6906104639060039033906004016111dc565b602060405180830381865afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a49190611216565b6104c35760405163472511eb60e11b8152336004820152602401610201565b806001600160a01b0381166104eb5760405163713ce51160e01b815260040160405180910390fd5b6002546101001161051357604051635dd7a94360e11b81526101006004820152602401610201565b60025460005b8160ff168160ff1610156106495760006003600060028460ff168154811061054357610543611238565b60009182526020808320909101546001600160a01b039081168452838201949094526040928301909120825180840190935254928316825260ff600160a01b909304831690820152600280549193509184169081106105a4576105a4611238565b6000918252602090912001546001600160a01b039081169086160361060a5760028260ff16815481106105d9576105d9611238565b60009182526020909120015460405163164688df60e21b81526001600160a01b039091166004820152602401610201565b80516001600160a01b0316330361063657604051635154e66760e11b8152336004820152602401610201565b50806106418161128d565b915050610519565b506040805180820182523380825260ff84811660208085019182526001600160a01b038981166000818152600384528881209751885495518716600160a01b026001600160a81b03199096169316929092179390931790955560028054600181018255958190527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90950180546001600160a01b0319168317905593549451949091168452909290917f4583e1f70afe5f9f38886187732a4b1336bad46fc758cdd6ad86815931d6f6c2910160405180910390a3505050565b61072a610a89565b61073382610b30565b61073d8282610b96565b5050565b600061074b610c58565b506000805160206112fb83398151915290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806107a85750805467ffffffffffffffff808416911610155b156107c65760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff831617600160401b178155825160000361080a57604051635a7582eb60e11b815260040160405180910390fd5b82516101001161083157604051635dd7a94360e11b81526101006004820152602401610201565b60005b83518110156109ae5760006001600160a01b031684828151811061085a5761085a611238565b6020026020010151602001516001600160a01b03160361088d5760405163d4c3bd5160e01b815260040160405180910390fd5b60006001600160a01b03168482815181106108aa576108aa611238565b6020026020010151600001516001600160a01b0316036108dd5760405163713ce51160e01b815260040160405180910390fd5b60008482815181106108f1576108f1611238565b60209081029190910181015180516002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b039384166001600160a01b0319909116179055604080518082018252848601518416815260ff80891682880190815295518516845260039096529120905181549351909416600160a01b026001600160a81b0319909316939091169290921717905550806109a6816112ac565b915050610834565b50600180546001600160a01b0319166001600160a01b0387161790556109d384610ca1565b805468ff00000000000000001916815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b60606002805480602002602001604051908101604052809291908181526020018280548015610a7f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a61575b5050505050905090565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610b1057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b046000805160206112fb833981519152546001600160a01b031690565b6001600160a01b031614155b15610b2e5760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b158015610b7b57600080fd5b505afa158015610b8f573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610bf0575060408051601f3d908101601f19168201909252610bed918101906112c5565b60015b610c1857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610201565b6000805160206112fb8339815191528114610c4957604051632a87526960e21b815260048101829052602401610201565b610c538383610ccb565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2e5760405163703e46dd60e11b815260040160405180910390fd5b610ca9610d21565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b610cd482610d6a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610d1957610c538282610dcf565b61073d610e47565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b2e57604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003610da057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610201565b6000805160206112fb83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610dec91906112de565b600060405180830381855af49150503d8060008114610e27576040519150601f19603f3d011682016040523d82523d6000602084013e610e2c565b606091505b5091509150610e3c858383610e66565b925050505b92915050565b3415610b2e5760405163b398979f60e01b815260040160405180910390fd5b606082610e7b57610e7682610ec5565b610ebe565b8151158015610e9257506001600160a01b0384163b155b15610ebb57604051639996b31560e01b81526001600160a01b0385166004820152602401610201565b50805b9392505050565b805115610ed55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114610f0557600080fd5b919050565b600060208284031215610f1c57600080fd5b610ebe82610eee565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f5e57610f5e610f25565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f8d57610f8d610f25565b604052919050565b60008060408385031215610fa857600080fd5b610fb183610eee565b915060208084013567ffffffffffffffff80821115610fcf57600080fd5b818601915086601f830112610fe357600080fd5b813581811115610ff557610ff5610f25565b611007601f8201601f19168501610f64565b9150808252878482850101111561101d57600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060006060848603121561105057600080fd5b61105984610eee565b92506020611068818601610eee565b925060408086013567ffffffffffffffff8082111561108657600080fd5b818801915088601f83011261109a57600080fd5b8135818111156110ac576110ac610f25565b6110ba858260051b01610f64565b818152858101925060069190911b83018501908a8211156110da57600080fd5b928501925b818410156111285784848c0312156110f75760008081fd5b6110ff610f3b565b61110885610eee565b8152611115878601610eee565b81880152835292840192918501916110df565b8096505050505050509250925092565b60005b8381101561115357818101518382015260200161113b565b50506000910152565b602081526000825180602084015261117b816040850160208701611138565b601f01601f19169190910160400192915050565b6020808252825182820181905260009190848201906040850190845b818110156111d05783516001600160a01b0316835292840192918401916001016111ab565b50909695505050505050565b60408101600484106111fe57634e487b7160e01b600052602160045260246000fd5b9281526001600160a01b039190911660209091015290565b60006020828403121561122857600080fd5b81518015158114610ebe57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610e4157610e4161124e565b634e487b7160e01b600052603160045260246000fd5b600060ff821660ff81036112a3576112a361124e565b60010192915050565b6000600182016112be576112be61124e565b5060010190565b6000602082840312156112d757600080fd5b5051919050565b600082516112f0818460208701611138565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220aa9456bfd75b25953e5f9d020af610b9fd012849f1f82126a2b153e28979ed5864736f6c63430008150033" + "code": "0x6080604052600436106100705760003560e01c806352d1902d1161004e57806352d1902d146100ca57806398772d88146100f2578063ad3cb1cc14610112578063b7ab4db51461015057600080fd5b806340a141ff146100755780634d238c8e146100975780634f1ef286146100b7575b600080fd5b34801561008157600080fd5b50610095610090366004610f0a565b610172565b005b3480156100a357600080fd5b506100956100b2366004610f0a565b610430565b6100956100c5366004610f95565b610722565b3480156100d657600080fd5b506100df610741565b6040519081526020015b60405180910390f35b3480156100fe57600080fd5b5061009561010d36600461103b565b61075e565b34801561011e57600080fd5b50610143604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100e9919061115c565b34801561015c57600080fd5b50610165610a27565b6040516100e9919061118f565b600154604051634f4bdc7b60e11b81526001600160a01b0390911690639e97b8f6906101a59060039033906004016111dc565b602060405180830381865afa1580156101c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e69190611216565b61020a5760405163472511eb60e11b81523360048201526024015b60405180910390fd5b806001600160a01b0381166102325760405163713ce51160e01b815260040160405180910390fd5b6002546001036102555760405163f1a1929360e01b815260040160405180910390fd5b6001600160a01b03828116600090815260036020908152604091829020825180840190935254928316808352600160a01b90930460ff1690820152906102b957604051635a4887e160e01b81526001600160a01b0384166004820152602401610201565b600081602001519050600060028260ff16815481106102da576102da611238565b6000918252602082200154600280546001600160a01b0390921693509061030390600190611264565b8154811061031357610313611238565b600091825260209091200154600280546001600160a01b039092169250829160ff861690811061034557610345611238565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600390915260409020805460ff60a01b1916600160a01b60ff86160217905560028054806103a2576103a2611277565b60008281526020808220600019908401810180546001600160a01b03191690559092019092556001600160a01b0384168083526003825260409283902080546001600160a81b0319169055600254925160ff9093168352339290917fb10fc4fba5b5eb2a6e82796887299220653537d6a5fc8a3fb60937bd2442ea29910160405180910390a3505050505050565b600154604051634f4bdc7b60e11b81526001600160a01b0390911690639e97b8f6906104639060039033906004016111dc565b602060405180830381865afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a49190611216565b6104c35760405163472511eb60e11b8152336004820152602401610201565b806001600160a01b0381166104eb5760405163713ce51160e01b815260040160405180910390fd5b6002546101001161051357604051635dd7a94360e11b81526101006004820152602401610201565b60025460005b8160ff168160ff1610156106495760006003600060028460ff168154811061054357610543611238565b60009182526020808320909101546001600160a01b039081168452838201949094526040928301909120825180840190935254928316825260ff600160a01b909304831690820152600280549193509184169081106105a4576105a4611238565b6000918252602090912001546001600160a01b039081169086160361060a5760028260ff16815481106105d9576105d9611238565b60009182526020909120015460405163164688df60e21b81526001600160a01b039091166004820152602401610201565b80516001600160a01b0316330361063657604051635154e66760e11b8152336004820152602401610201565b50806106418161128d565b915050610519565b506040805180820182523380825260ff84811660208085019182526001600160a01b038981166000818152600384528881209751885495518716600160a01b026001600160a81b03199096169316929092179390931790955560028054600181018255958190527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90950180546001600160a01b0319168317905593549451949091168452909290917f4583e1f70afe5f9f38886187732a4b1336bad46fc758cdd6ad86815931d6f6c2910160405180910390a3505050565b61072a610a89565b61073382610b30565b61073d8282610b96565b5050565b600061074b610c58565b506000805160206112fb83398151915290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806107a85750805467ffffffffffffffff808416911610155b156107c65760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff191667ffffffffffffffff831617600160401b178155825160000361080a57604051635a7582eb60e11b815260040160405180910390fd5b82516101001161083157604051635dd7a94360e11b81526101006004820152602401610201565b60005b83518110156109ae5760006001600160a01b031684828151811061085a5761085a611238565b6020026020010151602001516001600160a01b03160361088d5760405163d4c3bd5160e01b815260040160405180910390fd5b60006001600160a01b03168482815181106108aa576108aa611238565b6020026020010151600001516001600160a01b0316036108dd5760405163713ce51160e01b815260040160405180910390fd5b60008482815181106108f1576108f1611238565b60209081029190910181015180516002805460018101825560009182527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b039384166001600160a01b0319909116179055604080518082018252848601518416815260ff80891682880190815295518516845260039096529120905181549351909416600160a01b026001600160a81b0319909316939091169290921717905550806109a6816112ac565b915050610834565b50600180546001600160a01b0319166001600160a01b0387161790556109d384610ca1565b805468ff00000000000000001916815560405167ffffffffffffffff831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b60606002805480602002602001604051908101604052809291908181526020018280548015610a7f57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610a61575b5050505050905090565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610b1057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b046000805160206112fb833981519152546001600160a01b031690565b6001600160a01b031614155b15610b2e5760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b158015610b7b57600080fd5b505afa158015610b8f573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610bf0575060408051601f3d908101601f19168201909252610bed918101906112c5565b60015b610c1857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610201565b6000805160206112fb8339815191528114610c4957604051632a87526960e21b815260048101829052602401610201565b610c538383610ccb565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b2e5760405163703e46dd60e11b815260040160405180910390fd5b610ca9610d21565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b610cd482610d6a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610d1957610c538282610dcf565b61073d610e47565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b2e57604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003610da057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610201565b6000805160206112fb83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610dec91906112de565b600060405180830381855af49150503d8060008114610e27576040519150601f19603f3d011682016040523d82523d6000602084013e610e2c565b606091505b5091509150610e3c858383610e66565b925050505b92915050565b3415610b2e5760405163b398979f60e01b815260040160405180910390fd5b606082610e7b57610e7682610ec5565b610ebe565b8151158015610e9257506001600160a01b0384163b155b15610ebb57604051639996b31560e01b81526001600160a01b0385166004820152602401610201565b50805b9392505050565b805115610ed55780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114610f0557600080fd5b919050565b600060208284031215610f1c57600080fd5b610ebe82610eee565b634e487b7160e01b600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715610f5e57610f5e610f25565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610f8d57610f8d610f25565b604052919050565b60008060408385031215610fa857600080fd5b610fb183610eee565b915060208084013567ffffffffffffffff80821115610fcf57600080fd5b818601915086601f830112610fe357600080fd5b813581811115610ff557610ff5610f25565b611007601f8201601f19168501610f64565b9150808252878482850101111561101d57600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060006060848603121561105057600080fd5b61105984610eee565b92506020611068818601610eee565b925060408086013567ffffffffffffffff8082111561108657600080fd5b818801915088601f83011261109a57600080fd5b8135818111156110ac576110ac610f25565b6110ba858260051b01610f64565b818152858101925060069190911b83018501908a8211156110da57600080fd5b928501925b818410156111285784848c0312156110f75760008081fd5b6110ff610f3b565b61110885610eee565b8152611115878601610eee565b81880152835292840192918501916110df565b8096505050505050509250925092565b60005b8381101561115357818101518382015260200161113b565b50506000910152565b602081526000825180602084015261117b816040850160208701611138565b601f01601f19169190910160400192915050565b6020808252825182820181905260009190848201906040850190845b818110156111d05783516001600160a01b0316835292840192918401916001016111ab565b50909695505050505050565b60408101600484106111fe57634e487b7160e01b600052602160045260246000fd5b9281526001600160a01b039190911660209091015290565b60006020828403121561122857600080fd5b81518015158114610ebe57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b81810381811115610e4157610e4161124e565b634e487b7160e01b600052603160045260246000fd5b600060ff821660ff81036112a3576112a361124e565b60010192915050565b6000600182016112be576112be61124e565b5060010190565b6000602082840312156112d757600080fd5b5051919050565b600082516112f0818460208701611138565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220e9ae43f43d0568a1c6ef2d1786bfcad7f4b35a9335946e6d56c9be7300a36ca664736f6c63430008140033" }, "0x0000000000000000000000000000000000009999": { "comment": "Proxy: Smart contract to manage proxy contract upgrades", "balance": "0", - "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea264697066735822122021a4e888b9c1db781305504c1fe4d900ea72bacfd972be843c095665e340c1f864736f6c63430008150033", + "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220b318f7afb60b67fd3dc094cf8eb9b397007adb9376e4f3638cab05cadefc21ab64736f6c63430008140033", "storage": { "0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000006666", "f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00": "0x0000000000000000000000000000000000000000000000000000000000000001", - "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000006b01f5ccf71b99bf6046ca794d4468c49362d8bc" + "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000431b0ec220a7f17b7c89ddd7375f36929332d3c8" } }, - "0x6b01f5ccf71b99bf6046ca794d4468c49362d8bc": { + "0x431b0ec220a7f17b7c89ddd7375f36929332d3c8": { "comment": "Implementation: Smart contract to manage proxy contract upgrades", "balance": "0", - "code": "0x6080604052600436106100705760003560e01c80637e5465ba1161004e5780637e5465ba146100d2578063ad3cb1cc146100f2578063c4d66de814610130578063e8f158641461015057600080fd5b80634f1ef2861461007557806352d1902d1461008a578063574a81d7146100b2575b600080fd5b610088610083366004610c59565b610170565b005b34801561009657600080fd5b5061009f61018f565b6040519081526020015b60405180910390f35b3480156100be57600080fd5b506100886100cd366004610d1b565b6101ac565b3480156100de57600080fd5b506100886100ed366004610d1b565b6101d3565b3480156100fe57600080fd5b50610123604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100a99190610d72565b34801561013c57600080fd5b5061008861014b366004610da5565b610475565b34801561015c57600080fd5b5061008861016b366004610d1b565b610565565b610178610791565b61018182610838565b61018b8282610845565b5050565b6000610199610902565b50600080516020610f6083398151915290565b6101b6828261094b565b61018b57604051638af69cf160e01b815260040160405180910390fd5b600054604051634f4bdc7b60e11b81526001600160a01b0390911690639e97b8f690610206906001903390600401610de2565b602060405180830381865afa158015610223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102479190610e08565b61026b5760405163472511eb60e11b81523360048201526024015b60405180910390fd5b6001600160a01b0380831660009081526001602090815260408083209385168352929052908120600201548391839190036102cc57604051633af3b55760e01b81526001600160a01b03808416600483015282166024820152604401610262565b6001600160a01b0380851660009081526001602090815260408083209387168352928152828220338352905220548490849060ff1615610332576040516316d5788b60e31b81526001600160a01b03808416600483015282166024820152604401610262565b6001600160a01b038087166000908152600160208181526040808420948a16808552858352818520338652808452918520805460ff191685179055845293905291909101805463ffffffff169161038883610e40565b91906101000a81548163ffffffff021916908363ffffffff16021790555050336001600160a01b0316856001600160a01b0316876001600160a01b03167fc42e62d9f6b29d37599fcb472a6f30bc6e8c8d6fbbcb774ac585c02b314bd2ad60405160405180910390a46103fb868661094b565b1561046d576040805163278f794360e11b81526001600160a01b03878116600483015260248201929092526000604482015290871690634f1ef28690606401600060405180830381600087803b15801561045457600080fd5b505af1158015610468573d6000803e3d6000fd5b505050505b505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806104bf5750805467ffffffffffffffff808416911610155b156104dd5760405163f92ee8a960e01b815260040160405180910390fd5b8054600160401b67ffffffffffffffff841668ffffffffffffffffff199092168217178255600080546001600160a01b0319166001600160a01b038616179055815468ff0000000000000000191682556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b600054604051634f4bdc7b60e11b81526001600160a01b0390911690639e97b8f690610598906001903390600401610de2565b602060405180830381865afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d99190610e08565b6105f85760405163472511eb60e11b8152336004820152602401610262565b80806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610653575060408051601f3d908101601f1916820190925261065091810190610e63565b60015b61067b57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610262565b600080516020610f6083398151915281146106ac57604051632a87526960e21b815260048101829052602401610262565b6001600160a01b03808516600090815260016020908152604080832093871683529290522060020154849084901561070a57604051634cc571cf60e01b81526001600160a01b03808416600483015282166024820152604401610262565b6001600160a01b038681166000818152600160208181526040808420958b16808552959091528083209182018054640100000000600160c01b031916336401000000008102919091179091554260029093019290925551909392917fe33956f8d60ae2b38d9860e46ec9b53d8fb58aa99a9404b1195b7ce35d2941dc91a45050505b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061081857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661080c600080516020610f60833981519152546001600160a01b031690565b6001600160a01b031614155b156108365760405163703e46dd60e11b815260040160405180910390fd5b565b61084230826101ac565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561089f575060408051601f3d908101601f1916820190925261089c91810190610e63565b60015b6108c757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610262565b600080516020610f6083398151915281146108f857604051632a87526960e21b815260048101829052602401610262565b61078c8383610a28565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108365760405163703e46dd60e11b815260040160405180910390fd5b60008054604051636814b8e560e11b815282916001600160a01b03169063d02971ca9061097d90600190600401610e7c565b602060405180830381865afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be9190610e8a565b6001600160a01b03808616600090815260016020818152604080842094891684529390529181209091015491925063ffffffff90911690610a0a610a03846006610eb0565b600a610a7e565b90508063ffffffff168263ffffffff16101593505050505b92915050565b610a3182610aa8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a765761078c8282610b0d565b61018b610b83565b600081610a8c600185610ed8565b610a969190610ef5565b610aa1906001610f26565b9392505050565b806001600160a01b03163b600003610ade57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610262565b600080516020610f6083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b2a9190610f43565b600060405180830381855af49150503d8060008114610b65576040519150601f19603f3d011682016040523d82523d6000602084013e610b6a565b606091505b5091509150610b7a858383610ba2565b95945050505050565b34156108365760405163b398979f60e01b815260040160405180910390fd5b606082610bb757610bb282610bfe565b610aa1565b8151158015610bce57506001600160a01b0384163b155b15610bf757604051639996b31560e01b81526001600160a01b0385166004820152602401610262565b5092915050565b805115610c0e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114610c3e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610c6c57600080fd5b610c7583610c27565b9150602083013567ffffffffffffffff80821115610c9257600080fd5b818501915085601f830112610ca657600080fd5b813581811115610cb857610cb8610c43565b604051601f8201601f19908116603f01168101908382118183101715610ce057610ce0610c43565b81604052828152886020848701011115610cf957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060408385031215610d2e57600080fd5b610d3783610c27565b9150610d4560208401610c27565b90509250929050565b60005b83811015610d69578181015183820152602001610d51565b50506000910152565b6020815260008251806020840152610d91816040850160208701610d4e565b601f01601f19169190910160400192915050565b600060208284031215610db757600080fd5b610aa182610c27565b60048110610dde57634e487b7160e01b600052602160045260246000fd5b9052565b60408101610df08285610dc0565b6001600160a01b039290921660209190910152919050565b600060208284031215610e1a57600080fd5b81518015158114610aa157600080fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818103610e5957610e59610e2a565b6001019392505050565b600060208284031215610e7557600080fd5b5051919050565b60208101610a228284610dc0565b600060208284031215610e9c57600080fd5b815163ffffffff81168114610aa157600080fd5b63ffffffff818116838216028082169190828114610ed057610ed0610e2a565b505092915050565b63ffffffff828116828216039080821115610bf757610bf7610e2a565b600063ffffffff80841680610f1a57634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b63ffffffff818116838216019080821115610bf757610bf7610e2a565b60008251610f55818460208701610d4e565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212202100ada902756d4dd181765a28b2c82f16c75cc475fdfa21316f7f065845770564736f6c63430008150033" + "code": "0x6080604052600436106100705760003560e01c80637e5465ba1161004e5780637e5465ba146100d2578063ad3cb1cc146100f2578063c4d66de814610130578063e8f158641461015057600080fd5b80634f1ef2861461007557806352d1902d1461008a578063574a81d7146100b2575b600080fd5b610088610083366004610c59565b610170565b005b34801561009657600080fd5b5061009f61018f565b6040519081526020015b60405180910390f35b3480156100be57600080fd5b506100886100cd366004610d1b565b6101ac565b3480156100de57600080fd5b506100886100ed366004610d1b565b6101d3565b3480156100fe57600080fd5b50610123604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100a99190610d72565b34801561013c57600080fd5b5061008861014b366004610da5565b610475565b34801561015c57600080fd5b5061008861016b366004610d1b565b610565565b610178610791565b61018182610838565b61018b8282610845565b5050565b6000610199610902565b50600080516020610f6083398151915290565b6101b6828261094b565b61018b57604051638af69cf160e01b815260040160405180910390fd5b600054604051634f4bdc7b60e11b81526001600160a01b0390911690639e97b8f690610206906001903390600401610de2565b602060405180830381865afa158015610223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102479190610e08565b61026b5760405163472511eb60e11b81523360048201526024015b60405180910390fd5b6001600160a01b0380831660009081526001602090815260408083209385168352929052908120600201548391839190036102cc57604051633af3b55760e01b81526001600160a01b03808416600483015282166024820152604401610262565b6001600160a01b0380851660009081526001602090815260408083209387168352928152828220338352905220548490849060ff1615610332576040516316d5788b60e31b81526001600160a01b03808416600483015282166024820152604401610262565b6001600160a01b038087166000908152600160208181526040808420948a16808552858352818520338652808452918520805460ff191685179055845293905291909101805463ffffffff169161038883610e40565b91906101000a81548163ffffffff021916908363ffffffff16021790555050336001600160a01b0316856001600160a01b0316876001600160a01b03167fc42e62d9f6b29d37599fcb472a6f30bc6e8c8d6fbbcb774ac585c02b314bd2ad60405160405180910390a46103fb868661094b565b1561046d576040805163278f794360e11b81526001600160a01b03878116600483015260248201929092526000604482015290871690634f1ef28690606401600060405180830381600087803b15801561045457600080fd5b505af1158015610468573d6000803e3d6000fd5b505050505b505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806104bf5750805467ffffffffffffffff808416911610155b156104dd5760405163f92ee8a960e01b815260040160405180910390fd5b8054600160401b67ffffffffffffffff841668ffffffffffffffffff199092168217178255600080546001600160a01b0319166001600160a01b038616179055815468ff0000000000000000191682556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b600054604051634f4bdc7b60e11b81526001600160a01b0390911690639e97b8f690610598906001903390600401610de2565b602060405180830381865afa1580156105b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105d99190610e08565b6105f85760405163472511eb60e11b8152336004820152602401610262565b80806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610653575060408051601f3d908101601f1916820190925261065091810190610e63565b60015b61067b57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610262565b600080516020610f6083398151915281146106ac57604051632a87526960e21b815260048101829052602401610262565b6001600160a01b03808516600090815260016020908152604080832093871683529290522060020154849084901561070a57604051634cc571cf60e01b81526001600160a01b03808416600483015282166024820152604401610262565b6001600160a01b038681166000818152600160208181526040808420958b16808552959091528083209182018054640100000000600160c01b031916336401000000008102919091179091554260029093019290925551909392917fe33956f8d60ae2b38d9860e46ec9b53d8fb58aa99a9404b1195b7ce35d2941dc91a45050505b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061081857507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031661080c600080516020610f60833981519152546001600160a01b031690565b6001600160a01b031614155b156108365760405163703e46dd60e11b815260040160405180910390fd5b565b61084230826101ac565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561089f575060408051601f3d908101601f1916820190925261089c91810190610e63565b60015b6108c757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610262565b600080516020610f6083398151915281146108f857604051632a87526960e21b815260048101829052602401610262565b61078c8383610a28565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108365760405163703e46dd60e11b815260040160405180910390fd5b60008054604051636814b8e560e11b815282916001600160a01b03169063d02971ca9061097d90600190600401610e7c565b602060405180830381865afa15801561099a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109be9190610e8a565b6001600160a01b03808616600090815260016020818152604080842094891684529390529181209091015491925063ffffffff90911690610a0a610a03846006610eb0565b600a610a7e565b90508063ffffffff168263ffffffff16101593505050505b92915050565b610a3182610aa8565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610a765761078c8282610b0d565b61018b610b83565b600081610a8c600185610ed8565b610a969190610ef5565b610aa1906001610f26565b9392505050565b806001600160a01b03163b600003610ade57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610262565b600080516020610f6083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610b2a9190610f43565b600060405180830381855af49150503d8060008114610b65576040519150601f19603f3d011682016040523d82523d6000602084013e610b6a565b606091505b5091509150610b7a858383610ba2565b95945050505050565b34156108365760405163b398979f60e01b815260040160405180910390fd5b606082610bb757610bb282610bfe565b610aa1565b8151158015610bce57506001600160a01b0384163b155b15610bf757604051639996b31560e01b81526001600160a01b0385166004820152602401610262565b5092915050565b805115610c0e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b80356001600160a01b0381168114610c3e57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610c6c57600080fd5b610c7583610c27565b9150602083013567ffffffffffffffff80821115610c9257600080fd5b818501915085601f830112610ca657600080fd5b813581811115610cb857610cb8610c43565b604051601f8201601f19908116603f01168101908382118183101715610ce057610ce0610c43565b81604052828152886020848701011115610cf957600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60008060408385031215610d2e57600080fd5b610d3783610c27565b9150610d4560208401610c27565b90509250929050565b60005b83811015610d69578181015183820152602001610d51565b50506000910152565b6020815260008251806020840152610d91816040850160208701610d4e565b601f01601f19169190910160400192915050565b600060208284031215610db757600080fd5b610aa182610c27565b60048110610dde57634e487b7160e01b600052602160045260246000fd5b9052565b60408101610df08285610dc0565b6001600160a01b039290921660209190910152919050565b600060208284031215610e1a57600080fd5b81518015158114610aa157600080fd5b634e487b7160e01b600052601160045260246000fd5b600063ffffffff808316818103610e5957610e59610e2a565b6001019392505050565b600060208284031215610e7557600080fd5b5051919050565b60208101610a228284610dc0565b600060208284031215610e9c57600080fd5b815163ffffffff81168114610aa157600080fd5b63ffffffff818116838216028082169190828114610ed057610ed0610e2a565b505092915050565b63ffffffff828116828216039080821115610bf757610bf7610e2a565b600063ffffffff80841680610f1a57634e487b7160e01b600052601260045260246000fd5b92169190910492915050565b63ffffffff818116838216019080821115610bf757610bf7610e2a565b60008251610f55818460208701610d4e565b919091019291505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212205fe475f8e009841b6e43cc3d20c2bfdb424045adc5b64515bf6b91cf6a29783464736f6c63430008140033" }, "0x0000000000000000000000000000000000001111": { "comment": "Regex library to validate DID syntax", "balance": "0", - "code": "0x73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c806332ac752b1461004557806355e79d291461006d575b600080fd5b6100586100533660046120b3565b610082565b60405190151581526020015b60405180910390f35b6100756100f8565b6040516100649190612164565b604080518082019091526000808252610114602083015290815b83518110156100f05760008482815181106100b9576100b96121b2565b602001015160f81c60f81b60f81c90506100da81846020015163ffffffff16565b92505080806100e8906121c8565b91505061009c565b505192915050565b6040518060600160405280604081526020016122066040913981565b604080518082019091526000815261209360208201528160ff16606403610150575050604080518082019091526000815261016b602082015290565b505060408051808201909152600081526101a7602082015290565b604080518082019091526000815261209360208201528160ff1660690361015057505060408051808201909152600081526101c2602082015290565b60408051808201909152600081526120936020820152610150565b604080518082019091526000815261209360208201528160ff1660640361015057505060408051808201909152600081526101fe602082015290565b604080518082019091526000815261209360208201528160ff16603a03610150575050604080518082019091526000815261023a602082015290565b604080518082019091526000815261209360208201528160ff16606903610276575050604080518082019091526000815261029c602082015290565b8160ff1660730361015057505060408051808201909152600081526102d8602082015290565b604080518082019091526000815261209360208201528160ff16606e036101505750506040805180820190915260008152610314602082015290565b604080518082019091526000815261209360208201528160ff16606f036101505750506040805180820190915260008152610350602082015290565b604080518082019091526000815261209360208201528160ff16606403610150575050604080518082019091526000815261038c602082015290565b604080518082019091526000815261209360208201528160ff1660760361015057505060408051808201909152600081526103c8602082015290565b604080518082019091526000815261209360208201528160ff166079036101505750506040805180820190915260008152610405602082015290565b604080518082019091526000815261209360208201525b8160ff16603a036101505750506040805180820190915260008152610441602082015290565b604080518082019091526000815261209360208201528160ff166032036103df57505060408051808201909152600081526103c8602082015290565b6040805180820190915260008152612093602082015260308260ff161015801561046f575060398260ff1611155b8061048d575060418260ff161015801561048d5750605a8260ff1611155b806104ab575060618260ff16101580156104ab5750607a8260ff1611155b1561015057505060408051808201909152600081526104cb602082015290565b6040805180820190915260008152612093602082015260308260ff16101580156104f9575060398260ff1611155b80610517575060418260ff16101580156105175750605a8260ff1611155b80610535575060618260ff16101580156105355750607a8260ff1611155b1561055557505060408051808201909152600081526104cb602082015290565b8160ff16603a03610150575050604080518082019091526000815261057b602082015290565b604080518082019091526000815261209360208201528160ff16603014806105a657508160ff166049145b806105b457508160ff16604f145b806105c257508160ff16606c145b156105e257505060408051808201909152600081526106b0602082015290565b60318260ff16101580156105fa575060398260ff1611155b80610618575060418260ff1610158015610618575060488260ff1611155b806106365750604a8260ff16101580156106365750604e8260ff1611155b80610654575060508260ff16101580156106545750605a8260ff1611155b80610672575060618260ff16101580156106725750606b8260ff1611155b806106905750606d8260ff16101580156106905750607a8260ff1611155b15610150575050604080518082019091526000815261073a602082015290565b6040805180820190915260008152612093602082015260308260ff16101580156106de575060398260ff1611155b806106fc575060418260ff16101580156106fc5750605a8260ff1611155b8061071a575060618260ff161015801561071a5750607a8260ff1611155b1561055557505060408051808201909152600081526106b0602082015290565b604080518082019091526000815261209360208201528160ff166030148061076557508160ff166049145b8061077357508160ff16604f145b8061078157508160ff16606c145b156107a157505060408051808201909152600081526106b0602082015290565b60318260ff16101580156107b9575060398260ff1611155b806107d7575060418260ff16101580156107d7575060488260ff1611155b806107f55750604a8260ff16101580156107f55750604e8260ff1611155b80610813575060508260ff16101580156108135750605a8260ff1611155b80610831575060618260ff16101580156108315750606b8260ff1611155b8061084f5750606d8260ff161015801561084f5750607a8260ff1611155b15610555575050604080518082019091526000815261086f602082015290565b604080518082019091526000815261209360208201528160ff166030148061089a57508160ff166049145b806108a857508160ff16604f145b806108b657508160ff16606c145b156108d657505060408051808201909152600081526106b0602082015290565b60318260ff16101580156108ee575060398260ff1611155b8061090c575060418260ff161015801561090c575060488260ff1611155b8061092a5750604a8260ff161015801561092a5750604e8260ff1611155b80610948575060508260ff16101580156109485750605a8260ff1611155b80610966575060618260ff16101580156109665750606b8260ff1611155b806109845750606d8260ff16101580156109845750607a8260ff1611155b1561055557505060408051808201909152600081526109a4602082015290565b604080518082019091526000815261209360208201528160ff16603014806109cf57508160ff166049145b806109dd57508160ff16604f145b806109eb57508160ff16606c145b15610a0b57505060408051808201909152600081526106b0602082015290565b60318260ff1610158015610a23575060398260ff1611155b80610a41575060418260ff1610158015610a41575060488260ff1611155b80610a5f5750604a8260ff1610158015610a5f5750604e8260ff1611155b80610a7d575060508260ff1610158015610a7d5750605a8260ff1611155b80610a9b575060618260ff1610158015610a9b5750606b8260ff1611155b80610ab95750606d8260ff1610158015610ab95750607a8260ff1611155b156105555750506040805180820190915260008152610ad9602082015290565b604080518082019091526000815261209360208201528160ff1660301480610b0457508160ff166049145b80610b1257508160ff16604f145b80610b2057508160ff16606c145b15610b4057505060408051808201909152600081526106b0602082015290565b60318260ff1610158015610b58575060398260ff1611155b80610b76575060418260ff1610158015610b76575060488260ff1611155b80610b945750604a8260ff1610158015610b945750604e8260ff1611155b80610bb2575060508260ff1610158015610bb25750605a8260ff1611155b80610bd0575060618260ff1610158015610bd05750606b8260ff1611155b80610bee5750606d8260ff1610158015610bee5750607a8260ff1611155b156105555750506040805180820190915260008152610c0e602082015290565b604080518082019091526000815261209360208201528160ff1660301480610c3957508160ff166049145b80610c4757508160ff16604f145b80610c5557508160ff16606c145b15610c7557505060408051808201909152600081526106b0602082015290565b60318260ff1610158015610c8d575060398260ff1611155b80610cab575060418260ff1610158015610cab575060488260ff1611155b80610cc95750604a8260ff1610158015610cc95750604e8260ff1611155b80610ce7575060508260ff1610158015610ce75750605a8260ff1611155b80610d05575060618260ff1610158015610d055750606b8260ff1611155b80610d235750606d8260ff1610158015610d235750607a8260ff1611155b156105555750506040805180820190915260008152610d43602082015290565b604080518082019091526000815261209360208201528160ff1660301480610d6e57508160ff166049145b80610d7c57508160ff16604f145b80610d8a57508160ff16606c145b15610daa57505060408051808201909152600081526106b0602082015290565b60318260ff1610158015610dc2575060398260ff1611155b80610de0575060418260ff1610158015610de0575060488260ff1611155b80610dfe5750604a8260ff1610158015610dfe5750604e8260ff1611155b80610e1c575060508260ff1610158015610e1c5750605a8260ff1611155b80610e3a575060618260ff1610158015610e3a5750606b8260ff1611155b80610e585750606d8260ff1610158015610e585750607a8260ff1611155b156105555750506040805180820190915260008152610e78602082015290565b604080518082019091526000815261209360208201528160ff1660301480610ea357508160ff166049145b80610eb157508160ff16604f145b80610ebf57508160ff16606c145b15610edf57505060408051808201909152600081526106b0602082015290565b60318260ff1610158015610ef7575060398260ff1611155b80610f15575060418260ff1610158015610f15575060488260ff1611155b80610f335750604a8260ff1610158015610f335750604e8260ff1611155b80610f51575060508260ff1610158015610f515750605a8260ff1611155b80610f6f575060618260ff1610158015610f6f5750606b8260ff1611155b80610f8d5750606d8260ff1610158015610f8d5750607a8260ff1611155b156105555750506040805180820190915260008152610fad602082015290565b604080518082019091526000815261209360208201528160ff1660301480610fd857508160ff166049145b80610fe657508160ff16604f145b80610ff457508160ff16606c145b1561101457505060408051808201909152600081526106b0602082015290565b60318260ff161015801561102c575060398260ff1611155b8061104a575060418260ff161015801561104a575060488260ff1611155b806110685750604a8260ff16101580156110685750604e8260ff1611155b80611086575060508260ff16101580156110865750605a8260ff1611155b806110a4575060618260ff16101580156110a45750606b8260ff1611155b806110c25750606d8260ff16101580156110c25750607a8260ff1611155b1561055557505060408051808201909152600081526110e2602082015290565b604080518082019091526000815261209360208201528160ff166030148061110d57508160ff166049145b8061111b57508160ff16604f145b8061112957508160ff16606c145b1561114957505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611161575060398260ff1611155b8061117f575060418260ff161015801561117f575060488260ff1611155b8061119d5750604a8260ff161015801561119d5750604e8260ff1611155b806111bb575060508260ff16101580156111bb5750605a8260ff1611155b806111d9575060618260ff16101580156111d95750606b8260ff1611155b806111f75750606d8260ff16101580156111f75750607a8260ff1611155b156105555750506040805180820190915260008152611217602082015290565b604080518082019091526000815261209360208201528160ff166030148061124257508160ff166049145b8061125057508160ff16604f145b8061125e57508160ff16606c145b1561127e57505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611296575060398260ff1611155b806112b4575060418260ff16101580156112b4575060488260ff1611155b806112d25750604a8260ff16101580156112d25750604e8260ff1611155b806112f0575060508260ff16101580156112f05750605a8260ff1611155b8061130e575060618260ff161015801561130e5750606b8260ff1611155b8061132c5750606d8260ff161015801561132c5750607a8260ff1611155b15610555575050604080518082019091526000815261134c602082015290565b604080518082019091526000815261209360208201528160ff166030148061137757508160ff166049145b8061138557508160ff16604f145b8061139357508160ff16606c145b156113b357505060408051808201909152600081526106b0602082015290565b60318260ff16101580156113cb575060398260ff1611155b806113e9575060418260ff16101580156113e9575060488260ff1611155b806114075750604a8260ff16101580156114075750604e8260ff1611155b80611425575060508260ff16101580156114255750605a8260ff1611155b80611443575060618260ff16101580156114435750606b8260ff1611155b806114615750606d8260ff16101580156114615750607a8260ff1611155b156105555750506040805180820190915260008152611481602082015290565b604080518082019091526000815261209360208201528160ff16603014806114ac57508160ff166049145b806114ba57508160ff16604f145b806114c857508160ff16606c145b156114e857505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611500575060398260ff1611155b8061151e575060418260ff161015801561151e575060488260ff1611155b8061153c5750604a8260ff161015801561153c5750604e8260ff1611155b8061155a575060508260ff161015801561155a5750605a8260ff1611155b80611578575060618260ff16101580156115785750606b8260ff1611155b806115965750606d8260ff16101580156115965750607a8260ff1611155b1561055557505060408051808201909152600081526115b6602082015290565b604080518082019091526000815261209360208201528160ff16603014806115e157508160ff166049145b806115ef57508160ff16604f145b806115fd57508160ff16606c145b1561161d57505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611635575060398260ff1611155b80611653575060418260ff1610158015611653575060488260ff1611155b806116715750604a8260ff16101580156116715750604e8260ff1611155b8061168f575060508260ff161015801561168f5750605a8260ff1611155b806116ad575060618260ff16101580156116ad5750606b8260ff1611155b806116cb5750606d8260ff16101580156116cb5750607a8260ff1611155b1561055557505060408051808201909152600081526116eb602082015290565b604080518082019091526000815261209360208201528160ff166030148061171657508160ff166049145b8061172457508160ff16604f145b8061173257508160ff16606c145b1561175257505060408051808201909152600081526106b0602082015290565b60318260ff161015801561176a575060398260ff1611155b80611788575060418260ff1610158015611788575060488260ff1611155b806117a65750604a8260ff16101580156117a65750604e8260ff1611155b806117c4575060508260ff16101580156117c45750605a8260ff1611155b806117e2575060618260ff16101580156117e25750606b8260ff1611155b806118005750606d8260ff16101580156118005750607a8260ff1611155b156105555750506040805180820190915260008152611820602082015290565b604080518082019091526000815261209360208201528160ff166030148061184b57508160ff166049145b8061185957508160ff16604f145b8061186757508160ff16606c145b1561188757505060408051808201909152600081526106b0602082015290565b60318260ff161015801561189f575060398260ff1611155b806118bd575060418260ff16101580156118bd575060488260ff1611155b806118db5750604a8260ff16101580156118db5750604e8260ff1611155b806118f9575060508260ff16101580156118f95750605a8260ff1611155b80611917575060618260ff16101580156119175750606b8260ff1611155b806119355750606d8260ff16101580156119355750607a8260ff1611155b156105555750506040805180820190915260008152611955602082015290565b604080518082019091526000815261209360208201528160ff166030148061198057508160ff166049145b8061198e57508160ff16604f145b8061199c57508160ff16606c145b156119bc57505060408051808201909152600081526106b0602082015290565b60318260ff16101580156119d4575060398260ff1611155b806119f2575060418260ff16101580156119f2575060488260ff1611155b80611a105750604a8260ff1610158015611a105750604e8260ff1611155b80611a2e575060508260ff1610158015611a2e5750605a8260ff1611155b80611a4c575060618260ff1610158015611a4c5750606b8260ff1611155b80611a6a5750606d8260ff1610158015611a6a5750607a8260ff1611155b156105555750506040805180820190915260008152611a8a602082015290565b604080518082019091526000815261209360208201528160ff1660301480611ab557508160ff166049145b80611ac357508160ff16604f145b80611ad157508160ff16606c145b15611af157505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611b09575060398260ff1611155b80611b27575060418260ff1610158015611b27575060488260ff1611155b80611b455750604a8260ff1610158015611b455750604e8260ff1611155b80611b63575060508260ff1610158015611b635750605a8260ff1611155b80611b81575060618260ff1610158015611b815750606b8260ff1611155b80611b9f5750606d8260ff1610158015611b9f5750607a8260ff1611155b156105555750506040805180820190915260008152611bbf602082015290565b604080518082019091526000815261209360208201528160ff1660301480611bea57508160ff166049145b80611bf857508160ff16604f145b80611c0657508160ff16606c145b15611c2657505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611c3e575060398260ff1611155b80611c5c575060418260ff1610158015611c5c575060488260ff1611155b80611c7a5750604a8260ff1610158015611c7a5750604e8260ff1611155b80611c98575060508260ff1610158015611c985750605a8260ff1611155b80611cb6575060618260ff1610158015611cb65750606b8260ff1611155b80611cd45750606d8260ff1610158015611cd45750607a8260ff1611155b156105555750506040805180820190915260008152611cf4602082015290565b604080518082019091526000815261209360208201528160ff1660301480611d1f57508160ff166049145b80611d2d57508160ff16604f145b80611d3b57508160ff16606c145b15611d5b57505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611d73575060398260ff1611155b80611d91575060418260ff1610158015611d91575060488260ff1611155b80611daf5750604a8260ff1610158015611daf5750604e8260ff1611155b80611dcd575060508260ff1610158015611dcd5750605a8260ff1611155b80611deb575060618260ff1610158015611deb5750606b8260ff1611155b80611e095750606d8260ff1610158015611e095750607a8260ff1611155b156105555750506040805180820190915260008152611e29602082015290565b604080518082019091526000815261209360208201528160ff1660301480611e5457508160ff166049145b80611e6257508160ff16604f145b80611e7057508160ff16606c145b15611e9057505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611ea8575060398260ff1611155b80611ec6575060418260ff1610158015611ec6575060488260ff1611155b80611ee45750604a8260ff1610158015611ee45750604e8260ff1611155b80611f02575060508260ff1610158015611f025750605a8260ff1611155b80611f20575060618260ff1610158015611f205750606b8260ff1611155b80611f3e5750606d8260ff1610158015611f3e5750607a8260ff1611155b156105555750506040805180820190915260018152611f5e602082015290565b604080518082019091526000815261209360208201528160ff1660301480611f8957508160ff166049145b80611f9757508160ff16604f145b80611fa557508160ff16606c145b15611fc557505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611fdd575060398260ff1611155b80611ffb575060418260ff1610158015611ffb575060488260ff1611155b806120195750604a8260ff16101580156120195750604e8260ff1611155b80612037575060508260ff16101580156120375750605a8260ff1611155b80612055575060618260ff16101580156120555750606b8260ff1611155b806120735750606d8260ff16101580156120735750607a8260ff1611155b1561055557505060408051808201909152600181526106b0602082015290565b61209b6121ef565b565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156120c557600080fd5b813567ffffffffffffffff808211156120dd57600080fd5b818401915084601f8301126120f157600080fd5b8135818111156121035761210361209d565b604051601f8201601f19908116603f0116810190838211818310171561212b5761212b61209d565b8160405282815287602084870101111561214457600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b8181101561219157858101830151858201604001528201612175565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052603260045260246000fd5b6000600182016121e857634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052605160045260246000fdfe6469643a28696e6479327c696e64797c736f76293a285b612d7a412d5a302d395d2b3a292b5b312d39412d484a2d4e502d5a612d6b6d2d7a5d7b32312c32327da2646970667358221220714c9b9760d79d145e7f1deb0af53f2fee7cdff44e675a07205b9250290b441364736f6c63430008150033", + "code": "0x73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c806332ac752b1461004557806355e79d291461006d575b600080fd5b6100586100533660046120b3565b610082565b60405190151581526020015b60405180910390f35b6100756100f8565b6040516100649190612164565b604080518082019091526000808252610114602083015290815b83518110156100f05760008482815181106100b9576100b96121b2565b602001015160f81c60f81b60f81c90506100da81846020015163ffffffff16565b92505080806100e8906121c8565b91505061009c565b505192915050565b6040518060600160405280604081526020016122066040913981565b604080518082019091526000815261209360208201528160ff16606403610150575050604080518082019091526000815261016b602082015290565b505060408051808201909152600081526101a7602082015290565b604080518082019091526000815261209360208201528160ff1660690361015057505060408051808201909152600081526101c2602082015290565b60408051808201909152600081526120936020820152610150565b604080518082019091526000815261209360208201528160ff1660640361015057505060408051808201909152600081526101fe602082015290565b604080518082019091526000815261209360208201528160ff16603a03610150575050604080518082019091526000815261023a602082015290565b604080518082019091526000815261209360208201528160ff16606903610276575050604080518082019091526000815261029c602082015290565b8160ff1660730361015057505060408051808201909152600081526102d8602082015290565b604080518082019091526000815261209360208201528160ff16606e036101505750506040805180820190915260008152610314602082015290565b604080518082019091526000815261209360208201528160ff16606f036101505750506040805180820190915260008152610350602082015290565b604080518082019091526000815261209360208201528160ff16606403610150575050604080518082019091526000815261038c602082015290565b604080518082019091526000815261209360208201528160ff1660760361015057505060408051808201909152600081526103c8602082015290565b604080518082019091526000815261209360208201528160ff166079036101505750506040805180820190915260008152610405602082015290565b604080518082019091526000815261209360208201525b8160ff16603a036101505750506040805180820190915260008152610441602082015290565b604080518082019091526000815261209360208201528160ff166032036103df57505060408051808201909152600081526103c8602082015290565b6040805180820190915260008152612093602082015260308260ff161015801561046f575060398260ff1611155b8061048d575060418260ff161015801561048d5750605a8260ff1611155b806104ab575060618260ff16101580156104ab5750607a8260ff1611155b1561015057505060408051808201909152600081526104cb602082015290565b6040805180820190915260008152612093602082015260308260ff16101580156104f9575060398260ff1611155b80610517575060418260ff16101580156105175750605a8260ff1611155b80610535575060618260ff16101580156105355750607a8260ff1611155b1561055557505060408051808201909152600081526104cb602082015290565b8160ff16603a03610150575050604080518082019091526000815261057b602082015290565b604080518082019091526000815261209360208201528160ff16603014806105a657508160ff166049145b806105b457508160ff16604f145b806105c257508160ff16606c145b156105e257505060408051808201909152600081526106b0602082015290565b60318260ff16101580156105fa575060398260ff1611155b80610618575060418260ff1610158015610618575060488260ff1611155b806106365750604a8260ff16101580156106365750604e8260ff1611155b80610654575060508260ff16101580156106545750605a8260ff1611155b80610672575060618260ff16101580156106725750606b8260ff1611155b806106905750606d8260ff16101580156106905750607a8260ff1611155b15610150575050604080518082019091526000815261073a602082015290565b6040805180820190915260008152612093602082015260308260ff16101580156106de575060398260ff1611155b806106fc575060418260ff16101580156106fc5750605a8260ff1611155b8061071a575060618260ff161015801561071a5750607a8260ff1611155b1561055557505060408051808201909152600081526106b0602082015290565b604080518082019091526000815261209360208201528160ff166030148061076557508160ff166049145b8061077357508160ff16604f145b8061078157508160ff16606c145b156107a157505060408051808201909152600081526106b0602082015290565b60318260ff16101580156107b9575060398260ff1611155b806107d7575060418260ff16101580156107d7575060488260ff1611155b806107f55750604a8260ff16101580156107f55750604e8260ff1611155b80610813575060508260ff16101580156108135750605a8260ff1611155b80610831575060618260ff16101580156108315750606b8260ff1611155b8061084f5750606d8260ff161015801561084f5750607a8260ff1611155b15610555575050604080518082019091526000815261086f602082015290565b604080518082019091526000815261209360208201528160ff166030148061089a57508160ff166049145b806108a857508160ff16604f145b806108b657508160ff16606c145b156108d657505060408051808201909152600081526106b0602082015290565b60318260ff16101580156108ee575060398260ff1611155b8061090c575060418260ff161015801561090c575060488260ff1611155b8061092a5750604a8260ff161015801561092a5750604e8260ff1611155b80610948575060508260ff16101580156109485750605a8260ff1611155b80610966575060618260ff16101580156109665750606b8260ff1611155b806109845750606d8260ff16101580156109845750607a8260ff1611155b1561055557505060408051808201909152600081526109a4602082015290565b604080518082019091526000815261209360208201528160ff16603014806109cf57508160ff166049145b806109dd57508160ff16604f145b806109eb57508160ff16606c145b15610a0b57505060408051808201909152600081526106b0602082015290565b60318260ff1610158015610a23575060398260ff1611155b80610a41575060418260ff1610158015610a41575060488260ff1611155b80610a5f5750604a8260ff1610158015610a5f5750604e8260ff1611155b80610a7d575060508260ff1610158015610a7d5750605a8260ff1611155b80610a9b575060618260ff1610158015610a9b5750606b8260ff1611155b80610ab95750606d8260ff1610158015610ab95750607a8260ff1611155b156105555750506040805180820190915260008152610ad9602082015290565b604080518082019091526000815261209360208201528160ff1660301480610b0457508160ff166049145b80610b1257508160ff16604f145b80610b2057508160ff16606c145b15610b4057505060408051808201909152600081526106b0602082015290565b60318260ff1610158015610b58575060398260ff1611155b80610b76575060418260ff1610158015610b76575060488260ff1611155b80610b945750604a8260ff1610158015610b945750604e8260ff1611155b80610bb2575060508260ff1610158015610bb25750605a8260ff1611155b80610bd0575060618260ff1610158015610bd05750606b8260ff1611155b80610bee5750606d8260ff1610158015610bee5750607a8260ff1611155b156105555750506040805180820190915260008152610c0e602082015290565b604080518082019091526000815261209360208201528160ff1660301480610c3957508160ff166049145b80610c4757508160ff16604f145b80610c5557508160ff16606c145b15610c7557505060408051808201909152600081526106b0602082015290565b60318260ff1610158015610c8d575060398260ff1611155b80610cab575060418260ff1610158015610cab575060488260ff1611155b80610cc95750604a8260ff1610158015610cc95750604e8260ff1611155b80610ce7575060508260ff1610158015610ce75750605a8260ff1611155b80610d05575060618260ff1610158015610d055750606b8260ff1611155b80610d235750606d8260ff1610158015610d235750607a8260ff1611155b156105555750506040805180820190915260008152610d43602082015290565b604080518082019091526000815261209360208201528160ff1660301480610d6e57508160ff166049145b80610d7c57508160ff16604f145b80610d8a57508160ff16606c145b15610daa57505060408051808201909152600081526106b0602082015290565b60318260ff1610158015610dc2575060398260ff1611155b80610de0575060418260ff1610158015610de0575060488260ff1611155b80610dfe5750604a8260ff1610158015610dfe5750604e8260ff1611155b80610e1c575060508260ff1610158015610e1c5750605a8260ff1611155b80610e3a575060618260ff1610158015610e3a5750606b8260ff1611155b80610e585750606d8260ff1610158015610e585750607a8260ff1611155b156105555750506040805180820190915260008152610e78602082015290565b604080518082019091526000815261209360208201528160ff1660301480610ea357508160ff166049145b80610eb157508160ff16604f145b80610ebf57508160ff16606c145b15610edf57505060408051808201909152600081526106b0602082015290565b60318260ff1610158015610ef7575060398260ff1611155b80610f15575060418260ff1610158015610f15575060488260ff1611155b80610f335750604a8260ff1610158015610f335750604e8260ff1611155b80610f51575060508260ff1610158015610f515750605a8260ff1611155b80610f6f575060618260ff1610158015610f6f5750606b8260ff1611155b80610f8d5750606d8260ff1610158015610f8d5750607a8260ff1611155b156105555750506040805180820190915260008152610fad602082015290565b604080518082019091526000815261209360208201528160ff1660301480610fd857508160ff166049145b80610fe657508160ff16604f145b80610ff457508160ff16606c145b1561101457505060408051808201909152600081526106b0602082015290565b60318260ff161015801561102c575060398260ff1611155b8061104a575060418260ff161015801561104a575060488260ff1611155b806110685750604a8260ff16101580156110685750604e8260ff1611155b80611086575060508260ff16101580156110865750605a8260ff1611155b806110a4575060618260ff16101580156110a45750606b8260ff1611155b806110c25750606d8260ff16101580156110c25750607a8260ff1611155b1561055557505060408051808201909152600081526110e2602082015290565b604080518082019091526000815261209360208201528160ff166030148061110d57508160ff166049145b8061111b57508160ff16604f145b8061112957508160ff16606c145b1561114957505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611161575060398260ff1611155b8061117f575060418260ff161015801561117f575060488260ff1611155b8061119d5750604a8260ff161015801561119d5750604e8260ff1611155b806111bb575060508260ff16101580156111bb5750605a8260ff1611155b806111d9575060618260ff16101580156111d95750606b8260ff1611155b806111f75750606d8260ff16101580156111f75750607a8260ff1611155b156105555750506040805180820190915260008152611217602082015290565b604080518082019091526000815261209360208201528160ff166030148061124257508160ff166049145b8061125057508160ff16604f145b8061125e57508160ff16606c145b1561127e57505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611296575060398260ff1611155b806112b4575060418260ff16101580156112b4575060488260ff1611155b806112d25750604a8260ff16101580156112d25750604e8260ff1611155b806112f0575060508260ff16101580156112f05750605a8260ff1611155b8061130e575060618260ff161015801561130e5750606b8260ff1611155b8061132c5750606d8260ff161015801561132c5750607a8260ff1611155b15610555575050604080518082019091526000815261134c602082015290565b604080518082019091526000815261209360208201528160ff166030148061137757508160ff166049145b8061138557508160ff16604f145b8061139357508160ff16606c145b156113b357505060408051808201909152600081526106b0602082015290565b60318260ff16101580156113cb575060398260ff1611155b806113e9575060418260ff16101580156113e9575060488260ff1611155b806114075750604a8260ff16101580156114075750604e8260ff1611155b80611425575060508260ff16101580156114255750605a8260ff1611155b80611443575060618260ff16101580156114435750606b8260ff1611155b806114615750606d8260ff16101580156114615750607a8260ff1611155b156105555750506040805180820190915260008152611481602082015290565b604080518082019091526000815261209360208201528160ff16603014806114ac57508160ff166049145b806114ba57508160ff16604f145b806114c857508160ff16606c145b156114e857505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611500575060398260ff1611155b8061151e575060418260ff161015801561151e575060488260ff1611155b8061153c5750604a8260ff161015801561153c5750604e8260ff1611155b8061155a575060508260ff161015801561155a5750605a8260ff1611155b80611578575060618260ff16101580156115785750606b8260ff1611155b806115965750606d8260ff16101580156115965750607a8260ff1611155b1561055557505060408051808201909152600081526115b6602082015290565b604080518082019091526000815261209360208201528160ff16603014806115e157508160ff166049145b806115ef57508160ff16604f145b806115fd57508160ff16606c145b1561161d57505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611635575060398260ff1611155b80611653575060418260ff1610158015611653575060488260ff1611155b806116715750604a8260ff16101580156116715750604e8260ff1611155b8061168f575060508260ff161015801561168f5750605a8260ff1611155b806116ad575060618260ff16101580156116ad5750606b8260ff1611155b806116cb5750606d8260ff16101580156116cb5750607a8260ff1611155b1561055557505060408051808201909152600081526116eb602082015290565b604080518082019091526000815261209360208201528160ff166030148061171657508160ff166049145b8061172457508160ff16604f145b8061173257508160ff16606c145b1561175257505060408051808201909152600081526106b0602082015290565b60318260ff161015801561176a575060398260ff1611155b80611788575060418260ff1610158015611788575060488260ff1611155b806117a65750604a8260ff16101580156117a65750604e8260ff1611155b806117c4575060508260ff16101580156117c45750605a8260ff1611155b806117e2575060618260ff16101580156117e25750606b8260ff1611155b806118005750606d8260ff16101580156118005750607a8260ff1611155b156105555750506040805180820190915260008152611820602082015290565b604080518082019091526000815261209360208201528160ff166030148061184b57508160ff166049145b8061185957508160ff16604f145b8061186757508160ff16606c145b1561188757505060408051808201909152600081526106b0602082015290565b60318260ff161015801561189f575060398260ff1611155b806118bd575060418260ff16101580156118bd575060488260ff1611155b806118db5750604a8260ff16101580156118db5750604e8260ff1611155b806118f9575060508260ff16101580156118f95750605a8260ff1611155b80611917575060618260ff16101580156119175750606b8260ff1611155b806119355750606d8260ff16101580156119355750607a8260ff1611155b156105555750506040805180820190915260008152611955602082015290565b604080518082019091526000815261209360208201528160ff166030148061198057508160ff166049145b8061198e57508160ff16604f145b8061199c57508160ff16606c145b156119bc57505060408051808201909152600081526106b0602082015290565b60318260ff16101580156119d4575060398260ff1611155b806119f2575060418260ff16101580156119f2575060488260ff1611155b80611a105750604a8260ff1610158015611a105750604e8260ff1611155b80611a2e575060508260ff1610158015611a2e5750605a8260ff1611155b80611a4c575060618260ff1610158015611a4c5750606b8260ff1611155b80611a6a5750606d8260ff1610158015611a6a5750607a8260ff1611155b156105555750506040805180820190915260008152611a8a602082015290565b604080518082019091526000815261209360208201528160ff1660301480611ab557508160ff166049145b80611ac357508160ff16604f145b80611ad157508160ff16606c145b15611af157505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611b09575060398260ff1611155b80611b27575060418260ff1610158015611b27575060488260ff1611155b80611b455750604a8260ff1610158015611b455750604e8260ff1611155b80611b63575060508260ff1610158015611b635750605a8260ff1611155b80611b81575060618260ff1610158015611b815750606b8260ff1611155b80611b9f5750606d8260ff1610158015611b9f5750607a8260ff1611155b156105555750506040805180820190915260008152611bbf602082015290565b604080518082019091526000815261209360208201528160ff1660301480611bea57508160ff166049145b80611bf857508160ff16604f145b80611c0657508160ff16606c145b15611c2657505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611c3e575060398260ff1611155b80611c5c575060418260ff1610158015611c5c575060488260ff1611155b80611c7a5750604a8260ff1610158015611c7a5750604e8260ff1611155b80611c98575060508260ff1610158015611c985750605a8260ff1611155b80611cb6575060618260ff1610158015611cb65750606b8260ff1611155b80611cd45750606d8260ff1610158015611cd45750607a8260ff1611155b156105555750506040805180820190915260008152611cf4602082015290565b604080518082019091526000815261209360208201528160ff1660301480611d1f57508160ff166049145b80611d2d57508160ff16604f145b80611d3b57508160ff16606c145b15611d5b57505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611d73575060398260ff1611155b80611d91575060418260ff1610158015611d91575060488260ff1611155b80611daf5750604a8260ff1610158015611daf5750604e8260ff1611155b80611dcd575060508260ff1610158015611dcd5750605a8260ff1611155b80611deb575060618260ff1610158015611deb5750606b8260ff1611155b80611e095750606d8260ff1610158015611e095750607a8260ff1611155b156105555750506040805180820190915260008152611e29602082015290565b604080518082019091526000815261209360208201528160ff1660301480611e5457508160ff166049145b80611e6257508160ff16604f145b80611e7057508160ff16606c145b15611e9057505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611ea8575060398260ff1611155b80611ec6575060418260ff1610158015611ec6575060488260ff1611155b80611ee45750604a8260ff1610158015611ee45750604e8260ff1611155b80611f02575060508260ff1610158015611f025750605a8260ff1611155b80611f20575060618260ff1610158015611f205750606b8260ff1611155b80611f3e5750606d8260ff1610158015611f3e5750607a8260ff1611155b156105555750506040805180820190915260018152611f5e602082015290565b604080518082019091526000815261209360208201528160ff1660301480611f8957508160ff166049145b80611f9757508160ff16604f145b80611fa557508160ff16606c145b15611fc557505060408051808201909152600081526106b0602082015290565b60318260ff1610158015611fdd575060398260ff1611155b80611ffb575060418260ff1610158015611ffb575060488260ff1611155b806120195750604a8260ff16101580156120195750604e8260ff1611155b80612037575060508260ff16101580156120375750605a8260ff1611155b80612055575060618260ff16101580156120555750606b8260ff1611155b806120735750606d8260ff16101580156120735750607a8260ff1611155b1561055557505060408051808201909152600181526106b0602082015290565b61209b6121ef565b565b634e487b7160e01b600052604160045260246000fd5b6000602082840312156120c557600080fd5b813567ffffffffffffffff808211156120dd57600080fd5b818401915084601f8301126120f157600080fd5b8135818111156121035761210361209d565b604051601f8201601f19908116603f0116810190838211818310171561212b5761212b61209d565b8160405282815287602084870101111561214457600080fd5b826020860160208301376000928101602001929092525095945050505050565b600060208083528351808285015260005b8181101561219157858101830151858201604001528201612175565b506000604082860101526040601f19601f8301168501019250505092915050565b634e487b7160e01b600052603260045260246000fd5b6000600182016121e857634e487b7160e01b600052601160045260246000fd5b5060010190565b634e487b7160e01b600052605160045260246000fdfe6469643a28696e6479327c696e64797c736f76293a285b612d7a412d5a302d395d2b3a292b5b312d39412d484a2d4e502d5a612d6b6d2d7a5d7b32312c32327da26469706673582212205aab6e7c5c03bbfdf9a8861e983f0b23f040cfb92ee6f0f1cd97c787acea92a864736f6c63430008140033", "storage": {} }, "0x0000000000000000000000000000000000002222": { "comment": "Library to validate DID", "balance": "0", - "code": "0x73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80635fbac08e14610045578063d84a06e11461005a575b600080fd5b6100586100533660046104a8565b61006d565b005b61005861006836600461091f565b610110565b6040516332ac752b60e01b8152730000000000000000000000000000000000001111906332ac752b906100a4908490600401610b42565b602060405180830381865af41580156100c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e59190610b55565b61010d5780604051631859e3bb60e11b81526004016101049190610b42565b60405180910390fd5b50565b80608001515160000361013c5780602001516040516320198af360e11b81526004016101049190610b42565b60005b8160800151518110156102105761018a61017d8360800151838151811061016857610168610b77565b60200260200101516020015160000151610214565b6001600160801b03161590565b156101fe576101be8260600151836080015183815181106101ad576101ad610b77565b602002602001015160000151610225565b6101fe57816080015181815181106101d8576101d8610b77565b6020026020010151600001516040516339360df960e11b81526004016101049190610b42565b8061020881610b8d565b91505061013f565b5050565b600061021f8261029c565b92915050565b60008061023183610214565b905060005b84518110156102915761026f8261026987848151811061025857610258610b77565b602002602001015160000151610214565b906102b7565b1561027f5760019250505061021f565b8061028981610b8d565b915050610236565b506000949350505050565b6000806020830190506102b08184516102c3565b9392505050565b60006102b083836102cf565b60006102b08383610319565b60006001600160801b0383811690831681146102ef57600091505061021f565b6103116102fc8560801c90565b6103068560801c90565b839081902091201490565b949350505050565b60006102b0838360006001600160801b0383111561034a5760405163fee7506f60e01b815260040160405180910390fd5b6001600160801b0382111561037257604051633b6b098d60e01b815260040160405180910390fd5b506001600160801b031660809190911b1790565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156103be576103be610386565b60405290565b604080519081016001600160401b03811182821017156103be576103be610386565b60405161016081016001600160401b03811182821017156103be576103be610386565b604051601f8201601f191681016001600160401b038111828210171561043157610431610386565b604052919050565b600082601f83011261044a57600080fd5b81356001600160401b0381111561046357610463610386565b610476601f8201601f1916602001610409565b81815284602083860101111561048b57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156104ba57600080fd5b81356001600160401b038111156104d057600080fd5b61031184828501610439565b60006001600160401b038211156104f5576104f5610386565b5060051b60200190565b600082601f83011261051057600080fd5b81356020610525610520836104dc565b610409565b82815260059290921b8401810191818101908684111561054457600080fd5b8286015b848110156105835780356001600160401b038111156105675760008081fd5b6105758986838b0101610439565b845250918301918301610548565b509695505050505050565b600060a082840312156105a057600080fd5b6105a861039c565b905081356001600160401b03808211156105c157600080fd5b6105cd85838601610439565b835260208401359150808211156105e357600080fd5b6105ef85838601610439565b6020840152604084013591508082111561060857600080fd5b61061485838601610439565b6040840152606084013591508082111561062d57600080fd5b61063985838601610439565b6060840152608084013591508082111561065257600080fd5b5061065f84828501610439565b60808301525092915050565b600082601f83011261067c57600080fd5b8135602061068c610520836104dc565b82815260059290921b840181019181810190868411156106ab57600080fd5b8286015b848110156105835780356001600160401b038111156106ce5760008081fd5b6106dc8986838b010161058e565b8452509183019183016106af565b600082601f8301126106fb57600080fd5b8135602061070b610520836104dc565b82815260059290921b8401810191818101908684111561072a57600080fd5b8286015b848110156105835780356001600160401b038082111561074e5760008081fd5b908801906040828b03601f19018113156107685760008081fd5b6107706103c4565b87840135838111156107825760008081fd5b6107908d8a83880101610439565b8252509083013590828211156107a65760008081fd5b6107b48c898487010161058e565b81890152865250505091830191830161072e565b600082601f8301126107d957600080fd5b813560206107e9610520836104dc565b82815260059290921b8401810191818101908684111561080857600080fd5b8286015b848110156105835780356001600160401b038082111561082c5760008081fd5b9088019060a0828b03601f19018113156108465760008081fd5b61084e61039c565b87840135838111156108605760008081fd5b61086e8d8a83880101610439565b825250604080850135848111156108855760008081fd5b6108938e8b83890101610439565b8a84015250606080860135858111156108ac5760008081fd5b6108ba8f8c838a0101610439565b83850152506080915081860135858111156108d55760008081fd5b6108e38f8c838a01016104ff565b828501525050828501359250838311156108fd5760008081fd5b61090b8d8a858801016104ff565b90820152865250505091830191830161080c565b60006020828403121561093157600080fd5b81356001600160401b038082111561094857600080fd5b90830190610160828603121561095d57600080fd5b6109656103e6565b82358281111561097457600080fd5b610980878286016104ff565b82525060208301358281111561099557600080fd5b6109a187828601610439565b6020830152506040830135828111156109b957600080fd5b6109c5878286016104ff565b6040830152506060830135828111156109dd57600080fd5b6109e98782860161066b565b606083015250608083013582811115610a0157600080fd5b610a0d878286016106ea565b60808301525060a083013582811115610a2557600080fd5b610a31878286016106ea565b60a08301525060c083013582811115610a4957600080fd5b610a55878286016106ea565b60c08301525060e083013582811115610a6d57600080fd5b610a79878286016106ea565b60e0830152506101008084013583811115610a9357600080fd5b610a9f888287016106ea565b8284015250506101208084013583811115610ab957600080fd5b610ac5888287016107c8565b8284015250506101408084013583811115610adf57600080fd5b610aeb888287016104ff565b918301919091525095945050505050565b6000815180845260005b81811015610b2257602081850181015186830182015201610b06565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006102b06020830184610afc565b600060208284031215610b6757600080fd5b815180151581146102b057600080fd5b634e487b7160e01b600052603260045260246000fd5b600060018201610bad57634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212205758b661ec0babee0cfb7341cfa4beb170bc28ef89f48ac4665763ca8dbaa9eb64736f6c63430008150033", + "code": "0x73000000000000000000000000000000000000000030146080604052600436106100405760003560e01c80635fbac08e14610045578063d84a06e11461005a575b600080fd5b6100586100533660046104a8565b61006d565b005b61005861006836600461091f565b610110565b6040516332ac752b60e01b8152730000000000000000000000000000000000001111906332ac752b906100a4908490600401610b42565b602060405180830381865af41580156100c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e59190610b55565b61010d5780604051631859e3bb60e11b81526004016101049190610b42565b60405180910390fd5b50565b80608001515160000361013c5780602001516040516320198af360e11b81526004016101049190610b42565b60005b8160800151518110156102105761018a61017d8360800151838151811061016857610168610b77565b60200260200101516020015160000151610214565b6001600160801b03161590565b156101fe576101be8260600151836080015183815181106101ad576101ad610b77565b602002602001015160000151610225565b6101fe57816080015181815181106101d8576101d8610b77565b6020026020010151600001516040516339360df960e11b81526004016101049190610b42565b8061020881610b8d565b91505061013f565b5050565b600061021f8261029c565b92915050565b60008061023183610214565b905060005b84518110156102915761026f8261026987848151811061025857610258610b77565b602002602001015160000151610214565b906102b7565b1561027f5760019250505061021f565b8061028981610b8d565b915050610236565b506000949350505050565b6000806020830190506102b08184516102c3565b9392505050565b60006102b083836102cf565b60006102b08383610319565b60006001600160801b0383811690831681146102ef57600091505061021f565b6103116102fc8560801c90565b6103068560801c90565b839081902091201490565b949350505050565b60006102b0838360006001600160801b0383111561034a5760405163fee7506f60e01b815260040160405180910390fd5b6001600160801b0382111561037257604051633b6b098d60e01b815260040160405180910390fd5b506001600160801b031660809190911b1790565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156103be576103be610386565b60405290565b604080519081016001600160401b03811182821017156103be576103be610386565b60405161016081016001600160401b03811182821017156103be576103be610386565b604051601f8201601f191681016001600160401b038111828210171561043157610431610386565b604052919050565b600082601f83011261044a57600080fd5b81356001600160401b0381111561046357610463610386565b610476601f8201601f1916602001610409565b81815284602083860101111561048b57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602082840312156104ba57600080fd5b81356001600160401b038111156104d057600080fd5b61031184828501610439565b60006001600160401b038211156104f5576104f5610386565b5060051b60200190565b600082601f83011261051057600080fd5b81356020610525610520836104dc565b610409565b82815260059290921b8401810191818101908684111561054457600080fd5b8286015b848110156105835780356001600160401b038111156105675760008081fd5b6105758986838b0101610439565b845250918301918301610548565b509695505050505050565b600060a082840312156105a057600080fd5b6105a861039c565b905081356001600160401b03808211156105c157600080fd5b6105cd85838601610439565b835260208401359150808211156105e357600080fd5b6105ef85838601610439565b6020840152604084013591508082111561060857600080fd5b61061485838601610439565b6040840152606084013591508082111561062d57600080fd5b61063985838601610439565b6060840152608084013591508082111561065257600080fd5b5061065f84828501610439565b60808301525092915050565b600082601f83011261067c57600080fd5b8135602061068c610520836104dc565b82815260059290921b840181019181810190868411156106ab57600080fd5b8286015b848110156105835780356001600160401b038111156106ce5760008081fd5b6106dc8986838b010161058e565b8452509183019183016106af565b600082601f8301126106fb57600080fd5b8135602061070b610520836104dc565b82815260059290921b8401810191818101908684111561072a57600080fd5b8286015b848110156105835780356001600160401b038082111561074e5760008081fd5b908801906040828b03601f19018113156107685760008081fd5b6107706103c4565b87840135838111156107825760008081fd5b6107908d8a83880101610439565b8252509083013590828211156107a65760008081fd5b6107b48c898487010161058e565b81890152865250505091830191830161072e565b600082601f8301126107d957600080fd5b813560206107e9610520836104dc565b82815260059290921b8401810191818101908684111561080857600080fd5b8286015b848110156105835780356001600160401b038082111561082c5760008081fd5b9088019060a0828b03601f19018113156108465760008081fd5b61084e61039c565b87840135838111156108605760008081fd5b61086e8d8a83880101610439565b825250604080850135848111156108855760008081fd5b6108938e8b83890101610439565b8a84015250606080860135858111156108ac5760008081fd5b6108ba8f8c838a0101610439565b83850152506080915081860135858111156108d55760008081fd5b6108e38f8c838a01016104ff565b828501525050828501359250838311156108fd5760008081fd5b61090b8d8a858801016104ff565b90820152865250505091830191830161080c565b60006020828403121561093157600080fd5b81356001600160401b038082111561094857600080fd5b90830190610160828603121561095d57600080fd5b6109656103e6565b82358281111561097457600080fd5b610980878286016104ff565b82525060208301358281111561099557600080fd5b6109a187828601610439565b6020830152506040830135828111156109b957600080fd5b6109c5878286016104ff565b6040830152506060830135828111156109dd57600080fd5b6109e98782860161066b565b606083015250608083013582811115610a0157600080fd5b610a0d878286016106ea565b60808301525060a083013582811115610a2557600080fd5b610a31878286016106ea565b60a08301525060c083013582811115610a4957600080fd5b610a55878286016106ea565b60c08301525060e083013582811115610a6d57600080fd5b610a79878286016106ea565b60e0830152506101008084013583811115610a9357600080fd5b610a9f888287016106ea565b8284015250506101208084013583811115610ab957600080fd5b610ac5888287016107c8565b8284015250506101408084013583811115610adf57600080fd5b610aeb888287016104ff565b918301919091525095945050505050565b6000815180845260005b81811015610b2257602081850181015186830182015201610b06565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006102b06020830184610afc565b600060208284031215610b6757600080fd5b815180151581146102b057600080fd5b634e487b7160e01b600052603260045260246000fd5b600060018201610bad57634e487b7160e01b600052601160045260246000fd5b506001019056fea2646970667358221220a0b1ef7882063fed854ffe7b5f2ab1d986ea13dc695876a9a40fc0f649b0ed3864736f6c63430008140033", "storage": {} }, "0x0000000000000000000000000000000000003333": { "comment": "Proxy: Smart contract to manage DIDs", "balance": "0", - "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea264697066735822122021a4e888b9c1db781305504c1fe4d900ea72bacfd972be843c095665e340c1f864736f6c63430008150033", + "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220b318f7afb60b67fd3dc094cf8eb9b397007adb9376e4f3638cab05cadefc21ab64736f6c63430008140033", "storage": { "0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000009999", "f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00": "0x0000000000000000000000000000000000000000000000000000000000000001", - "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000ab725dceb7b0611b626a62180ab65898e7ea13e5" + "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000004aae2978b01e4b7f5f6b06ef181f8322d8424fcc" } }, - "0xab725dceb7b0611b626a62180ab65898e7ea13e5": { + "0x4aae2978b01e4b7f5f6b06ef181f8322d8424fcc": { "comment": "Implementation: Smart contract to manage DIDs", "balance": "0", - "code": "0x60806040526004361061007b5760003560e01c8063869957a51161004e578063869957a51461010e578063ad3cb1cc1461012e578063c4d66de81461016c578063f4653a1d1461018c57600080fd5b80633633852c146100805780634f1ef286146100b657806352d1902d146100cb57806356f7317d146100ee575b600080fd5b34801561008c57600080fd5b506100a061009b366004612dd5565b6101ac565b6040516100ad91906130e8565b60405180910390f35b6100c96100c43660046132b8565b61202a565b005b3480156100d757600080fd5b506100e0612049565b6040519081526020016100ad565b3480156100fa57600080fd5b506100c9610109366004613379565b612066565b34801561011a57600080fd5b506100c9610129366004613379565b612361565b34801561013a57600080fd5b5061015f604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100ad91906133b4565b34801561017857600080fd5b506100c96101873660046133c7565b612611565b34801561019857600080fd5b506100c96101a7366004612dd5565b6126f3565b6101b4612d43565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600192506101fb915083906133e2565b908152604051908190036020019020600c0154600003610239578060405163186a887560e11b815260040161023091906133b4565b60405180910390fd5b6001848460405161024b9291906133fe565b90815260408051918290036020908101832080546101c09281028501830184526101a0850181815291938593908401928592849284919060009088015b828210156103345783829060005260206000200180546102a79061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546102d39061340e565b80156103205780601f106102f557610100808354040283529160200191610320565b820191906000526020600020905b81548152906001019060200180831161030357829003601f168201915b505050505081526020019060010190610288565b50505050815260200160018201805461034c9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546103789061340e565b80156103c55780601f1061039a576101008083540402835291602001916103c5565b820191906000526020600020905b8154815290600101906020018083116103a857829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561049f5783829060005260206000200180546104129061340e565b80601f016020809104026020016040519081016040528092919081815260200182805461043e9061340e565b801561048b5780601f106104605761010080835404028352916020019161048b565b820191906000526020600020905b81548152906001019060200180831161046e57829003601f168201915b5050505050815260200190600101906103f3565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156107d857838290600052602060002090600502016040518060a00160405290816000820180546104ff9061340e565b80601f016020809104026020016040519081016040528092919081815260200182805461052b9061340e565b80156105785780601f1061054d57610100808354040283529160200191610578565b820191906000526020600020905b81548152906001019060200180831161055b57829003601f168201915b505050505081526020016001820180546105919061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546105bd9061340e565b801561060a5780601f106105df5761010080835404028352916020019161060a565b820191906000526020600020905b8154815290600101906020018083116105ed57829003601f168201915b505050505081526020016002820180546106239061340e565b80601f016020809104026020016040519081016040528092919081815260200182805461064f9061340e565b801561069c5780601f106106715761010080835404028352916020019161069c565b820191906000526020600020905b81548152906001019060200180831161067f57829003601f168201915b505050505081526020016003820180546106b59061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546106e19061340e565b801561072e5780601f106107035761010080835404028352916020019161072e565b820191906000526020600020905b81548152906001019060200180831161071157829003601f168201915b505050505081526020016004820180546107479061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546107739061340e565b80156107c05780601f10610795576101008083540402835291602001916107c0565b820191906000526020600020905b8154815290600101906020018083116107a357829003601f168201915b505050505081525050815260200190600101906104cc565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610bb757838290600052602060002090600602016040518060400160405290816000820180546108389061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546108649061340e565b80156108b15780601f10610886576101008083540402835291602001916108b1565b820191906000526020600020905b81548152906001019060200180831161089457829003601f168201915b50505050508152602001600182016040518060a00160405290816000820180546108da9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546109069061340e565b80156109535780601f1061092857610100808354040283529160200191610953565b820191906000526020600020905b81548152906001019060200180831161093657829003601f168201915b5050505050815260200160018201805461096c9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546109989061340e565b80156109e55780601f106109ba576101008083540402835291602001916109e5565b820191906000526020600020905b8154815290600101906020018083116109c857829003601f168201915b505050505081526020016002820180546109fe9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2a9061340e565b8015610a775780601f10610a4c57610100808354040283529160200191610a77565b820191906000526020600020905b815481529060010190602001808311610a5a57829003601f168201915b50505050508152602001600382018054610a909061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610abc9061340e565b8015610b095780601f10610ade57610100808354040283529160200191610b09565b820191906000526020600020905b815481529060010190602001808311610aec57829003601f168201915b50505050508152602001600482018054610b229061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4e9061340e565b8015610b9b5780601f10610b7057610100808354040283529160200191610b9b565b820191906000526020600020905b815481529060010190602001808311610b7e57829003601f168201915b5050505050815250508152505081526020019060010190610805565b50505050815260200160058201805480602002602001604051908101604052809291908181526020016000905b82821015610f965783829060005260206000209060060201604051806040016040529081600082018054610c179061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c439061340e565b8015610c905780601f10610c6557610100808354040283529160200191610c90565b820191906000526020600020905b815481529060010190602001808311610c7357829003601f168201915b50505050508152602001600182016040518060a0016040529081600082018054610cb99061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce59061340e565b8015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b50505050508152602001600182018054610d4b9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d779061340e565b8015610dc45780601f10610d9957610100808354040283529160200191610dc4565b820191906000526020600020905b815481529060010190602001808311610da757829003601f168201915b50505050508152602001600282018054610ddd9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e099061340e565b8015610e565780601f10610e2b57610100808354040283529160200191610e56565b820191906000526020600020905b815481529060010190602001808311610e3957829003601f168201915b50505050508152602001600382018054610e6f9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9b9061340e565b8015610ee85780601f10610ebd57610100808354040283529160200191610ee8565b820191906000526020600020905b815481529060010190602001808311610ecb57829003601f168201915b50505050508152602001600482018054610f019061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2d9061340e565b8015610f7a5780601f10610f4f57610100808354040283529160200191610f7a565b820191906000526020600020905b815481529060010190602001808311610f5d57829003601f168201915b5050505050815250508152505081526020019060010190610be4565b50505050815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156113755783829060005260206000209060060201604051806040016040529081600082018054610ff69061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546110229061340e565b801561106f5780601f106110445761010080835404028352916020019161106f565b820191906000526020600020905b81548152906001019060200180831161105257829003601f168201915b50505050508152602001600182016040518060a00160405290816000820180546110989061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546110c49061340e565b80156111115780601f106110e657610100808354040283529160200191611111565b820191906000526020600020905b8154815290600101906020018083116110f457829003601f168201915b5050505050815260200160018201805461112a9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546111569061340e565b80156111a35780601f10611178576101008083540402835291602001916111a3565b820191906000526020600020905b81548152906001019060200180831161118657829003601f168201915b505050505081526020016002820180546111bc9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546111e89061340e565b80156112355780601f1061120a57610100808354040283529160200191611235565b820191906000526020600020905b81548152906001019060200180831161121857829003601f168201915b5050505050815260200160038201805461124e9061340e565b80601f016020809104026020016040519081016040528092919081815260200182805461127a9061340e565b80156112c75780601f1061129c576101008083540402835291602001916112c7565b820191906000526020600020905b8154815290600101906020018083116112aa57829003601f168201915b505050505081526020016004820180546112e09061340e565b80601f016020809104026020016040519081016040528092919081815260200182805461130c9061340e565b80156113595780601f1061132e57610100808354040283529160200191611359565b820191906000526020600020905b81548152906001019060200180831161133c57829003601f168201915b5050505050815250508152505081526020019060010190610fc3565b50505050815260200160078201805480602002602001604051908101604052809291908181526020016000905b8282101561175457838290600052602060002090600602016040518060400160405290816000820180546113d59061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546114019061340e565b801561144e5780601f106114235761010080835404028352916020019161144e565b820191906000526020600020905b81548152906001019060200180831161143157829003601f168201915b50505050508152602001600182016040518060a00160405290816000820180546114779061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546114a39061340e565b80156114f05780601f106114c5576101008083540402835291602001916114f0565b820191906000526020600020905b8154815290600101906020018083116114d357829003601f168201915b505050505081526020016001820180546115099061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546115359061340e565b80156115825780601f1061155757610100808354040283529160200191611582565b820191906000526020600020905b81548152906001019060200180831161156557829003601f168201915b5050505050815260200160028201805461159b9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546115c79061340e565b80156116145780601f106115e957610100808354040283529160200191611614565b820191906000526020600020905b8154815290600101906020018083116115f757829003601f168201915b5050505050815260200160038201805461162d9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546116599061340e565b80156116a65780601f1061167b576101008083540402835291602001916116a6565b820191906000526020600020905b81548152906001019060200180831161168957829003601f168201915b505050505081526020016004820180546116bf9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546116eb9061340e565b80156117385780601f1061170d57610100808354040283529160200191611738565b820191906000526020600020905b81548152906001019060200180831161171b57829003601f168201915b50505050508152505081525050815260200190600101906113a2565b50505050815260200160088201805480602002602001604051908101604052809291908181526020016000905b82821015611b3357838290600052602060002090600602016040518060400160405290816000820180546117b49061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546117e09061340e565b801561182d5780601f106118025761010080835404028352916020019161182d565b820191906000526020600020905b81548152906001019060200180831161181057829003601f168201915b50505050508152602001600182016040518060a00160405290816000820180546118569061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546118829061340e565b80156118cf5780601f106118a4576101008083540402835291602001916118cf565b820191906000526020600020905b8154815290600101906020018083116118b257829003601f168201915b505050505081526020016001820180546118e89061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546119149061340e565b80156119615780601f1061193657610100808354040283529160200191611961565b820191906000526020600020905b81548152906001019060200180831161194457829003601f168201915b5050505050815260200160028201805461197a9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546119a69061340e565b80156119f35780601f106119c8576101008083540402835291602001916119f3565b820191906000526020600020905b8154815290600101906020018083116119d657829003601f168201915b50505050508152602001600382018054611a0c9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611a389061340e565b8015611a855780601f10611a5a57610100808354040283529160200191611a85565b820191906000526020600020905b815481529060010190602001808311611a6857829003601f168201915b50505050508152602001600482018054611a9e9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611aca9061340e565b8015611b175780601f10611aec57610100808354040283529160200191611b17565b820191906000526020600020905b815481529060010190602001808311611afa57829003601f168201915b5050505050815250508152505081526020019060010190611781565b50505050815260200160098201805480602002602001604051908101604052809291908181526020016000905b82821015611efa57838290600052602060002090600502016040518060a0016040529081600082018054611b939061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbf9061340e565b8015611c0c5780601f10611be157610100808354040283529160200191611c0c565b820191906000526020600020905b815481529060010190602001808311611bef57829003601f168201915b50505050508152602001600182018054611c259061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c519061340e565b8015611c9e5780601f10611c7357610100808354040283529160200191611c9e565b820191906000526020600020905b815481529060010190602001808311611c8157829003601f168201915b50505050508152602001600282018054611cb79061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611ce39061340e565b8015611d305780601f10611d0557610100808354040283529160200191611d30565b820191906000526020600020905b815481529060010190602001808311611d1357829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015611e0a578382906000526020600020018054611d7d9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611da99061340e565b8015611df65780601f10611dcb57610100808354040283529160200191611df6565b820191906000526020600020905b815481529060010190602001808311611dd957829003601f168201915b505050505081526020019060010190611d5e565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015611ee3578382906000526020600020018054611e569061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611e829061340e565b8015611ecf5780601f10611ea457610100808354040283529160200191611ecf565b820191906000526020600020905b815481529060010190602001808311611eb257829003601f168201915b505050505081526020019060010190611e37565b505050508152505081526020019060010190611b60565b505050508152602001600a8201805480602002602001604051908101604052809291908181526020016000905b82821015611fd3578382906000526020600020018054611f469061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611f729061340e565b8015611fbf5780601f10611f9457610100808354040283529160200191611fbf565b820191906000526020600020905b815481529060010190602001808311611fa257829003601f168201915b505050505081526020019060010190611f27565b50505091525050815260408051608081018252600b8401546001600160a01b03168152600c840154602080830191909152600d85015492820192909252600e9093015460ff16151560608401520152949350505050565b6120326128dd565b61203b82612984565b61204582826129ea565b5050565b6000612053612aac565b506000805160206144b383398151915290565b6120736020820182613448565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600192506120b8915083906133e2565b908152604051908190036020019020600c01546000036120ed578060405163186a887560e11b815260040161023091906133b4565b6120fa6020830183613448565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040516001925061213f915083906133e2565b908152604051908190036020019020600e015460ff16156121755780604051630341716360e51b815260040161023091906133b4565b6121826020840184613448565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600192506121c7915083906133e2565b908152604051908190036020019020600b0154336001600160a01b039091161461223a57336001826040516121fc91906133e2565b908152604051908190036020018120600b015463a964fc1960e01b82526001600160a01b039283166004830152919091166024820152604401610230565b60405163d84a06e160e01b81527300000000000000000000000000000000000022229063d84a06e19061227190879060040161384a565b60006040518083038186803b15801561228957600080fd5b505af415801561229d573d6000803e3d6000fd5b505050508360018580602001906122b49190613448565b6040516122c29291906133fe565b9081526040519081900360200190206122db8282614343565b5042905060016122ee6020870187613448565b6040516122fc9291906133fe565b9081526020016040518091039020600b01600201819055507f7e7500a71b0209575a3b4858a2a662e94b0cad314ecb249f3526e9b2f86a01468480602001906123459190613448565b60405161235392919061447d565b60405180910390a150505050565b61236e6020820182613448565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600192506123b3915083906133e2565b908152604051908190036020019020600c0154156123e65780604051630eb7cd9560e01b815260040161023091906133b4565b730000000000000000000000000000000000002222635fbac08e61240d6020850185613448565b6040518363ffffffff1660e01b815260040161242a92919061447d565b60006040518083038186803b15801561244257600080fd5b505af4158015612456573d6000803e3d6000fd5b505060405163d84a06e160e01b8152730000000000000000000000000000000000002222925063d84a06e1915061249190859060040161384a565b60006040518083038186803b1580156124a957600080fd5b505af41580156124bd573d6000803e3d6000fd5b505050508160018380602001906124d49190613448565b6040516124e29291906133fe565b9081526040519081900360200190206124fb8282614343565b50339050600161250e6020850185613448565b60405161251c9291906133fe565b9081526020016040518091039020600b0160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055504260018380602001906125679190613448565b6040516125759291906133fe565b9081526020016040518091039020600b01600101819055504260018380602001906125a09190613448565b6040516125ae9291906133fe565b9081526020016040518091039020600b01600201819055507f5fccafd09eeeb6a3dc1c80357ee982c00d7fb00a991274a9b96fe4fd7cb605528280602001906125f79190613448565b60405161260592919061447d565b60405180910390a15050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff168061265a575080546001600160401b03808416911610155b156126785760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556126a283612af5565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b81818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040516001925061273a915083906133e2565b908152604051908190036020019020600c015460000361276f578060405163186a887560e11b815260040161023091906133b4565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600192506127b6915083906133e2565b908152604051908190036020019020600e015460ff16156127ec5780604051630341716360e51b815260040161023091906133b4565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060405160019250612833915083906133e2565b908152604051908190036020019020600b0154336001600160a01b039091161461286857336001826040516121fc91906133e2565b600180868660405161287b9291906133fe565b908152604051908190036020018120600e01805492151560ff19909316929092179091557f4360f12f602ccecefb32480e5314d0d3f57d38db8f52c76d8fdf4c39596c1c28906128ce908790879061447d565b60405180910390a15050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061296457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166129586000805160206144b3833981519152546001600160a01b031690565b6001600160a01b031614155b156129825760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b1580156129cf57600080fd5b505afa1580156129e3573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612a44575060408051601f3d908101601f19168201909252612a4191810190614499565b60015b612a6c57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610230565b6000805160206144b38339815191528114612a9d57604051632a87526960e21b815260048101829052602401610230565b612aa78383612b1f565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146129825760405163703e46dd60e11b815260040160405180910390fd5b612afd612b75565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b612b2882612bbe565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612b6d57612aa78282612c23565b612045612c99565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661298257604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003612bf457604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610230565b6000805160206144b383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612c4091906133e2565b600060405180830381855af49150503d8060008114612c7b576040519150601f19603f3d011682016040523d82523d6000602084013e612c80565b606091505b5091509150612c90858383612cb8565b95945050505050565b34156129825760405163b398979f60e01b815260040160405180910390fd5b606082612ccd57612cc882612d17565b612d10565b8151158015612ce457506001600160a01b0384163b155b15612d0d57604051639996b31560e01b81526001600160a01b0385166004820152602401610230565b50805b9392505050565b805115612d275780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6040518060400160405280612dab60405180610160016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b81526040805160808101825260008082526020828101829052928201819052606082015291015290565b60008060208385031215612de857600080fd5b82356001600160401b0380821115612dff57600080fd5b818501915085601f830112612e1357600080fd5b813581811115612e2257600080fd5b866020828501011115612e3457600080fd5b60209290920196919550909350505050565b60005b83811015612e61578181015183820152602001612e49565b50506000910152565b60008151808452612e82816020860160208601612e46565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015612ee157601f19868403018952612ecf838351612e6a565b98840198925090830190600101612eb3565b5090979650505050505050565b6000815160a08452612f0360a0850182612e6a565b905060208301518482036020860152612f1c8282612e6a565b91505060408301518482036040860152612f368282612e6a565b91505060608301518482036060860152612f508282612e6a565b91505060808301518482036080860152612c908282612e6a565b600082825180855260208086019550808260051b84010181860160005b84811015612ee157601f19868403018952612fa3838351612eee565b98840198925090830190600101612f87565b600082825180855260208086019550808260051b84010181860160005b84811015612ee157601f19868403018952815160408151818652612ff882870182612e6a565b915050858201519150848103868601526130128183612eee565b9a86019a9450505090830190600101612fd2565b600082825180855260208086019550808260051b84010181860160005b84811015612ee157601f19868403018952815160a0815181865261306982870182612e6a565b91505085820151858203878701526130818282612e6a565b9150506040808301518683038288015261309b8382612e6a565b92505050606080830151868303828801526130b68382612e96565b92505050608080830151925085820381870152506130d48183612e96565b9a86019a9450505090830190600101613043565b602081526000825160a0602084015280516101608060c0860152613110610220860183612e96565b9150602083015160bf19808785030160e088015261312e8483612e6a565b93506040850151915061010081888603018189015261314d8584612e96565b9450606086015192506101208289870301818a015261316c8685612f6a565b955060808701519350610140838a880301818b015261318b8786612fb5565b965060a08801519450838a880301868b01526131a78786612fb5565b965060c08801519550838a8803016101808b01526131c58787612fb5565b965060e08801519550838a8803016101a08b01526131e38787612fb5565b9650828801519550838a8803016101c08b01526132008787612fb5565b9650818801519550838a8803016101e08b015261321d8787613026565b965080880151975050505080878503016102008801525050506132408183612e96565b915050602084015161327e604085018280516001600160a01b0316825260208082015190830152604080820151908301526060908101511515910152565b509392505050565b80356001600160a01b038116811461329d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156132cb57600080fd5b6132d483613286565b915060208301356001600160401b03808211156132f057600080fd5b818501915085601f83011261330457600080fd5b813581811115613316576133166132a2565b604051601f8201601f19908116603f0116810190838211818310171561333e5761333e6132a2565b8160405282815288602084870101111561335757600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561338b57600080fd5b81356001600160401b038111156133a157600080fd5b82016101608185031215612d1057600080fd5b602081526000612d106020830184612e6a565b6000602082840312156133d957600080fd5b612d1082613286565b600082516133f4818460208701612e46565b9190910192915050565b8183823760009101908152919050565b600181811c9082168061342257607f821691505b60208210810361344257634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e1984360301811261345f57600080fd5b8301803591506001600160401b0382111561347957600080fd5b60200191503681900382131561348e57600080fd5b9250929050565b6000808335601e198436030181126134ac57600080fd5b83016020810192503590506001600160401b038111156134cb57600080fd5b8060051b360382131561348e57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261351d57600080fd5b83016020810192503590506001600160401b0381111561353c57600080fd5b80360382131561348e57600080fd5b818352600060208085019450848460051b86018460005b87811015612ee15783830389526135798288613506565b6135848582846134dd565b9a87019a9450505090840190600101613562565b60006135a48283613506565b60a085526135b660a0860182846134dd565b9150506135c66020840184613506565b85830360208701526135d98382846134dd565b925050506135ea6040840184613506565b85830360408701526135fd8382846134dd565b9250505061360e6060840184613506565b85830360608701526136218382846134dd565b925050506136326080840184613506565b85830360808701526136458382846134dd565b9695505050505050565b60008235609e1983360301811261366557600080fd5b90910192915050565b818352600060208085019450848460051b86018460005b87811015612ee15783830389526136a5836136a0848a61364f565b613598565b98850198925090840190600101613685565b818352600060208085019450848460051b8601846000805b88811015613744578484038a528235603e198936030181126136ef578283fd5b880160406136fd8280613506565b82885261370d83890182846134dd565b9250505061371d8883018361364f565b9150858103888701526137308183613598565b9b88019b95505050918501916001016136cf565b509198975050505050505050565b60008383855260208086019550808560051b8301018460005b87811015612ee157848303601f19018952613786828861364f565b60a06137928283613506565b8287526137a283880182846134dd565b925050506137b286830183613506565b868303888801526137c48382846134dd565b9250505060406137d681840184613506565b878403838901526137e88482846134dd565b935050505060606137fb81840184613495565b8784038389015261380d84828461354b565b9350505050608061382081840184613495565b93508683038288015261383483858361354b565b9c88019c9650505092850192505060010161376b565b60208152600061385a8384613495565b6101608060208601526138726101808601838561354b565b92506138816020870187613506565b9250601f198087860301604088015261389b8585846134dd565b94506138aa6040890189613495565b94509150808786030160608801526138c385858461354b565b94506138d26060890189613495565b94509150808786030160808801526138eb85858461366e565b94506138fa6080890189613495565b94509150808786030160a08801526139138585846136b7565b945061392260a0890189613495565b94509150808786030160c088015261393b8585846136b7565b945061394a60c0890189613495565b94509150808786030160e08801526139638585846136b7565b945061397260e0890189613495565b9450915061010081888703018189015261398d8686856136b7565b955061399b818a018a613495565b95509250506101208188870301818901526139b78686856136b7565b95506139c5818a018a613495565b95509250506101408188870301818901526139e1868685613752565b95506139ef818a018a613495565b955092505080878603018388015250613a0984848361354b565b979650505050505050565b6000808335601e19843603018112613a2b57600080fd5b8301803591506001600160401b03821115613a4557600080fd5b6020019150600581901b360382131561348e57600080fd5b6005808202908104821461329d57634e487b7160e01b600052601160045260246000fd5b6006808202908104821461329d57634e487b7160e01b600052601160045260246000fd5b5b818110156120455760008155600101613aa6565b600019600383901b1c191660019190911b1790565b613ad9815461340e565b801561204557601f811160018114613af357505060009055565b600083815260208120613b11601f850160051c820160018301613aa5565b508381526020812081855555505050565b8054600082558015612045578160005260206000208181015b80821015613b5757613b4c82613acf565b600182019150613b3b565b50505050565b600160401b821115613b7157613b716132a2565b805482825580831015612aa7576000828152602090208381019082015b808210156129e357613b9f82613acf565b600182019150613b8e565b601f821115612aa757806000526020600020601f840160051c81016020851015613bd15750805b6129e3601f850160051c830182613aa5565b6001600160401b03831115613bfa57613bfa6132a2565b613c0e83613c08835461340e565b83613baa565b6000601f841160018114613c3c5760008515613c2a5750838201355b613c348682613aba565b8455506129e3565b600083815260209020601f19861690835b82811015613c6d5786850135825560209485019460019092019101613c4d565b5086821015613c8a5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b613ca68382613b5d565b8160008281526020808220825b87811015613d8857613cc58588613448565b6001600160401b03811115613cdc57613cdc6132a2565b613cf081613cea865461340e565b86613baa565b85601f821160018114613d1c57878315613d0a5750838201355b613d148482613aba565b875550613d74565b600086815260209020601f19841690895b82811015613d4c57868501358255938901936001909101908901613d2d565b5084821015613d695760001960f88660031b161c19848701351681555b5050600183811b0186555b505050948301945060019182019101613cb3565b5050505050505050565b60008235609e198336030181126133f457600080fd5b613db181613acf565b613dbd60018201613acf565b613dc960028201613acf565b613dd560038201613acf565b612d4060048201613acf565b613deb8283613448565b6001600160401b03811115613e0257613e026132a2565b613e1681613e10855461340e565b85613baa565b6000601f821160018114613e445760008315613e325750838201355b613e3c8482613aba565b865550613e9e565b600085815260209020601f19841690835b82811015613e755786850135825560209485019460019092019101613e55565b5084821015613e925760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050613eaf6020830183613448565b613ebd818360018601613be3565b5050613ecc6040830183613448565b613eda818360028601613be3565b5050613ee96060830183613448565b613ef7818360038601613be3565b5050613f066080830183613448565b613b57818360048601613be3565b600160401b831115613f2857613f286132a2565b805483825580841015613f7257613f3e81613a5d565b613f4785613a5d565b60008481526020902091820191015b81811015613f6f57613f6781613da8565b600501613f56565b50505b5060008181526020812083915b85811015613fb057613f9a613f948487613d92565b83613de1565b6020929092019160059190910190600101613f7f565b505050505050565b60008235603e198336030181126133f457600080fd5b613fd88283613448565b6001600160401b03811115613fef57613fef6132a2565b613ffd81613e10855461340e565b6000601f82116001811461402b57600083156140195750838201355b6140238482613aba565b865550614085565b600085815260209020601f19841690835b8281101561405c578685013582556020948501946001909201910161403c565b50848210156140795760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506120456140996020840184613d92565b60018301613de1565b600160401b8311156140b6576140b66132a2565b80548382558084101561410c576140cc81613a81565b6140d585613a81565b60008481526020902091820191015b81811015614109576140f581613acf565b61410160018201613da8565b6006016140e4565b50505b5060008181526020812083915b85811015613fb05761413461412e8487613fb8565b83613fce565b6020929092019160069190910190600101614119565b6141548283613448565b6001600160401b0381111561416b5761416b6132a2565b61417981613e10855461340e565b6000601f8211600181146141a757600083156141955750838201355b61419f8482613aba565b865550614201565b600085815260209020601f19841690835b828110156141d857868501358255602094850194600190920191016141b8565b50848210156141f55760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506142126020830183613448565b614220818360018601613be3565b505061422f6040830183613448565b61423d818360028601613be3565b505061424c6060830183613a14565b61425a818360038601613c9c565b50506142696080830183613a14565b613b57818360048601613c9c565b600160401b83111561428b5761428b6132a2565b805483825580841015614305576142a181613a5d565b6142aa85613a5d565b60008481526020902091820191015b81811015614302576142ca81613acf565b6142d660018201613acf565b6142e260028201613acf565b6142ee60038201613b22565b6142fa60048201613b22565b6005016142b9565b50505b5060008181526020812083915b85811015613fb05761432d6143278487613d92565b8361414a565b6020929092019160059190910190600101614312565b61434d8283613a14565b614358818385613c9c565b50506143676020830183613448565b614375818360018601613be3565b50506143846040830183613a14565b614392818360028601613c9c565b50506143a16060830183613a14565b6143af818360038601613f14565b50506143be6080830183613a14565b6143cc8183600486016140a2565b50506143db60a0830183613a14565b6143e98183600586016140a2565b50506143f860c0830183613a14565b6144068183600686016140a2565b505061441560e0830183613a14565b6144238183600786016140a2565b5050614433610100830183613a14565b6144418183600886016140a2565b5050614451610120830183613a14565b61445f818360098601614277565b505061446f610140830183613a14565b613b578183600a8601613c9c565b6020815260006144916020830184866134dd565b949350505050565b6000602082840312156144ab57600080fd5b505191905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220dd39ad191655a869e373cd042045365949d9feaa2a05af2292f589e8641c6be064736f6c63430008150033" + "code": "0x60806040526004361061007b5760003560e01c8063869957a51161004e578063869957a51461010e578063ad3cb1cc1461012e578063c4d66de81461016c578063f4653a1d1461018c57600080fd5b80633633852c146100805780634f1ef286146100b657806352d1902d146100cb57806356f7317d146100ee575b600080fd5b34801561008c57600080fd5b506100a061009b366004612dd5565b6101ac565b6040516100ad91906130e8565b60405180910390f35b6100c96100c43660046132b8565b61202a565b005b3480156100d757600080fd5b506100e0612049565b6040519081526020016100ad565b3480156100fa57600080fd5b506100c9610109366004613379565b612066565b34801561011a57600080fd5b506100c9610129366004613379565b612361565b34801561013a57600080fd5b5061015f604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100ad91906133b4565b34801561017857600080fd5b506100c96101873660046133c7565b612611565b34801561019857600080fd5b506100c96101a7366004612dd5565b6126f3565b6101b4612d43565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600192506101fb915083906133e2565b908152604051908190036020019020600c0154600003610239578060405163186a887560e11b815260040161023091906133b4565b60405180910390fd5b6001848460405161024b9291906133fe565b90815260408051918290036020908101832080546101c09281028501830184526101a0850181815291938593908401928592849284919060009088015b828210156103345783829060005260206000200180546102a79061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546102d39061340e565b80156103205780601f106102f557610100808354040283529160200191610320565b820191906000526020600020905b81548152906001019060200180831161030357829003601f168201915b505050505081526020019060010190610288565b50505050815260200160018201805461034c9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546103789061340e565b80156103c55780601f1061039a576101008083540402835291602001916103c5565b820191906000526020600020905b8154815290600101906020018083116103a857829003601f168201915b5050505050815260200160028201805480602002602001604051908101604052809291908181526020016000905b8282101561049f5783829060005260206000200180546104129061340e565b80601f016020809104026020016040519081016040528092919081815260200182805461043e9061340e565b801561048b5780601f106104605761010080835404028352916020019161048b565b820191906000526020600020905b81548152906001019060200180831161046e57829003601f168201915b5050505050815260200190600101906103f3565b50505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b828210156107d857838290600052602060002090600502016040518060a00160405290816000820180546104ff9061340e565b80601f016020809104026020016040519081016040528092919081815260200182805461052b9061340e565b80156105785780601f1061054d57610100808354040283529160200191610578565b820191906000526020600020905b81548152906001019060200180831161055b57829003601f168201915b505050505081526020016001820180546105919061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546105bd9061340e565b801561060a5780601f106105df5761010080835404028352916020019161060a565b820191906000526020600020905b8154815290600101906020018083116105ed57829003601f168201915b505050505081526020016002820180546106239061340e565b80601f016020809104026020016040519081016040528092919081815260200182805461064f9061340e565b801561069c5780601f106106715761010080835404028352916020019161069c565b820191906000526020600020905b81548152906001019060200180831161067f57829003601f168201915b505050505081526020016003820180546106b59061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546106e19061340e565b801561072e5780601f106107035761010080835404028352916020019161072e565b820191906000526020600020905b81548152906001019060200180831161071157829003601f168201915b505050505081526020016004820180546107479061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546107739061340e565b80156107c05780601f10610795576101008083540402835291602001916107c0565b820191906000526020600020905b8154815290600101906020018083116107a357829003601f168201915b505050505081525050815260200190600101906104cc565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015610bb757838290600052602060002090600602016040518060400160405290816000820180546108389061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546108649061340e565b80156108b15780601f10610886576101008083540402835291602001916108b1565b820191906000526020600020905b81548152906001019060200180831161089457829003601f168201915b50505050508152602001600182016040518060a00160405290816000820180546108da9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546109069061340e565b80156109535780601f1061092857610100808354040283529160200191610953565b820191906000526020600020905b81548152906001019060200180831161093657829003601f168201915b5050505050815260200160018201805461096c9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546109989061340e565b80156109e55780601f106109ba576101008083540402835291602001916109e5565b820191906000526020600020905b8154815290600101906020018083116109c857829003601f168201915b505050505081526020016002820180546109fe9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a2a9061340e565b8015610a775780601f10610a4c57610100808354040283529160200191610a77565b820191906000526020600020905b815481529060010190602001808311610a5a57829003601f168201915b50505050508152602001600382018054610a909061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610abc9061340e565b8015610b095780601f10610ade57610100808354040283529160200191610b09565b820191906000526020600020905b815481529060010190602001808311610aec57829003601f168201915b50505050508152602001600482018054610b229061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4e9061340e565b8015610b9b5780601f10610b7057610100808354040283529160200191610b9b565b820191906000526020600020905b815481529060010190602001808311610b7e57829003601f168201915b5050505050815250508152505081526020019060010190610805565b50505050815260200160058201805480602002602001604051908101604052809291908181526020016000905b82821015610f965783829060005260206000209060060201604051806040016040529081600082018054610c179061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610c439061340e565b8015610c905780601f10610c6557610100808354040283529160200191610c90565b820191906000526020600020905b815481529060010190602001808311610c7357829003601f168201915b50505050508152602001600182016040518060a0016040529081600082018054610cb99061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610ce59061340e565b8015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b50505050508152602001600182018054610d4b9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610d779061340e565b8015610dc45780601f10610d9957610100808354040283529160200191610dc4565b820191906000526020600020905b815481529060010190602001808311610da757829003601f168201915b50505050508152602001600282018054610ddd9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e099061340e565b8015610e565780601f10610e2b57610100808354040283529160200191610e56565b820191906000526020600020905b815481529060010190602001808311610e3957829003601f168201915b50505050508152602001600382018054610e6f9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9b9061340e565b8015610ee85780601f10610ebd57610100808354040283529160200191610ee8565b820191906000526020600020905b815481529060010190602001808311610ecb57829003601f168201915b50505050508152602001600482018054610f019061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2d9061340e565b8015610f7a5780601f10610f4f57610100808354040283529160200191610f7a565b820191906000526020600020905b815481529060010190602001808311610f5d57829003601f168201915b5050505050815250508152505081526020019060010190610be4565b50505050815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156113755783829060005260206000209060060201604051806040016040529081600082018054610ff69061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546110229061340e565b801561106f5780601f106110445761010080835404028352916020019161106f565b820191906000526020600020905b81548152906001019060200180831161105257829003601f168201915b50505050508152602001600182016040518060a00160405290816000820180546110989061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546110c49061340e565b80156111115780601f106110e657610100808354040283529160200191611111565b820191906000526020600020905b8154815290600101906020018083116110f457829003601f168201915b5050505050815260200160018201805461112a9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546111569061340e565b80156111a35780601f10611178576101008083540402835291602001916111a3565b820191906000526020600020905b81548152906001019060200180831161118657829003601f168201915b505050505081526020016002820180546111bc9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546111e89061340e565b80156112355780601f1061120a57610100808354040283529160200191611235565b820191906000526020600020905b81548152906001019060200180831161121857829003601f168201915b5050505050815260200160038201805461124e9061340e565b80601f016020809104026020016040519081016040528092919081815260200182805461127a9061340e565b80156112c75780601f1061129c576101008083540402835291602001916112c7565b820191906000526020600020905b8154815290600101906020018083116112aa57829003601f168201915b505050505081526020016004820180546112e09061340e565b80601f016020809104026020016040519081016040528092919081815260200182805461130c9061340e565b80156113595780601f1061132e57610100808354040283529160200191611359565b820191906000526020600020905b81548152906001019060200180831161133c57829003601f168201915b5050505050815250508152505081526020019060010190610fc3565b50505050815260200160078201805480602002602001604051908101604052809291908181526020016000905b8282101561175457838290600052602060002090600602016040518060400160405290816000820180546113d59061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546114019061340e565b801561144e5780601f106114235761010080835404028352916020019161144e565b820191906000526020600020905b81548152906001019060200180831161143157829003601f168201915b50505050508152602001600182016040518060a00160405290816000820180546114779061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546114a39061340e565b80156114f05780601f106114c5576101008083540402835291602001916114f0565b820191906000526020600020905b8154815290600101906020018083116114d357829003601f168201915b505050505081526020016001820180546115099061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546115359061340e565b80156115825780601f1061155757610100808354040283529160200191611582565b820191906000526020600020905b81548152906001019060200180831161156557829003601f168201915b5050505050815260200160028201805461159b9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546115c79061340e565b80156116145780601f106115e957610100808354040283529160200191611614565b820191906000526020600020905b8154815290600101906020018083116115f757829003601f168201915b5050505050815260200160038201805461162d9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546116599061340e565b80156116a65780601f1061167b576101008083540402835291602001916116a6565b820191906000526020600020905b81548152906001019060200180831161168957829003601f168201915b505050505081526020016004820180546116bf9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546116eb9061340e565b80156117385780601f1061170d57610100808354040283529160200191611738565b820191906000526020600020905b81548152906001019060200180831161171b57829003601f168201915b50505050508152505081525050815260200190600101906113a2565b50505050815260200160088201805480602002602001604051908101604052809291908181526020016000905b82821015611b3357838290600052602060002090600602016040518060400160405290816000820180546117b49061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546117e09061340e565b801561182d5780601f106118025761010080835404028352916020019161182d565b820191906000526020600020905b81548152906001019060200180831161181057829003601f168201915b50505050508152602001600182016040518060a00160405290816000820180546118569061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546118829061340e565b80156118cf5780601f106118a4576101008083540402835291602001916118cf565b820191906000526020600020905b8154815290600101906020018083116118b257829003601f168201915b505050505081526020016001820180546118e89061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546119149061340e565b80156119615780601f1061193657610100808354040283529160200191611961565b820191906000526020600020905b81548152906001019060200180831161194457829003601f168201915b5050505050815260200160028201805461197a9061340e565b80601f01602080910402602001604051908101604052809291908181526020018280546119a69061340e565b80156119f35780601f106119c8576101008083540402835291602001916119f3565b820191906000526020600020905b8154815290600101906020018083116119d657829003601f168201915b50505050508152602001600382018054611a0c9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611a389061340e565b8015611a855780601f10611a5a57610100808354040283529160200191611a85565b820191906000526020600020905b815481529060010190602001808311611a6857829003601f168201915b50505050508152602001600482018054611a9e9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611aca9061340e565b8015611b175780601f10611aec57610100808354040283529160200191611b17565b820191906000526020600020905b815481529060010190602001808311611afa57829003601f168201915b5050505050815250508152505081526020019060010190611781565b50505050815260200160098201805480602002602001604051908101604052809291908181526020016000905b82821015611efa57838290600052602060002090600502016040518060a0016040529081600082018054611b939061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611bbf9061340e565b8015611c0c5780601f10611be157610100808354040283529160200191611c0c565b820191906000526020600020905b815481529060010190602001808311611bef57829003601f168201915b50505050508152602001600182018054611c259061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611c519061340e565b8015611c9e5780601f10611c7357610100808354040283529160200191611c9e565b820191906000526020600020905b815481529060010190602001808311611c8157829003601f168201915b50505050508152602001600282018054611cb79061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611ce39061340e565b8015611d305780601f10611d0557610100808354040283529160200191611d30565b820191906000526020600020905b815481529060010190602001808311611d1357829003601f168201915b5050505050815260200160038201805480602002602001604051908101604052809291908181526020016000905b82821015611e0a578382906000526020600020018054611d7d9061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611da99061340e565b8015611df65780601f10611dcb57610100808354040283529160200191611df6565b820191906000526020600020905b815481529060010190602001808311611dd957829003601f168201915b505050505081526020019060010190611d5e565b50505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b82821015611ee3578382906000526020600020018054611e569061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611e829061340e565b8015611ecf5780601f10611ea457610100808354040283529160200191611ecf565b820191906000526020600020905b815481529060010190602001808311611eb257829003601f168201915b505050505081526020019060010190611e37565b505050508152505081526020019060010190611b60565b505050508152602001600a8201805480602002602001604051908101604052809291908181526020016000905b82821015611fd3578382906000526020600020018054611f469061340e565b80601f0160208091040260200160405190810160405280929190818152602001828054611f729061340e565b8015611fbf5780601f10611f9457610100808354040283529160200191611fbf565b820191906000526020600020905b815481529060010190602001808311611fa257829003601f168201915b505050505081526020019060010190611f27565b50505091525050815260408051608081018252600b8401546001600160a01b03168152600c840154602080830191909152600d85015492820192909252600e9093015460ff16151560608401520152949350505050565b6120326128dd565b61203b82612984565b61204582826129ea565b5050565b6000612053612aac565b506000805160206144b383398151915290565b6120736020820182613448565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600192506120b8915083906133e2565b908152604051908190036020019020600c01546000036120ed578060405163186a887560e11b815260040161023091906133b4565b6120fa6020830183613448565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040516001925061213f915083906133e2565b908152604051908190036020019020600e015460ff16156121755780604051630341716360e51b815260040161023091906133b4565b6121826020840184613448565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600192506121c7915083906133e2565b908152604051908190036020019020600b0154336001600160a01b039091161461223a57336001826040516121fc91906133e2565b908152604051908190036020018120600b015463a964fc1960e01b82526001600160a01b039283166004830152919091166024820152604401610230565b60405163d84a06e160e01b81527300000000000000000000000000000000000022229063d84a06e19061227190879060040161384a565b60006040518083038186803b15801561228957600080fd5b505af415801561229d573d6000803e3d6000fd5b505050508360018580602001906122b49190613448565b6040516122c29291906133fe565b9081526040519081900360200190206122db8282614343565b5042905060016122ee6020870187613448565b6040516122fc9291906133fe565b9081526020016040518091039020600b01600201819055507f7e7500a71b0209575a3b4858a2a662e94b0cad314ecb249f3526e9b2f86a01468480602001906123459190613448565b60405161235392919061447d565b60405180910390a150505050565b61236e6020820182613448565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600192506123b3915083906133e2565b908152604051908190036020019020600c0154156123e65780604051630eb7cd9560e01b815260040161023091906133b4565b730000000000000000000000000000000000002222635fbac08e61240d6020850185613448565b6040518363ffffffff1660e01b815260040161242a92919061447d565b60006040518083038186803b15801561244257600080fd5b505af4158015612456573d6000803e3d6000fd5b505060405163d84a06e160e01b8152730000000000000000000000000000000000002222925063d84a06e1915061249190859060040161384a565b60006040518083038186803b1580156124a957600080fd5b505af41580156124bd573d6000803e3d6000fd5b505050508160018380602001906124d49190613448565b6040516124e29291906133fe565b9081526040519081900360200190206124fb8282614343565b50339050600161250e6020850185613448565b60405161251c9291906133fe565b9081526020016040518091039020600b0160000160006101000a8154816001600160a01b0302191690836001600160a01b031602179055504260018380602001906125679190613448565b6040516125759291906133fe565b9081526020016040518091039020600b01600101819055504260018380602001906125a09190613448565b6040516125ae9291906133fe565b9081526020016040518091039020600b01600201819055507f5fccafd09eeeb6a3dc1c80357ee982c00d7fb00a991274a9b96fe4fd7cb605528280602001906125f79190613448565b60405161260592919061447d565b60405180910390a15050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff168061265a575080546001600160401b03808416911610155b156126785760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b1781556126a283612af5565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050565b81818080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040516001925061273a915083906133e2565b908152604051908190036020019020600c015460000361276f578060405163186a887560e11b815260040161023091906133b4565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600192506127b6915083906133e2565b908152604051908190036020019020600e015460ff16156127ec5780604051630341716360e51b815260040161023091906133b4565b83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060405160019250612833915083906133e2565b908152604051908190036020019020600b0154336001600160a01b039091161461286857336001826040516121fc91906133e2565b600180868660405161287b9291906133fe565b908152604051908190036020018120600e01805492151560ff19909316929092179091557f4360f12f602ccecefb32480e5314d0d3f57d38db8f52c76d8fdf4c39596c1c28906128ce908790879061447d565b60405180910390a15050505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061296457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166129586000805160206144b3833981519152546001600160a01b031690565b6001600160a01b031614155b156129825760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b1580156129cf57600080fd5b505afa1580156129e3573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612a44575060408051601f3d908101601f19168201909252612a4191810190614499565b60015b612a6c57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610230565b6000805160206144b38339815191528114612a9d57604051632a87526960e21b815260048101829052602401610230565b612aa78383612b1f565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146129825760405163703e46dd60e11b815260040160405180910390fd5b612afd612b75565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b612b2882612bbe565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612b6d57612aa78282612c23565b612045612c99565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661298257604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003612bf457604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610230565b6000805160206144b383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612c4091906133e2565b600060405180830381855af49150503d8060008114612c7b576040519150601f19603f3d011682016040523d82523d6000602084013e612c80565b606091505b5091509150612c90858383612cb8565b95945050505050565b34156129825760405163b398979f60e01b815260040160405180910390fd5b606082612ccd57612cc882612d17565b612d10565b8151158015612ce457506001600160a01b0384163b155b15612d0d57604051639996b31560e01b81526001600160a01b0385166004820152602401610230565b50805b9392505050565b805115612d275780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6040518060400160405280612dab60405180610160016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b81526040805160808101825260008082526020828101829052928201819052606082015291015290565b60008060208385031215612de857600080fd5b82356001600160401b0380821115612dff57600080fd5b818501915085601f830112612e1357600080fd5b813581811115612e2257600080fd5b866020828501011115612e3457600080fd5b60209290920196919550909350505050565b60005b83811015612e61578181015183820152602001612e49565b50506000910152565b60008151808452612e82816020860160208601612e46565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015612ee157601f19868403018952612ecf838351612e6a565b98840198925090830190600101612eb3565b5090979650505050505050565b6000815160a08452612f0360a0850182612e6a565b905060208301518482036020860152612f1c8282612e6a565b91505060408301518482036040860152612f368282612e6a565b91505060608301518482036060860152612f508282612e6a565b91505060808301518482036080860152612c908282612e6a565b600082825180855260208086019550808260051b84010181860160005b84811015612ee157601f19868403018952612fa3838351612eee565b98840198925090830190600101612f87565b600082825180855260208086019550808260051b84010181860160005b84811015612ee157601f19868403018952815160408151818652612ff882870182612e6a565b915050858201519150848103868601526130128183612eee565b9a86019a9450505090830190600101612fd2565b600082825180855260208086019550808260051b84010181860160005b84811015612ee157601f19868403018952815160a0815181865261306982870182612e6a565b91505085820151858203878701526130818282612e6a565b9150506040808301518683038288015261309b8382612e6a565b92505050606080830151868303828801526130b68382612e96565b92505050608080830151925085820381870152506130d48183612e96565b9a86019a9450505090830190600101613043565b602081526000825160a0602084015280516101608060c0860152613110610220860183612e96565b9150602083015160bf19808785030160e088015261312e8483612e6a565b93506040850151915061010081888603018189015261314d8584612e96565b9450606086015192506101208289870301818a015261316c8685612f6a565b955060808701519350610140838a880301818b015261318b8786612fb5565b965060a08801519450838a880301868b01526131a78786612fb5565b965060c08801519550838a8803016101808b01526131c58787612fb5565b965060e08801519550838a8803016101a08b01526131e38787612fb5565b9650828801519550838a8803016101c08b01526132008787612fb5565b9650818801519550838a8803016101e08b015261321d8787613026565b965080880151975050505080878503016102008801525050506132408183612e96565b915050602084015161327e604085018280516001600160a01b0316825260208082015190830152604080820151908301526060908101511515910152565b509392505050565b80356001600160a01b038116811461329d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156132cb57600080fd5b6132d483613286565b915060208301356001600160401b03808211156132f057600080fd5b818501915085601f83011261330457600080fd5b813581811115613316576133166132a2565b604051601f8201601f19908116603f0116810190838211818310171561333e5761333e6132a2565b8160405282815288602084870101111561335757600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60006020828403121561338b57600080fd5b81356001600160401b038111156133a157600080fd5b82016101608185031215612d1057600080fd5b602081526000612d106020830184612e6a565b6000602082840312156133d957600080fd5b612d1082613286565b600082516133f4818460208701612e46565b9190910192915050565b8183823760009101908152919050565b600181811c9082168061342257607f821691505b60208210810361344257634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e1984360301811261345f57600080fd5b8301803591506001600160401b0382111561347957600080fd5b60200191503681900382131561348e57600080fd5b9250929050565b6000808335601e198436030181126134ac57600080fd5b83016020810192503590506001600160401b038111156134cb57600080fd5b8060051b360382131561348e57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000808335601e1984360301811261351d57600080fd5b83016020810192503590506001600160401b0381111561353c57600080fd5b80360382131561348e57600080fd5b818352600060208085019450848460051b86018460005b87811015612ee15783830389526135798288613506565b6135848582846134dd565b9a87019a9450505090840190600101613562565b60006135a48283613506565b60a085526135b660a0860182846134dd565b9150506135c66020840184613506565b85830360208701526135d98382846134dd565b925050506135ea6040840184613506565b85830360408701526135fd8382846134dd565b9250505061360e6060840184613506565b85830360608701526136218382846134dd565b925050506136326080840184613506565b85830360808701526136458382846134dd565b9695505050505050565b60008235609e1983360301811261366557600080fd5b90910192915050565b818352600060208085019450848460051b86018460005b87811015612ee15783830389526136a5836136a0848a61364f565b613598565b98850198925090840190600101613685565b818352600060208085019450848460051b8601846000805b88811015613744578484038a528235603e198936030181126136ef578283fd5b880160406136fd8280613506565b82885261370d83890182846134dd565b9250505061371d8883018361364f565b9150858103888701526137308183613598565b9b88019b95505050918501916001016136cf565b509198975050505050505050565b60008383855260208086019550808560051b8301018460005b87811015612ee157848303601f19018952613786828861364f565b60a06137928283613506565b8287526137a283880182846134dd565b925050506137b286830183613506565b868303888801526137c48382846134dd565b9250505060406137d681840184613506565b878403838901526137e88482846134dd565b935050505060606137fb81840184613495565b8784038389015261380d84828461354b565b9350505050608061382081840184613495565b93508683038288015261383483858361354b565b9c88019c9650505092850192505060010161376b565b60208152600061385a8384613495565b6101608060208601526138726101808601838561354b565b92506138816020870187613506565b9250601f198087860301604088015261389b8585846134dd565b94506138aa6040890189613495565b94509150808786030160608801526138c385858461354b565b94506138d26060890189613495565b94509150808786030160808801526138eb85858461366e565b94506138fa6080890189613495565b94509150808786030160a08801526139138585846136b7565b945061392260a0890189613495565b94509150808786030160c088015261393b8585846136b7565b945061394a60c0890189613495565b94509150808786030160e08801526139638585846136b7565b945061397260e0890189613495565b9450915061010081888703018189015261398d8686856136b7565b955061399b818a018a613495565b95509250506101208188870301818901526139b78686856136b7565b95506139c5818a018a613495565b95509250506101408188870301818901526139e1868685613752565b95506139ef818a018a613495565b955092505080878603018388015250613a0984848361354b565b979650505050505050565b6000808335601e19843603018112613a2b57600080fd5b8301803591506001600160401b03821115613a4557600080fd5b6020019150600581901b360382131561348e57600080fd5b6005808202908104821461329d57634e487b7160e01b600052601160045260246000fd5b6006808202908104821461329d57634e487b7160e01b600052601160045260246000fd5b5b818110156120455760008155600101613aa6565b600019600383901b1c191660019190911b1790565b613ad9815461340e565b801561204557601f811160018114613af357505060009055565b600083815260208120613b11601f850160051c820160018301613aa5565b508381526020812081855555505050565b8054600082558015612045578160005260206000208181015b80821015613b5757613b4c82613acf565b600182019150613b3b565b50505050565b600160401b821115613b7157613b716132a2565b805482825580831015612aa7576000828152602090208381019082015b808210156129e357613b9f82613acf565b600182019150613b8e565b601f821115612aa757806000526020600020601f840160051c81016020851015613bd15750805b6129e3601f850160051c830182613aa5565b6001600160401b03831115613bfa57613bfa6132a2565b613c0e83613c08835461340e565b83613baa565b6000601f841160018114613c3c5760008515613c2a5750838201355b613c348682613aba565b8455506129e3565b600083815260209020601f19861690835b82811015613c6d5786850135825560209485019460019092019101613c4d565b5086821015613c8a5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b613ca68382613b5d565b8160008281526020808220825b87811015613d8857613cc58588613448565b6001600160401b03811115613cdc57613cdc6132a2565b613cf081613cea865461340e565b86613baa565b85601f821160018114613d1c57878315613d0a5750838201355b613d148482613aba565b875550613d74565b600086815260209020601f19841690895b82811015613d4c57868501358255938901936001909101908901613d2d565b5084821015613d695760001960f88660031b161c19848701351681555b5050600183811b0186555b505050948301945060019182019101613cb3565b5050505050505050565b60008235609e198336030181126133f457600080fd5b613db181613acf565b613dbd60018201613acf565b613dc960028201613acf565b613dd560038201613acf565b612d4060048201613acf565b613deb8283613448565b6001600160401b03811115613e0257613e026132a2565b613e1681613e10855461340e565b85613baa565b6000601f821160018114613e445760008315613e325750838201355b613e3c8482613aba565b865550613e9e565b600085815260209020601f19841690835b82811015613e755786850135825560209485019460019092019101613e55565b5084821015613e925760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050613eaf6020830183613448565b613ebd818360018601613be3565b5050613ecc6040830183613448565b613eda818360028601613be3565b5050613ee96060830183613448565b613ef7818360038601613be3565b5050613f066080830183613448565b613b57818360048601613be3565b600160401b831115613f2857613f286132a2565b805483825580841015613f7257613f3e81613a5d565b613f4785613a5d565b60008481526020902091820191015b81811015613f6f57613f6781613da8565b600501613f56565b50505b5060008181526020812083915b85811015613fb057613f9a613f948487613d92565b83613de1565b6020929092019160059190910190600101613f7f565b505050505050565b60008235603e198336030181126133f457600080fd5b613fd88283613448565b6001600160401b03811115613fef57613fef6132a2565b613ffd81613e10855461340e565b6000601f82116001811461402b57600083156140195750838201355b6140238482613aba565b865550614085565b600085815260209020601f19841690835b8281101561405c578685013582556020948501946001909201910161403c565b50848210156140795760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506120456140996020840184613d92565b60018301613de1565b600160401b8311156140b6576140b66132a2565b80548382558084101561410c576140cc81613a81565b6140d585613a81565b60008481526020902091820191015b81811015614109576140f581613acf565b61410160018201613da8565b6006016140e4565b50505b5060008181526020812083915b85811015613fb05761413461412e8487613fb8565b83613fce565b6020929092019160069190910190600101614119565b6141548283613448565b6001600160401b0381111561416b5761416b6132a2565b61417981613e10855461340e565b6000601f8211600181146141a757600083156141955750838201355b61419f8482613aba565b865550614201565b600085815260209020601f19841690835b828110156141d857868501358255602094850194600190920191016141b8565b50848210156141f55760001960f88660031b161c19848701351681555b505060018360011b0185555b505050506142126020830183613448565b614220818360018601613be3565b505061422f6040830183613448565b61423d818360028601613be3565b505061424c6060830183613a14565b61425a818360038601613c9c565b50506142696080830183613a14565b613b57818360048601613c9c565b600160401b83111561428b5761428b6132a2565b805483825580841015614305576142a181613a5d565b6142aa85613a5d565b60008481526020902091820191015b81811015614302576142ca81613acf565b6142d660018201613acf565b6142e260028201613acf565b6142ee60038201613b22565b6142fa60048201613b22565b6005016142b9565b50505b5060008181526020812083915b85811015613fb05761432d6143278487613d92565b8361414a565b6020929092019160059190910190600101614312565b61434d8283613a14565b614358818385613c9c565b50506143676020830183613448565b614375818360018601613be3565b50506143846040830183613a14565b614392818360028601613c9c565b50506143a16060830183613a14565b6143af818360038601613f14565b50506143be6080830183613a14565b6143cc8183600486016140a2565b50506143db60a0830183613a14565b6143e98183600586016140a2565b50506143f860c0830183613a14565b6144068183600686016140a2565b505061441560e0830183613a14565b6144238183600786016140a2565b5050614433610100830183613a14565b6144418183600886016140a2565b5050614451610120830183613a14565b61445f818360098601614277565b505061446f610140830183613a14565b613b578183600a8601613c9c565b6020815260006144916020830184866134dd565b949350505050565b6000602082840312156144ab57600080fd5b505191905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220723b924cde5898c15b852784041ab7cbfcff1cb2d1a9295e16b92797a2af92fd64736f6c63430008140033" + }, + "0x0000000000000000000000000000000000018888": { + "comment": "Ethereum registry for ERC-1056 ethr did methods", + "balance": "0", + "code": "0x608060405234801561001057600080fd5b50600436106100ff5760003560e01c806380b29f7c11610097578063a7068d6611610066578063a7068d66146102b5578063e476af5c146102c8578063f00d4b5d146102db578063f96d0f9f146102ee57600080fd5b806380b29f7c146102695780638733d4e81461027c578063930726841461028f5780639c2c1b2b146102a257600080fd5b8063240cf1fa116100d3578063240cf1fa146101b1578063622b2a3c146101c457806370ae92d2146102365780637ad4b0a41461025657600080fd5b8062c023da14610104578063022914a7146101195780630d44625b1461015f578063123b5e981461019e575b600080fd5b610117610112366004610ce5565b61030e565b005b610142610127366004610d3c565b6000602081905290815260409020546001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61019061016d366004610d5e565b600160209081526000938452604080852082529284528284209052825290205481565b604051908152602001610156565b6101176101ac366004610dab565b61031f565b6101176101bf366004610e30565b6103ab565b6102266101d2366004610d5e565b6001600160a01b039283166000908152600160209081526040808320815180840196909652815180870384018152958201825285519583019590952083529381528382209290941681529252902054421090565b6040519015158152602001610156565b610190610244366004610d3c565b60036020526000908152604090205481565b610117610264366004610e87565b610476565b610117610277366004610d5e565b610489565b61014261028a366004610d3c565b610495565b61011761029d366004610ee6565b6104c5565b6101176102b0366004610f45565b61059c565b6101176102c3366004610faf565b610673565b6101176102d6366004610ff3565b610680565b6101176102e936600461106d565b6106ff565b6101906102fc366004610d3c565b60026020526000908152604090205481565b61031a8333848461070e565b505050565b6000601960f81b81306003826103348d610495565b6001600160a01b03166001600160a01b03168152602001908152602001600020548b8888886040516020016103709897969594939291906110c4565b6040516020818303038152906040528051906020012090506103a1886103998a8a8a8a876107ca565b8686866108b9565b5050505050505050565b6000601960f81b81306003826103c08b610495565b6001600160a01b0316815260208082019290925260409081016000205481516001600160f81b0319968716818501529490951660218501526001600160601b0319606093841b8116602286015260368501959095528a831b851660568501526a31b430b733b2a7bbb732b960a91b606a8501529186901b909316607583015280516069818403018152608990920190528051910120905061046e8661046881888888876107ca565b84610981565b505050505050565b61048384338585856108b9565b50505050565b61031a83338484610a49565b6001600160a01b0380821660009081526020819052604081205490911680156104be5792915050565b5090919050565b6000601960f81b81306003826104da8c610495565b6001600160a01b0316815260208082019290925260409081016000205481516001600160f81b0319968716818501529490951660218501526001600160601b0319606093841b8116602286015260368501959095528b831b851660568501526d7265766f6b6544656c656761746560901b606a850152607884018890529186901b90931660988301528051608c81840301815260ac9092019052805191012090506105938761058c81898989876107ca565b8585610a49565b50505050505050565b6000601960f81b81306003826105b18d610495565b6001600160a01b0316815260208082019290925260409081016000205490516001600160f81b031995861692810192909252929093166021840152606090811b6001600160601b0319908116602285015260368401929092528a811b821660568401526a61646444656c656761746560a81b606a8401526075830187905285901b16609582015260a9810183905260c9016040516020818303038152906040528051906020012090506103a18861066b8a8a8a8a876107ca565b868686610b27565b6104838433858585610b27565b6000601960f81b81306003826106958c610495565b6001600160a01b03166001600160a01b03168152602001908152602001600020548a87876040516020016106cf979695949392919061114a565b604051602081830303815290604052805190602001209050610593876106f889898989876107ca565b858561070e565b61070a823383610981565b5050565b838361071982610495565b6001600160a01b0316816001600160a01b0316146107525760405162461bcd60e51b8152600401610749906111cc565b60405180910390fd5b6001600160a01b0386166000818152600260205260408082205490517f18ab6b2ae3d64306c00ce663125f2bd680e441a098de1635bd7ad8b0d44965e49261079f9289928992919061121b565b60405180910390a25050506001600160a01b0390921660009081526002602052604090204390555050565b6040805160008082526020820180845284905260ff8716928201929092526060810185905260808101849052819060019060a0016020604051602081039080840390855afa158015610820573d6000803e3d6000fd5b50505060206040510351905061083587610495565b6001600160a01b0316816001600160a01b0316146108855760405162461bcd60e51b815260206004820152600d60248201526c6261645f7369676e617475726560981b6044820152606401610749565b6001600160a01b03811660009081526003602052604081208054916108a98361125d565b9091555090979650505050505050565b84846108c482610495565b6001600160a01b0316816001600160a01b0316146108f45760405162461bcd60e51b8152600401610749906111cc565b6001600160a01b0387167f18ab6b2ae3d64306c00ce663125f2bd680e441a098de1635bd7ad8b0d44965e4868661092b8742611276565b6001600160a01b038c1660009081526002602052604090819020549051610955949392919061121b565b60405180910390a25050506001600160a01b039093166000908152600260205260409020439055505050565b828261098c82610495565b6001600160a01b0316816001600160a01b0316146109bc5760405162461bcd60e51b8152600401610749906111cc565b6001600160a01b0385811660008181526020818152604080832080546001600160a01b031916958916958617905560028252918290205482519485529084015290917f38a5a6e68f30ed1ab45860a4afb34bcb2fc00f22ca462d249b8a8d40cda6f7a3910160405180910390a2505050506001600160a01b03166000908152600260205260409020439055565b8383610a5482610495565b6001600160a01b0316816001600160a01b031614610a845760405162461bcd60e51b8152600401610749906111cc565b6001600160a01b03868116600081815260016020908152604080832081518084018b90528251808203850181528184018085528151918601919091208652918452828520968a16808652968452828520429081905586865260029094529190932054928990526060810194909452608084015260a0830152907f5a5084339536bcab65f20799fcc58724588145ca054bd2be626174b27ba156f79060c00161079f565b8484610b3282610495565b6001600160a01b0316816001600160a01b031614610b625760405162461bcd60e51b8152600401610749906111cc565b610b6c8342611276565b6001600160a01b03888116600081815260016020908152604080832081518084018d9052825180820385018152908301835280519084012084528252808320948a16835293905291909120919091557f5a5084339536bcab65f20799fcc58724588145ca054bd2be626174b27ba156f78686610be88742611276565b6001600160a01b038c811660009081526002602090815260409182902054825196875294909216918501919091528301526060820152608001610955565b80356001600160a01b0381168114610c3d57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600082601f830112610c6957600080fd5b813567ffffffffffffffff80821115610c8457610c84610c42565b604051601f8301601f19908116603f01168101908282118183101715610cac57610cac610c42565b81604052838152866020858801011115610cc557600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600060608486031215610cfa57600080fd5b610d0384610c26565b925060208401359150604084013567ffffffffffffffff811115610d2657600080fd5b610d3286828701610c58565b9150509250925092565b600060208284031215610d4e57600080fd5b610d5782610c26565b9392505050565b600080600060608486031215610d7357600080fd5b610d7c84610c26565b925060208401359150610d9160408501610c26565b90509250925092565b803560ff81168114610c3d57600080fd5b600080600080600080600060e0888a031215610dc657600080fd5b610dcf88610c26565b9650610ddd60208901610d9a565b955060408801359450606088013593506080880135925060a088013567ffffffffffffffff811115610e0e57600080fd5b610e1a8a828b01610c58565b92505060c0880135905092959891949750929550565b600080600080600060a08688031215610e4857600080fd5b610e5186610c26565b9450610e5f60208701610d9a565b93506040860135925060608601359150610e7b60808701610c26565b90509295509295909350565b60008060008060808587031215610e9d57600080fd5b610ea685610c26565b935060208501359250604085013567ffffffffffffffff811115610ec957600080fd5b610ed587828801610c58565b949793965093946060013593505050565b60008060008060008060c08789031215610eff57600080fd5b610f0887610c26565b9550610f1660208801610d9a565b9450604087013593506060870135925060808701359150610f3960a08801610c26565b90509295509295509295565b600080600080600080600060e0888a031215610f6057600080fd5b610f6988610c26565b9650610f7760208901610d9a565b9550604088013594506060880135935060808801359250610f9a60a08901610c26565b915060c0880135905092959891949750929550565b60008060008060808587031215610fc557600080fd5b610fce85610c26565b935060208501359250610fe360408601610c26565b9396929550929360600135925050565b60008060008060008060c0878903121561100c57600080fd5b61101587610c26565b955061102360208801610d9a565b945060408701359350606087013592506080870135915060a087013567ffffffffffffffff81111561105457600080fd5b61106089828a01610c58565b9150509295509295509295565b6000806040838503121561108057600080fd5b61108983610c26565b915061109760208401610c26565b90509250929050565b60005b838110156110bb5781810151838201526020016110a3565b50506000910152565b6001600160f81b03198981168252881660018201526001600160601b0319606088811b821660028401526016830188905286901b1660368201526b73657441747472696275746560a01b604a8201526056810184905282516000906111308160768501602088016110a0565b607692019182019290925260960198975050505050505050565b6001600160f81b03198881168252871660018201526001600160601b0319606087811b821660028401526016830187905285901b1660368201526e7265766f6b6541747472696275746560881b604a8201526059810183905281516000906111b98160798501602087016110a0565b9190910160790198975050505050505050565b6020808252600990820152683130b22fb0b1ba37b960b91b604082015260600190565b600081518084526112078160208601602086016110a0565b601f01601f19169290920160200192915050565b84815260806020820152600061123460808301866111ef565b6040830194909452506060015292915050565b634e487b7160e01b600052601160045260246000fd5b60006001820161126f5761126f611247565b5060010190565b8082018082111561128957611289611247565b9291505056fea2646970667358221220f5aec7fd165d8c8b7d8488b4f31ea0ec06596ef7619a81916b9607d7a60e68b364736f6c63430008140033", + "storage": {} + }, + "0x000000000000000000000000000000000019999": { + "comment": "Proxy: Smart contract to resolve DIDs from various DID registries", + "balance": "0", + "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220b318f7afb60b67fd3dc094cf8eb9b397007adb9376e4f3638cab05cadefc21ab64736f6c63430008140033", + "storage": { + "0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000009999", + "0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000003333", + "0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000000018888", + "f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00": "0x0000000000000000000000000000000000000000000000000000000000000001", + "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000d9ee1fcc07f04211de540833b9bf6f5a8ef86b73" + } + }, + "0xd9ee1fcc07f04211de540833b9bf6f5a8ef86b73": { + "comment": "Implementation: Smart contract to resolve DIDs from various DID registries", + "balance": "0", + "code": "0x6080604052600436106100555760003560e01c806329181c6c1461005a5780634f1ef2861461009057806352d1902d146100a557806366874f25146100c8578063ad3cb1cc14610126578063c0c53b8b14610164575b600080fd5b34801561006657600080fd5b5061007a61007536600461136c565b610184565b6040516100879190611660565b60405180910390f35b6100a361009e3660046117bc565b610333565b005b3480156100b157600080fd5b506100ba610352565b604051908152602001610087565b3480156100d457600080fd5b506100e86100e336600461136c565b61036f565b604051610087919081516001600160a01b03168152602080830151908201526040808301519082015260609182015115159181019190915260800190565b34801561013257600080fd5b50610157604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610087919061181f565b34801561017057600080fd5b506100a361017f366004611832565b61051b565b6101e160405180610160016040528060608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081526020016060815260200160608152602001606081525090565b61021c61020d604051806040016040528060088152602001673234b21d32ba343960c11b81525061062f565b6102168461062f565b90610640565b156102b75760405163fdc1b5c360e01b81526004016102ae9060408082526024908201527f556e6976657273616c4469645265736f6c7665722e7265736f6c7665446f63756060820152631b595b9d60e21b608082015260a060208201819052601e908201527f556e737570706f7274656420444944204d6574686f643a20276574687227000060c082015260e00190565b60405180910390fd5b600154604051630d8ce14b60e21b81526001600160a01b0390911690633633852c906102e790859060040161181f565b600060405180830381865afa158015610304573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261032c9190810190611d7f565b5192915050565b61033b610653565b610344826106fa565b61034e8282610760565b5050565b600061035c610822565b506000805160206120e683398151915290565b6040805160808101825260008082526020820181905291810182905260608101919091526103bf61020d604051806040016040528060088152602001673234b21d32ba343960c11b81525061062f565b1561049c5760006103cf8361086b565b90506001600160a01b0381166103fa5782604051631859e3bb60e11b81526004016102ae919061181f565b6002546040516310e67a9d60e31b81526001600160a01b0383811660048301526000921690638733d4e890602401602060405180830381865afa158015610445573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104699190611f9a565b604080516080810182526001600160a01b0390921682526000602083018190529082018190526060820152949350505050565b600154604051630d8ce14b60e21b81526001600160a01b0390911690633633852c906104cc90859060040161181f565b600060405180830381865afa1580156104e9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105119190810190611d7f565b6020015192915050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff1680610564575080546001600160401b03808416911610155b156105825760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155600280546001600160a01b038088166001600160a01b03199283161790925560018054928716929091169190911790556105dc836108b7565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b600061063a826108e1565b92915050565b600061064c83836108f5565b9392505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806106da57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166106ce6000805160206120e6833981519152546001600160a01b031690565b6001600160a01b031614155b156106f85760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b15801561074557600080fd5b505afa158015610759573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156107ba575060408051601f3d908101601f191682019092526107b791810190611fb7565b60015b6107e257604051634c9c8ce360e01b81526001600160a01b03831660048201526024016102ae565b6000805160206120e6833981519152811461081357604051632a87526960e21b8152600481018290526024016102ae565b61081d8383610942565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106f85760405163703e46dd60e11b815260040160405180910390fd5b6000806108a2610893604051806040016040528060018152602001601d60f91b81525061062f565b61089c8561062f565b90610998565b9250505061064c6108b2826109e5565b6109f0565b6108bf610afd565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008060208301905061064c818451610b46565b60006001600160801b03838116908316808210156109185760009250505061063a565b848183111561092e5761092b8683610b52565b90505b6109388186610ba5565b9695505050505050565b61094b82610be7565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156109905761081d8282610c4c565b61034e610cc2565b60008080806109a78686610ce1565b905060001981036109c25760008087935093509350506109de565b6109d686826001600160801b038816610dd3565b935093509350505b9250925092565b606061063a82610e40565b60008151602814610a0357506000919050565b60408051601480825281830190925260009160208201818036833701905050905060005b6014811015610ae957600080610a4786610a42856002611fe6565b610eb7565b9150915080610a5c5750600095945050505050565b600080610a7988610a6e876002611fe6565b610a42906001611ffd565b9150915080610a9057506000979650505050505050565b81610a9c856010612010565b610aa6919061202c565b60f81b868681518110610abb57610abb612045565b60200101906001600160f81b031916908160001a905350505050508080610ae19061205b565b915050610a27565b50610af381612074565b60601c9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166106f857604051631afcd79f60e31b815260040160405180910390fd5b600061064c8383610fb1565b60006001600160801b03831680831115610b7f576040516365f4e9df60e01b815260040160405180910390fd5b610b9d610b8c8560801c90565b60801b6001600160801b0385161790565b949350505050565b60006001600160801b038381169083168114610bc557600091505061063a565b610b9d610bd28560801c90565b610bdc8560801c90565b839081902091201490565b806001600160a01b03163b600003610c1d57604051634c9c8ce360e01b81526001600160a01b03821660048201526024016102ae565b6000805160206120e683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610c6991906120b0565b600060405180830381855af49150503d8060008114610ca4576040519150601f19603f3d011682016040523d82523d6000602084013e610ca9565b606091505b5091509150610cb9858383610fbd565b95945050505050565b34156106f85760405163b398979f60e01b815260040160405180910390fd5b60006001600160801b03838116908316808303610d035760009250505061063a565b811580610d0f57508181115b15610d20576000199250505061063a565b6000610d2c8660801c90565b90506000610d3a8660801c90565b90506000610d4787611019565b905060001984015b6000610d5c85888561105e565b90506000198103610d785760001997505050505050505061063a565b80821115610d915760001997505050505050505061063a565b858420828203868101889020909103610db357975061063a9650505050505050565b8115610dc157509550610d4f565b6000199850505050505050505061063a565b600080600080610de38760801c90565b90506001600160801b03871685870181811115610e13576040516365f4e9df60e01b815260040160405180910390fd5b6001996001600160801b03988916608085811b919091179a50928290039098169201901b17949350505050565b60606001600160801b0382166001600160401b03811115610e6357610e63611254565b6040519080825280601f01601f191660200182016040528015610e8d576020820181803683370190505b50905060208101610eb181610ea28560801c90565b6001600160801b03861661116b565b50919050565b6000806000848481518110610ece57610ece612045565b01602001516001600160f81b0319169050600360fc1b8110801590610f015750603960f81b6001600160f81b0319821611155b15610f2157610f15603060f883901c6120cc565b60019250925050610faa565b606160f81b6001600160f81b0319821610801590610f4d5750603360f91b6001600160f81b0319821611155b15610f6157610f15605760f883901c6120cc565b604160f81b6001600160f81b0319821610801590610f8d5750602360f91b6001600160f81b0319821611155b15610fa157610f15603760f883901c6120cc565b60008092509250505b9250929050565b600061064c8383611179565b606082610fd257610fcd826111df565b61064c565b8151158015610fe957506001600160a01b0384163b155b1561101257604051639996b31560e01b81526001600160a01b03851660048201526024016102ae565b5092915050565b60006001600160801b038216808203611045576040516365f4e9df60e01b815260040160405180910390fd5b61064c600182036110568560801c90565b015160001a90565b60006020831161107a5761107384848461120b565b905061064c565b601f831684840181156110b257819003600061109782848761120b565b905060001981146110b0579086900301915061064c9050565b505b60ff84167f0101010101010101010101010101010101010101010101010101010101010101025b8682111561115d57601f1991909101805190919081187f808080808080808080808080808080808080808080808080808080808080808081197ffefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefeff83011616156111575787830361114b8460208961120b565b0194505050505061064c565b506110d9565b506000199695505050505050565b8083828460045afa50505050565b60006001600160801b038311156111a35760405163fee7506f60e01b815260040160405180910390fd5b6001600160801b038211156111cb57604051633b6b098d60e01b815260040160405180910390fd5b506001600160801b031660809190911b1790565b8051156111ef5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b6000602083111561121b57602092505b83515b8315611248576000199093019280841a60ff8416810361124257849250505061064c565b5061121e565b50600019949350505050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b038111828210171561128c5761128c611254565b60405290565b604080519081016001600160401b038111828210171561128c5761128c611254565b60405161016081016001600160401b038111828210171561128c5761128c611254565b604051601f8201601f191681016001600160401b03811182821017156112ff576112ff611254565b604052919050565b60006001600160401b0382111561132057611320611254565b50601f01601f191660200190565b600061134161133c84611307565b6112d7565b905082815283838301111561135557600080fd5b828260208301376000602084830101529392505050565b60006020828403121561137e57600080fd5b81356001600160401b0381111561139457600080fd5b8201601f810184136113a557600080fd5b610b9d8482356020840161132e565b60005b838110156113cf5781810151838201526020016113b7565b50506000910152565b600081518084526113f08160208601602086016113b4565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b8481101561144f57601f1986840301895261143d8383516113d8565b98840198925090830190600101611421565b5090979650505050505050565b6000815160a0845261147160a08501826113d8565b90506020830151848203602086015261148a82826113d8565b915050604083015184820360408601526114a482826113d8565b915050606083015184820360608601526114be82826113d8565b91505060808301518482036080860152610cb982826113d8565b600082825180855260208086019550808260051b84010181860160005b8481101561144f57601f1986840301895261151183835161145c565b988401989250908301906001016114f5565b600082825180855260208086019550808260051b84010181860160005b8481101561144f57601f19868403018952815160408151818652611566828701826113d8565b91505085820151915084810386860152611580818361145c565b9a86019a9450505090830190600101611540565b600081518084526020808501808196508360051b8101915082860160005b85811015611653578284038952815160a081518187526115d4828801826113d8565b91505086820151868203888801526115ec82826113d8565b9150506040808301518783038289015261160683826113d8565b92505050606080830151878303828901526116218382611404565b925050506080808301519250868203818801525061163f8183611404565b9a87019a95505050908401906001016115b2565b5091979650505050505050565b602081526000825161016080602085015261167f610180850183611404565b91506020850151601f198086850301604087015261169d84836113d8565b935060408701519150808685030160608701526116ba8483611404565b935060608701519150808685030160808701526116d784836114d8565b935060808701519150808685030160a08701526116f48483611523565b935060a08701519150808685030160c08701526117118483611523565b935060c08701519150808685030160e087015261172e8483611523565b935060e0870151915061010081878603018188015261174d8584611523565b94508088015192505061012081878603018188015261176c8584611523565b94508088015192505061014081878603018188015261178b8584611594565b9088015187820390920184880152935090506109388382611404565b6001600160a01b038116811461120857600080fd5b600080604083850312156117cf57600080fd5b82356117da816117a7565b915060208301356001600160401b038111156117f557600080fd5b8301601f8101851361180657600080fd5b6118158582356020840161132e565b9150509250929050565b60208152600061064c60208301846113d8565b60008060006060848603121561184757600080fd5b8335611852816117a7565b92506020840135611862816117a7565b91506040840135611872816117a7565b809150509250925092565b60006001600160401b0382111561189657611896611254565b5060051b60200190565b600082601f8301126118b157600080fd5b81516118bf61133c82611307565b8181528460208386010111156118d457600080fd5b610b9d8260208301602087016113b4565b600082601f8301126118f657600080fd5b8151602061190661133c8361187d565b82815260059290921b8401810191818101908684111561192557600080fd5b8286015b848110156119645780516001600160401b038111156119485760008081fd5b6119568986838b01016118a0565b845250918301918301611929565b509695505050505050565b600060a0828403121561198157600080fd5b61198961126a565b905081516001600160401b03808211156119a257600080fd5b6119ae858386016118a0565b835260208401519150808211156119c457600080fd5b6119d0858386016118a0565b602084015260408401519150808211156119e957600080fd5b6119f5858386016118a0565b60408401526060840151915080821115611a0e57600080fd5b611a1a858386016118a0565b60608401526080840151915080821115611a3357600080fd5b50611a40848285016118a0565b60808301525092915050565b600082601f830112611a5d57600080fd5b81516020611a6d61133c8361187d565b82815260059290921b84018101918181019086841115611a8c57600080fd5b8286015b848110156119645780516001600160401b03811115611aaf5760008081fd5b611abd8986838b010161196f565b845250918301918301611a90565b600082601f830112611adc57600080fd5b81516020611aec61133c8361187d565b82815260059290921b84018101918181019086841115611b0b57600080fd5b8286015b848110156119645780516001600160401b0380821115611b2f5760008081fd5b908801906040828b03601f1901811315611b495760008081fd5b611b51611292565b8784015183811115611b635760008081fd5b611b718d8a838801016118a0565b825250908301519082821115611b875760008081fd5b611b958c898487010161196f565b818901528652505050918301918301611b0f565b600082601f830112611bba57600080fd5b81516020611bca61133c8361187d565b82815260059290921b84018101918181019086841115611be957600080fd5b8286015b848110156119645780516001600160401b0380821115611c0d5760008081fd5b9088019060a0828b03601f1901811315611c275760008081fd5b611c2f61126a565b8784015183811115611c415760008081fd5b611c4f8d8a838801016118a0565b82525060408085015184811115611c665760008081fd5b611c748e8b838901016118a0565b8a8401525060608086015185811115611c8d5760008081fd5b611c9b8f8c838a01016118a0565b8385015250608091508186015185811115611cb65760008081fd5b611cc48f8c838a01016118e5565b82850152505082850151925083831115611cde5760008081fd5b611cec8d8a858801016118e5565b908201528652505050918301918301611bed565b600060808284031215611d1257600080fd5b604051608081018181106001600160401b0382111715611d3457611d34611254565b80604052508091508251611d47816117a7565b80825250602083015160208201526040830151604082015260608301518015158114611d7257600080fd5b6060919091015292915050565b600060208284031215611d9157600080fd5b81516001600160401b0380821115611da857600080fd5b9083019060a08286031215611dbc57600080fd5b611dc4611292565b825182811115611dd357600080fd5b83016101608188031215611de657600080fd5b611dee6112b4565b815184811115611dfd57600080fd5b611e09898285016118e5565b825250602082015184811115611e1e57600080fd5b611e2a898285016118a0565b602083015250604082015184811115611e4257600080fd5b611e4e898285016118e5565b604083015250606082015184811115611e6657600080fd5b611e7289828501611a4c565b606083015250608082015184811115611e8a57600080fd5b611e9689828501611acb565b60808301525060a082015184811115611eae57600080fd5b611eba89828501611acb565b60a08301525060c082015184811115611ed257600080fd5b611ede89828501611acb565b60c08301525060e082015184811115611ef657600080fd5b611f0289828501611acb565b60e0830152506101008083015185811115611f1c57600080fd5b611f288a828601611acb565b8284015250506101208083015185811115611f4257600080fd5b611f4e8a828601611ba9565b8284015250506101408083015185811115611f6857600080fd5b611f748a8286016118e5565b8284015250508083525050611f8c8660208501611d00565b602082015295945050505050565b600060208284031215611fac57600080fd5b815161064c816117a7565b600060208284031215611fc957600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761063a5761063a611fd0565b8082018082111561063a5761063a611fd0565b60ff818116838216029081169081811461101257611012611fd0565b60ff818116838216019081111561063a5761063a611fd0565b634e487b7160e01b600052603260045260246000fd5b60006001820161206d5761206d611fd0565b5060010190565b805160208201516bffffffffffffffffffffffff1980821692919060148310156120a85780818460140360031b1b83161693505b505050919050565b600082516120c28184602087016113b4565b9190910192915050565b60ff828116828216039081111561063a5761063a611fd056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212201442e74172f0948029d58450ac5b12e4b9dfa7be55676a4a0cacf409cecc5c1964736f6c63430008140033" }, "0x0000000000000000000000000000000000005555": { "comment": "Proxy: Smart contract to manage schemas", "balance": "0", - "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea264697066735822122021a4e888b9c1db781305504c1fe4d900ea72bacfd972be843c095665e340c1f864736f6c63430008150033", + "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220b318f7afb60b67fd3dc094cf8eb9b397007adb9376e4f3638cab05cadefc21ab64736f6c63430008140033", "storage": { "0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000009999", - "0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000003333", + "0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000019999", "f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00": "0x0000000000000000000000000000000000000000000000000000000000000001", - "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000007c490e67bfa61b5b51968dcf0bab2bb6bb762d7c" + "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000cb18b3b95d71f72296cf71dacd4cb4e870abde1b" } }, - "0x7c490e67bfa61b5b51968dcf0bab2bb6bb762d7c": { + "0xcb18b3b95d71f72296cf71dacd4cb4e870abde1b": { "comment": "Implementation: Smart contract to manage schemas", "balance": "0", - "code": "0x6080604052600436106100555760003560e01c8063485cc9551461005a5780634f1ef2861461007c57806352d1902d1461008f5780636c5c446c146100b7578063ad3cb1cc146100d7578063bd7fc5eb14610115575b600080fd5b34801561006657600080fd5b5061007a610075366004611113565b610142565b005b61007a61008a366004611264565b610242565b34801561009b57600080fd5b506100a4610261565b6040519081526020015b60405180910390f35b3480156100c357600080fd5b5061007a6100d23660046112c7565b61027e565b3480156100e357600080fd5b50610108604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100ae9190611351565b34801561012157600080fd5b50610135610130366004611364565b61058f565b6040516100ae91906113d5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff168061018b575080546001600160401b03808416911610155b156101a95760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155600180546001600160a01b0386166001600160a01b03199091161790556101f083610985565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b61024a6109af565b61025382610a56565b61025d8282610abc565b5050565b600061026b610b79565b5060008051602061225683398151915290565b61028881806114c7565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600292506102cd91508390611514565b9081526040519081900360200190206005015415610309578060405163012f5f2760e11b81526004016103009190611351565b60405180910390fd5b61031660208301836114c7565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050600154604051630d8ce14b60e21b81526001600160a01b039091169250633633852c915061037a908490600401611351565b6000604051808303816000875af19250505080156103ba57506040513d6000823e601f3d908101601f191682016040526103b79190810190611a32565b60015b61042e573d8080156103e8576040519150601f19603f3d011682016040523d82523d6000602084013e6103ed565b606091505b506103ff8163186a887560e11b610bc2565b1561041f5781604051634c92543b60e01b81526004016103009190611351565b61042881610bf2565b50505050565b6020810151516001600160a01b031633146104745760208101515160405163e69c46a360e01b81523360048201526001600160a01b039091166024820152604401610300565b8060200151606001511561049d57816040516350943b5760e11b81526004016103009190611351565b6104ae6104a985611cec565b610bfe565b6104bf6104ba85611cec565b610cac565b6104d06104cb85611cec565b610d03565b6104e16104dc85611cec565b610d4b565b8360026104ee82806114c7565b6040516104fc929190611dbb565b908152604051908190036020019020610515828261203f565b50429050600261052586806114c7565b604051610533929190611dbb565b90815260405190819003602001902060050155337f095272b2e2f5b1254b8cfabe2eac56bd6965cf00c76a1dec8f308a940629cfda61057286806114c7565b604051610580929190612178565b60405180910390a2505b505050565b6105976110a1565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600292506105de91508390611514565b90815260405190819003602001902060050154600003610613578060405163272a91e160e21b81526004016103009190611351565b60028484604051610625929190611dbb565b9081526040805191829003602001822060e0830182528054909183919082019083908290829061065490611dcb565b80601f016020809104026020016040519081016040528092919081815260200182805461068090611dcb565b80156106cd5780601f106106a2576101008083540402835291602001916106cd565b820191906000526020600020905b8154815290600101906020018083116106b057829003601f168201915b505050505081526020016001820180546106e690611dcb565b80601f016020809104026020016040519081016040528092919081815260200182805461071290611dcb565b801561075f5780601f106107345761010080835404028352916020019161075f565b820191906000526020600020905b81548152906001019060200180831161074257829003601f168201915b5050505050815260200160028201805461077890611dcb565b80601f01602080910402602001604051908101604052809291908181526020018280546107a490611dcb565b80156107f15780601f106107c6576101008083540402835291602001916107f1565b820191906000526020600020905b8154815290600101906020018083116107d457829003601f168201915b5050505050815260200160038201805461080a90611dcb565b80601f016020809104026020016040519081016040528092919081815260200182805461083690611dcb565b80156108835780601f1061085857610100808354040283529160200191610883565b820191906000526020600020905b81548152906001019060200180831161086657829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b8282101561095d5783829060005260206000200180546108d090611dcb565b80601f01602080910402602001604051908101604052809291908181526020018280546108fc90611dcb565b80156109495780601f1061091e57610100808354040283529160200191610949565b820191906000526020600020905b81548152906001019060200180831161092c57829003601f168201915b5050505050815260200190600101906108b1565b5050509152505081526040805160208082019092526005939093015483520152949350505050565b61098d610d8e565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610a3657507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a2a600080516020612256833981519152546001600160a01b031690565b6001600160a01b031614155b15610a545760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b158015610aa157600080fd5b505afa158015610ab5573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b16575060408051601f3d908101601f19168201909252610b13918101906121a7565b60015b610b3e57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610300565b6000805160206122568339815191528114610b6f57604051632a87526960e21b815260048101829052602401610300565b61058a8383610dd7565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a545760405163703e46dd60e11b815260040160405180910390fd5b60008083806020019051810190610bd991906121c0565b6001600160e01b03198481169116149150505b92915050565b60208101815182018082fd5b60208082015160408051808201825260158152742f616e6f6e63726564732f76302f534348454d412f60581b81850152818501518251808401845260018152602f60f81b8187015260608701519351600096610c5c969591016121ea565b6040516020818303038152906040529050610c8c610c7d8360000151610e2d565b610c8683610e2d565b90610e38565b61025d57815160405163ba33fe2160e01b81526103009190600401611351565b610cc9610cbc8260400151610e2d565b6001600160801b03161590565b15610d0057604051634efdf97760e01b8152600401610300906020808252600490820152636e616d6560e01b604082015260600190565b50565b610d13610cbc8260600151610e2d565b15610d0057604051634efdf97760e01b81526020600482015260076024820152663b32b939b4b7b760c91b6044820152606401610300565b806080015151600003610d0057604051634efdf97760e01b815260206004820152600a6024820152696174747269627574657360b01b6044820152606401610300565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610a5457604051631afcd79f60e31b815260040160405180910390fd5b610de082610e4b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610e255761058a8282610eb0565b61025d610f26565b6000610bec82610f45565b6000610e448383610f59565b9392505050565b806001600160a01b03163b600003610e8157604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610300565b60008051602061225683398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610ecd9190611514565b600060405180830381855af49150503d8060008114610f08576040519150601f19603f3d011682016040523d82523d6000602084013e610f0d565b606091505b5091509150610f1d858383610fa3565b95945050505050565b3415610a545760405163b398979f60e01b815260040160405180910390fd5b600080602083019050610e44818451610fff565b60006001600160801b038381169083168114610f79576000915050610bec565b610f9b610f868560801c90565b610f908560801c90565b839081902091201490565b949350505050565b606082610fb857610fb38261100b565b610e44565b8151158015610fcf57506001600160a01b0384163b155b15610ff857604051639996b31560e01b81526001600160a01b0385166004820152602401610300565b5092915050565b6000610e448383611034565b80511561101b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000610e44838360006001600160801b038311156110655760405163fee7506f60e01b815260040160405180910390fd5b6001600160801b0382111561108d57604051633b6b098d60e01b815260040160405180910390fd5b506001600160801b031660809190911b1790565b60405180604001604052806110de6040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b81526020016110f96040518060200160405280600081525090565b905290565b6001600160a01b0381168114610d0057600080fd5b6000806040838503121561112657600080fd5b8235611131816110fe565b91506020830135611141816110fe565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156111845761118461114c565b60405290565b604080519081016001600160401b03811182821017156111845761118461114c565b60405161016081016001600160401b03811182821017156111845761118461114c565b604051601f8201601f191681016001600160401b03811182821017156111f7576111f761114c565b604052919050565b60006001600160401b038211156112185761121861114c565b50601f01601f191660200190565b6000611239611234846111ff565b6111cf565b905082815283838301111561124d57600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561127757600080fd5b8235611282816110fe565b915060208301356001600160401b0381111561129d57600080fd5b8301601f810185136112ae57600080fd5b6112bd85823560208401611226565b9150509250929050565b6000602082840312156112d957600080fd5b81356001600160401b038111156112ef57600080fd5b820160a08185031215610e4457600080fd5b60005b8381101561131c578181015183820152602001611304565b50506000910152565b6000815180845261133d816020860160208601611301565b601f01601f19169290920160200192915050565b602081526000610e446020830184611325565b6000806020838503121561137757600080fd5b82356001600160401b038082111561138e57600080fd5b818501915085601f8301126113a257600080fd5b8135818111156113b157600080fd5b8660208285010111156113c357600080fd5b60209290920196919550909350505050565b600060208083528351604082850152805160a060608601526113fb610100860182611325565b905082820151605f19808784030160808801526114188383611325565b925060408401519150808784030160a08801526114358383611325565b925060608401519150808784030160c08801526114528383611325565b6080949094015187850390910160e088015280518085529085019392508483019150600581901b8301850160005b828110156114ae57601f1985830301845261149c828751611325565b95870195938701939150600101611480565b5094880151805160408901529498975050505050505050565b6000808335601e198436030181126114de57600080fd5b8301803591506001600160401b038211156114f857600080fd5b60200191503681900382131561150d57600080fd5b9250929050565b60008251611526818460208701611301565b9190910192915050565b60006001600160401b038211156115495761154961114c565b5060051b60200190565b600082601f83011261156457600080fd5b8151611572611234826111ff565b81815284602083860101111561158757600080fd5b610f9b826020830160208701611301565b600082601f8301126115a957600080fd5b815160206115b961123483611530565b82815260059290921b840181019181810190868411156115d857600080fd5b8286015b848110156116175780516001600160401b038111156115fb5760008081fd5b6116098986838b0101611553565b8452509183019183016115dc565b509695505050505050565b600060a0828403121561163457600080fd5b61163c611162565b905081516001600160401b038082111561165557600080fd5b61166185838601611553565b8352602084015191508082111561167757600080fd5b61168385838601611553565b6020840152604084015191508082111561169c57600080fd5b6116a885838601611553565b604084015260608401519150808211156116c157600080fd5b6116cd85838601611553565b606084015260808401519150808211156116e657600080fd5b506116f384828501611553565b60808301525092915050565b600082601f83011261171057600080fd5b8151602061172061123483611530565b82815260059290921b8401810191818101908684111561173f57600080fd5b8286015b848110156116175780516001600160401b038111156117625760008081fd5b6117708986838b0101611622565b845250918301918301611743565b600082601f83011261178f57600080fd5b8151602061179f61123483611530565b82815260059290921b840181019181810190868411156117be57600080fd5b8286015b848110156116175780516001600160401b03808211156117e25760008081fd5b908801906040828b03601f19018113156117fc5760008081fd5b61180461118a565b87840151838111156118165760008081fd5b6118248d8a83880101611553565b82525090830151908282111561183a5760008081fd5b6118488c8984870101611622565b8189015286525050509183019183016117c2565b600082601f83011261186d57600080fd5b8151602061187d61123483611530565b82815260059290921b8401810191818101908684111561189c57600080fd5b8286015b848110156116175780516001600160401b03808211156118c05760008081fd5b9088019060a0828b03601f19018113156118da5760008081fd5b6118e2611162565b87840151838111156118f45760008081fd5b6119028d8a83880101611553565b825250604080850151848111156119195760008081fd5b6119278e8b83890101611553565b8a84015250606080860151858111156119405760008081fd5b61194e8f8c838a0101611553565b83850152506080915081860151858111156119695760008081fd5b6119778f8c838a0101611598565b828501525050828501519250838311156119915760008081fd5b61199f8d8a85880101611598565b9082015286525050509183019183016118a0565b6000608082840312156119c557600080fd5b604051608081018181106001600160401b03821117156119e7576119e761114c565b806040525080915082516119fa816110fe565b80825250602083015160208201526040830151604082015260608301518015158114611a2557600080fd5b6060919091015292915050565b600060208284031215611a4457600080fd5b81516001600160401b0380821115611a5b57600080fd5b9083019060a08286031215611a6f57600080fd5b611a7761118a565b825182811115611a8657600080fd5b83016101608188031215611a9957600080fd5b611aa16111ac565b815184811115611ab057600080fd5b611abc89828501611598565b825250602082015184811115611ad157600080fd5b611add89828501611553565b602083015250604082015184811115611af557600080fd5b611b0189828501611598565b604083015250606082015184811115611b1957600080fd5b611b25898285016116ff565b606083015250608082015184811115611b3d57600080fd5b611b498982850161177e565b60808301525060a082015184811115611b6157600080fd5b611b6d8982850161177e565b60a08301525060c082015184811115611b8557600080fd5b611b918982850161177e565b60c08301525060e082015184811115611ba957600080fd5b611bb58982850161177e565b60e0830152506101008083015185811115611bcf57600080fd5b611bdb8a82860161177e565b8284015250506101208083015185811115611bf557600080fd5b611c018a82860161185c565b8284015250506101408083015185811115611c1b57600080fd5b611c278a828601611598565b8284015250508083525050611c3f86602085016119b3565b602082015295945050505050565b600082601f830112611c5e57600080fd5b610e4483833560208501611226565b600082601f830112611c7e57600080fd5b81356020611c8e61123483611530565b82815260059290921b84018101918181019086841115611cad57600080fd5b8286015b848110156116175780356001600160401b03811115611cd05760008081fd5b611cde8986838b0101611c4d565b845250918301918301611cb1565b600060a08236031215611cfe57600080fd5b611d06611162565b82356001600160401b0380821115611d1d57600080fd5b611d2936838701611c4d565b83526020850135915080821115611d3f57600080fd5b611d4b36838701611c4d565b60208401526040850135915080821115611d6457600080fd5b611d7036838701611c4d565b60408401526060850135915080821115611d8957600080fd5b611d9536838701611c4d565b60608401526080850135915080821115611dae57600080fd5b506116f336828601611c6d565b8183823760009101908152919050565b600181811c90821680611ddf57607f821691505b602082108103611dff57634e487b7160e01b600052602260045260246000fd5b50919050565b5b8181101561025d5760008155600101611e06565b601f82111561058a57806000526020600020601f840160051c81016020851015611e415750805b610ab5601f850160051c830182611e05565b6001600160401b03831115611e6a57611e6a61114c565b611e7e83611e788354611dcb565b83611e1a565b6000601f841160018114611eb25760008515611e9a5750838201355b600019600387901b1c1916600186901b178355610ab5565b600083815260209020601f19861690835b82811015611ee35786850135825560209485019460019092019101611ec3565b5086821015611f005760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000808335601e19843603018112611f2957600080fd5b8301803591506001600160401b03821115611f4357600080fd5b6020019150600581901b360382131561150d57600080fd5b600160401b831115611f6f57611f6f61114c565b805483825580841015611ff8576000828152602081208581019083015b80821015611ff457611f9e8254611dcb565b8015611fe857601f80821160018114611fb957858555611fe5565b600085815260209020611fd683850160051c820160018301611e05565b50600085815260208120818755555b50505b50600182019150611f8c565b5050505b5060008181526020812083915b858110156120375761201783866114c7565b612022818386611e53565b50506020929092019160019182019101612005565b505050505050565b61204982836114c7565b6001600160401b038111156120605761206061114c565b6120748161206e8554611dcb565b85611e1a565b6000601f8211600181146120a857600083156120905750838201355b600019600385901b1c1916600184901b178555612102565b600085815260209020601f19841690835b828110156120d957868501358255602094850194600190920191016120b9565b50848210156120f65760001960f88660031b161c19848701351681555b505060018360011b0185555b5050505061211360208301836114c7565b612121818360018601611e53565b505061213060408301836114c7565b61213e818360028601611e53565b505061214d60608301836114c7565b61215b818360038601611e53565b505061216a6080830183611f12565b610428818360048601611f5b565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b6000602082840312156121b957600080fd5b5051919050565b6000602082840312156121d257600080fd5b81516001600160e01b031981168114610e4457600080fd5b600086516121fc818460208b01611301565b865190830190612210818360208b01611301565b8651910190612223818360208a01611301565b8551910190612236818360208901611301565b8451910190612249818360208801611301565b0197965050505050505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212204cdf93e122883f39939010b3dabd6094502f061f87d3cbba4b53321adc394de064736f6c63430008150033" + "code": "0x6080604052600436106100555760003560e01c8063485cc9551461005a5780634f1ef2861461007c57806352d1902d1461008f5780636c5c446c146100b7578063ad3cb1cc146100d7578063bd7fc5eb14610115575b600080fd5b34801561006657600080fd5b5061007a610075366004611136565b610142565b005b61007a61008a366004611234565b610242565b34801561009b57600080fd5b506100a4610261565b6040519081526020015b60405180910390f35b3480156100c357600080fd5b5061007a6100d2366004611297565b61027e565b3480156100e357600080fd5b50610108604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516100ae9190611321565b34801561012157600080fd5b50610135610130366004611334565b6105ad565b6040516100ae91906113a5565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff168061018b575080546001600160401b03808416911610155b156101a95760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155600180546001600160a01b0386166001600160a01b03199091161790556101f0836109a3565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b61024a6109cd565b61025382610a74565b61025d8282610ada565b5050565b600061026b610b9c565b50600080516020611ba883398151915290565b6102888180611498565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600292506102cd915083906114e5565b9081526040519081900360200190206005015415610309578060405163012f5f2760e11b81526004016103009190611321565b60405180910390fd5b6103166020830183611498565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506001546040516366874f2560e01b81526001600160a01b0390911692506366874f25915061037a908490600401611321565b608060405180830381865afa9250505080156103b3575060408051601f3d908101601f191682019092526103b091810190611501565b60015b610458573d8080156103e1576040519150601f19603f3d011682016040523d82523d6000602084013e6103e6565b606091505b506103f88163186a887560e11b610be5565b156104185781604051634c92543b60e01b81526004016103009190611321565b61042981631859e3bb60e11b610be5565b15610449578160405163046cb69560e21b81526004016103009190611321565b61045281610c15565b506104bd565b80516001600160a01b0316331461049657805160405163e69c46a360e01b81523360048201526001600160a01b039091166024820152604401610300565b8060600151156104bb57816040516350943b5760e11b81526004016103009190611321565b505b6104ce6104c98461162c565b610c21565b6104df6104da8461162c565b610ccf565b6104f06104eb8461162c565b610d26565b6105016104fc8461162c565b610d6e565b82600261050e8280611498565b60405161051c929190611707565b908152604051908190036020019020610535828261198b565b5042905060026105458580611498565b604051610553929190611707565b90815260405190819003602001902060050155337f095272b2e2f5b1254b8cfabe2eac56bd6965cf00c76a1dec8f308a940629cfda6105928580611498565b6040516105a0929190611aca565b60405180910390a2505050565b6105b56110c4565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600292506105fc915083906114e5565b90815260405190819003602001902060050154600003610631578060405163272a91e160e21b81526004016103009190611321565b60028484604051610643929190611707565b9081526040805191829003602001822060e0830182528054909183919082019083908290829061067290611717565b80601f016020809104026020016040519081016040528092919081815260200182805461069e90611717565b80156106eb5780601f106106c0576101008083540402835291602001916106eb565b820191906000526020600020905b8154815290600101906020018083116106ce57829003601f168201915b5050505050815260200160018201805461070490611717565b80601f016020809104026020016040519081016040528092919081815260200182805461073090611717565b801561077d5780601f106107525761010080835404028352916020019161077d565b820191906000526020600020905b81548152906001019060200180831161076057829003601f168201915b5050505050815260200160028201805461079690611717565b80601f01602080910402602001604051908101604052809291908181526020018280546107c290611717565b801561080f5780601f106107e45761010080835404028352916020019161080f565b820191906000526020600020905b8154815290600101906020018083116107f257829003601f168201915b5050505050815260200160038201805461082890611717565b80601f016020809104026020016040519081016040528092919081815260200182805461085490611717565b80156108a15780601f10610876576101008083540402835291602001916108a1565b820191906000526020600020905b81548152906001019060200180831161088457829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020016000905b8282101561097b5783829060005260206000200180546108ee90611717565b80601f016020809104026020016040519081016040528092919081815260200182805461091a90611717565b80156109675780601f1061093c57610100808354040283529160200191610967565b820191906000526020600020905b81548152906001019060200180831161094a57829003601f168201915b5050505050815260200190600101906108cf565b5050509152505081526040805160208082019092526005939093015483520152949350505050565b6109ab610db1565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610a5457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610a48600080516020611ba8833981519152546001600160a01b031690565b6001600160a01b031614155b15610a725760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b158015610abf57600080fd5b505afa158015610ad3573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610b34575060408051601f3d908101601f19168201909252610b3191810190611af9565b60015b610b5c57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610300565b600080516020611ba88339815191528114610b8d57604051632a87526960e21b815260048101829052602401610300565b610b978383610dfa565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a725760405163703e46dd60e11b815260040160405180910390fd5b60008083806020019051810190610bfc9190611b12565b6001600160e01b03198481169116149150505b92915050565b60208101815182018082fd5b60208082015160408051808201825260158152742f616e6f6e63726564732f76302f534348454d412f60581b81850152818501518251808401845260018152602f60f81b8187015260608701519351600096610c7f96959101611b3c565b6040516020818303038152906040529050610caf610ca08360000151610e50565b610ca983610e50565b90610e5b565b61025d57815160405163ba33fe2160e01b81526103009190600401611321565b610cec610cdf8260400151610e50565b6001600160801b03161590565b15610d2357604051634efdf97760e01b8152600401610300906020808252600490820152636e616d6560e01b604082015260600190565b50565b610d36610cdf8260600151610e50565b15610d2357604051634efdf97760e01b81526020600482015260076024820152663b32b939b4b7b760c91b6044820152606401610300565b806080015151600003610d2357604051634efdf97760e01b815260206004820152600a6024820152696174747269627574657360b01b6044820152606401610300565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610a7257604051631afcd79f60e31b815260040160405180910390fd5b610e0382610e6e565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610e4857610b978282610ed3565b61025d610f49565b6000610c0f82610f68565b6000610e678383610f7c565b9392505050565b806001600160a01b03163b600003610ea457604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610300565b600080516020611ba883398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610ef091906114e5565b600060405180830381855af49150503d8060008114610f2b576040519150601f19603f3d011682016040523d82523d6000602084013e610f30565b606091505b5091509150610f40858383610fc6565b95945050505050565b3415610a725760405163b398979f60e01b815260040160405180910390fd5b600080602083019050610e67818451611022565b60006001600160801b038381169083168114610f9c576000915050610c0f565b610fbe610fa98560801c90565b610fb38560801c90565b839081902091201490565b949350505050565b606082610fdb57610fd68261102e565b610e67565b8151158015610ff257506001600160a01b0384163b155b1561101b57604051639996b31560e01b81526001600160a01b0385166004820152602401610300565b5092915050565b6000610e678383611057565b80511561103e5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000610e67838360006001600160801b038311156110885760405163fee7506f60e01b815260040160405180910390fd5b6001600160801b038211156110b057604051633b6b098d60e01b815260040160405180910390fd5b506001600160801b031660809190911b1790565b60405180604001604052806111016040518060a0016040528060608152602001606081526020016060815260200160608152602001606081525090565b815260200161111c6040518060200160405280600081525090565b905290565b6001600160a01b0381168114610d2357600080fd5b6000806040838503121561114957600080fd5b823561115481611121565b9150602083013561116481611121565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60405160a081016001600160401b03811182821017156111a7576111a761116f565b60405290565b604051601f8201601f191681016001600160401b03811182821017156111d5576111d561116f565b604052919050565b60006001600160401b038311156111f6576111f661116f565b611209601f8401601f19166020016111ad565b905082815283838301111561121d57600080fd5b828260208301376000602084830101529392505050565b6000806040838503121561124757600080fd5b823561125281611121565b915060208301356001600160401b0381111561126d57600080fd5b8301601f8101851361127e57600080fd5b61128d858235602084016111dd565b9150509250929050565b6000602082840312156112a957600080fd5b81356001600160401b038111156112bf57600080fd5b820160a08185031215610e6757600080fd5b60005b838110156112ec5781810151838201526020016112d4565b50506000910152565b6000815180845261130d8160208601602086016112d1565b601f01601f19169290920160200192915050565b602081526000610e6760208301846112f5565b6000806020838503121561134757600080fd5b82356001600160401b038082111561135e57600080fd5b818501915085601f83011261137257600080fd5b81358181111561138157600080fd5b86602082850101111561139357600080fd5b60209290920196919550909350505050565b600060208083528351604082850152805160a060608601526113cb6101008601826112f5565b905082820151605f19808784030160808801526113e883836112f5565b925060408401519150808784030160a088015261140583836112f5565b925060608401519150808784030160c088015261142283836112f5565b6080949094015187850390910160e088015280518085529085019392508483019150600581901b8301850160005b8281101561147e57601f1985830301845261146c8287516112f5565b95870195938701939150600101611450565b509488015180516040890152945b98975050505050505050565b6000808335601e198436030181126114af57600080fd5b8301803591506001600160401b038211156114c957600080fd5b6020019150368190038213156114de57600080fd5b9250929050565b600082516114f78184602087016112d1565b9190910192915050565b60006080828403121561151357600080fd5b604051608081018181106001600160401b03821117156115355761153561116f565b604052825161154381611121565b8082525060208301516020820152604083015160408201526060830151801515811461156e57600080fd5b60608201529392505050565b600082601f83011261158b57600080fd5b610e67838335602085016111dd565b600082601f8301126115ab57600080fd5b813560206001600160401b03808311156115c7576115c761116f565b8260051b6115d68382016111ad565b93845285810183019383810190888611156115f057600080fd5b84880192505b8583101561148c5782358481111561160e5760008081fd5b61161c8a87838c010161157a565b83525091840191908401906115f6565b600060a0823603121561163e57600080fd5b611646611185565b82356001600160401b038082111561165d57600080fd5b6116693683870161157a565b8352602085013591508082111561167f57600080fd5b61168b3683870161157a565b602084015260408501359150808211156116a457600080fd5b6116b03683870161157a565b604084015260608501359150808211156116c957600080fd5b6116d53683870161157a565b606084015260808501359150808211156116ee57600080fd5b506116fb3682860161159a565b60808301525092915050565b8183823760009101908152919050565b600181811c9082168061172b57607f821691505b60208210810361174b57634e487b7160e01b600052602260045260246000fd5b50919050565b5b8181101561025d5760008155600101611752565b601f821115610b9757806000526020600020601f840160051c8101602085101561178d5750805b610ad3601f850160051c830182611751565b6001600160401b038311156117b6576117b661116f565b6117ca836117c48354611717565b83611766565b6000601f8411600181146117fe57600085156117e65750838201355b600019600387901b1c1916600186901b178355610ad3565b600083815260209020601f19861690835b8281101561182f578685013582556020948501946001909201910161180f565b508682101561184c5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6000808335601e1984360301811261187557600080fd5b8301803591506001600160401b0382111561188f57600080fd5b6020019150600581901b36038213156114de57600080fd5b600160401b8311156118bb576118bb61116f565b805483825580841015611944576000828152602081208581019083015b80821015611940576118ea8254611717565b801561193457601f8082116001811461190557858555611931565b60008581526020902061192283850160051c820160018301611751565b50600085815260208120818755555b50505b506001820191506118d8565b5050505b5060008181526020812083915b85811015611983576119638386611498565b61196e81838661179f565b50506020929092019160019182019101611951565b505050505050565b6119958283611498565b6001600160401b038111156119ac576119ac61116f565b6119c0816119ba8554611717565b85611766565b6000601f8211600181146119f457600083156119dc5750838201355b600019600385901b1c1916600184901b178555611a4e565b600085815260209020601f19841690835b82811015611a255786850135825560209485019460019092019101611a05565b5084821015611a425760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050611a5f6020830183611498565b611a6d81836001860161179f565b5050611a7c6040830183611498565b611a8a81836002860161179f565b5050611a996060830183611498565b611aa781836003860161179f565b5050611ab6608083018361185e565b611ac48183600486016118a7565b50505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215611b0b57600080fd5b5051919050565b600060208284031215611b2457600080fd5b81516001600160e01b031981168114610e6757600080fd5b60008651611b4e818460208b016112d1565b865190830190611b62818360208b016112d1565b8651910190611b75818360208a016112d1565b8551910190611b888183602089016112d1565b8451910190611b9b8183602088016112d1565b0197965050505050505056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220ac9d5a3f1ec613d28f837624d44ceb3f7d22915ef4c98109a55a6aeadcddedd064736f6c63430008140033" }, "0x0000000000000000000000000000000000004444": { "comment": "Proxy: Smart contract to manage credential definitions", "balance": "0", - "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea264697066735822122021a4e888b9c1db781305504c1fe4d900ea72bacfd972be843c095665e340c1f864736f6c63430008150033", + "code": "0x6080604052600a600c565b005b60186014601a565b6051565b565b6000604c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e808015606f573d6000f35b3d6000fdfea2646970667358221220b318f7afb60b67fd3dc094cf8eb9b397007adb9376e4f3638cab05cadefc21ab64736f6c63430008140033", "storage": { "0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000009999", - "0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000003333", + "0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000019999", "0000000000000000000000000000000000000000000000000000000000000002": "0x0000000000000000000000000000000000000000000000000000000000005555", "f0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00": "0x0000000000000000000000000000000000000000000000000000000000000001", - "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000c76d7e87c6ebe19e4788e55e4b5fa23e2d1e570d" + "360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x0000000000000000000000007525d7a2a9a1f9e9d6481cbc803a0b7e1efb7327" } }, - "0xc76d7e87c6ebe19e4788e55e4b5fa23e2d1e570d": { + "0x7525d7a2a9a1f9e9d6481cbc803a0b7e1efb7327": { "comment": "Implementation: Smart contract to manage credential definitions", "balance": "0", - "code": "0x6080604052600436106100555760003560e01c80634f1ef2861461005a57806352d1902d1461006f5780636170c48a146100975780639c35941a146100c4578063ad3cb1cc146100e4578063c0c53b8b14610122575b600080fd5b61006d6100683660046112ca565b610142565b005b34801561007b57600080fd5b50610084610161565b6040519081526020015b60405180910390f35b3480156100a357600080fd5b506100b76100b236600461132d565b61017e565b60405161008e91906113ee565b3480156100d057600080fd5b5061006d6100df3660046114c6565b6105cb565b3480156100f057600080fd5b50610115604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008e9190611500565b34801561012e57600080fd5b5061006d61013d366004611513565b61097c565b61014a610a90565b61015382610b37565b61015d8282610b9d565b5050565b600061016b610c5f565b5060008051602061229183398151915290565b610186611117565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600392506101cd9150839061155e565b9081526040519081900360200190206006015460000361020b57806040516305c96b5360e01b81526004016102029190611500565b60405180910390fd5b6003848460405161021d92919061157a565b90815260408051918290036020018220610100830182528054909183919082019083908290829061024d9061158a565b80601f01602080910402602001604051908101604052809291908181526020018280546102799061158a565b80156102c65780601f1061029b576101008083540402835291602001916102c6565b820191906000526020600020905b8154815290600101906020018083116102a957829003601f168201915b505050505081526020016001820180546102df9061158a565b80601f016020809104026020016040519081016040528092919081815260200182805461030b9061158a565b80156103585780601f1061032d57610100808354040283529160200191610358565b820191906000526020600020905b81548152906001019060200180831161033b57829003601f168201915b505050505081526020016002820180546103719061158a565b80601f016020809104026020016040519081016040528092919081815260200182805461039d9061158a565b80156103ea5780601f106103bf576101008083540402835291602001916103ea565b820191906000526020600020905b8154815290600101906020018083116103cd57829003601f168201915b505050505081526020016003820180546104039061158a565b80601f016020809104026020016040519081016040528092919081815260200182805461042f9061158a565b801561047c5780601f106104515761010080835404028352916020019161047c565b820191906000526020600020905b81548152906001019060200180831161045f57829003601f168201915b505050505081526020016004820180546104959061158a565b80601f01602080910402602001604051908101604052809291908181526020018280546104c19061158a565b801561050e5780601f106104e35761010080835404028352916020019161050e565b820191906000526020600020905b8154815290600101906020018083116104f157829003601f168201915b505050505081526020016005820180546105279061158a565b80601f01602080910402602001604051908101604052809291908181526020018280546105539061158a565b80156105a05780601f10610575576101008083540402835291602001916105a0565b820191906000526020600020905b81548152906001019060200180831161058357829003601f168201915b5050509190925250505081526040805160208082019092526006939093015483520152949350505050565b6105d581806115c4565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040516003925061061a9150839061155e565b908152604051908190036020019020600601541561064d57806040516341d617b960e01b81526004016102029190611500565b61065a60408301836115c4565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060025460405163bd7fc5eb60e01b81526001600160a01b03909116925063bd7fc5eb91506106be908490600401611500565b6000604051808303816000875af11580156106dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107059190810190611744565b5061071360208401846115c4565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050600154604051630d8ce14b60e21b81526001600160a01b039091169250633633852c9150610777908490600401611500565b6000604051808303816000875af19250505080156107b757506040513d6000823e601f3d908101601f191682016040526107b49190810190611c8e565b60015b61082b573d8080156107e5576040519150601f19603f3d011682016040523d82523d6000602084013e6107ea565b606091505b506107fc8163186a887560e11b610ca8565b1561081c5781604051634c92543b60e01b81526004016102029190611500565b61082581610cd8565b50610976565b6020810151516001600160a01b031633146108715760208101515160405163e69c46a360e01b81523360048201526001600160a01b039091166024820152604401610202565b8060200151606001511561089a57816040516350943b5760e11b81526004016102029190611500565b6108ab6108a686611ebb565b610ce4565b6108bc6108b786611ebb565b610d43565b6108cd6108c886611ebb565b610d94565b8460036108da82806115c4565b6040516108e892919061157a565b90815260405190819003602001902061090182826120c8565b50429050600361091187806115c4565b60405161091f92919061157a565b90815260405190819003602001902060060155337f67a8d5704b8f46127dbda538dafb9c9529e5b4b7a7e92f22c08b212eb703512961095e87806115c4565b60405161096c92919061221e565b60405180910390a2505b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806109c5575080546001600160401b03808416911610155b156109e35760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155600180546001600160a01b038088166001600160a01b0319928316179092556002805492871692909116919091179055610a3d83610dda565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610b1757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b0b600080516020612291833981519152546001600160a01b031690565b6001600160a01b031614155b15610b355760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b158015610b8257600080fd5b505afa158015610b96573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610bf7575060408051601f3d908101601f19168201909252610bf49181019061224d565b60015b610c1f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610202565b6000805160206122918339815191528114610c5057604051632a87526960e21b815260048101829052602401610202565b610c5a8383610e04565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b355760405163703e46dd60e11b815260040160405180910390fd5b60008083806020019051810190610cbf9190612266565b6001600160e01b03198481169116149150505b92915050565b60208101815182018082fd5b610d1d610d0a6040518060400160405280600281526020016110d360f21b815250610e5a565b610d178360600151610e5a565b90610e65565b610d40578060600151604051634e047ab160e11b81526004016102029190611500565b50565b610d60610d538260800151610e5a565b6001600160801b03161590565b15610d4057604051634efdf97760e01b815260206004820152600360248201526274616760e81b6044820152606401610202565b610da4610d538260a00151610e5a565b15610d4057604051634efdf97760e01b815260206004820152600560248201526476616c756560d81b6044820152606401610202565b610de2610e78565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b610e0d82610ec1565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610e5257610c5a8282610f26565b61015d610f9c565b6000610cd282610fbb565b6000610e718383610fcf565b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b3557604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003610ef757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610202565b60008051602061229183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610f43919061155e565b600060405180830381855af49150503d8060008114610f7e576040519150601f19603f3d011682016040523d82523d6000602084013e610f83565b606091505b5091509150610f93858383611019565b95945050505050565b3415610b355760405163b398979f60e01b815260040160405180910390fd5b600080602083019050610e71818451611075565b60006001600160801b038381169083168114610fef576000915050610cd2565b611011610ffc8560801c90565b6110068560801c90565b839081902091201490565b949350505050565b60608261102e5761102982611081565b610e71565b815115801561104557506001600160a01b0384163b155b1561106e57604051639996b31560e01b81526001600160a01b0385166004820152602401610202565b5092915050565b6000610e7183836110aa565b8051156110915780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000610e71838360006001600160801b038311156110db5760405163fee7506f60e01b815260040160405180910390fd5b6001600160801b0382111561110357604051633b6b098d60e01b815260040160405180910390fd5b506001600160801b031660809190911b1790565b604051806040016040528061115b6040518060c001604052806060815260200160608152602001606081526020016060815260200160608152602001606081525090565b81526020016111766040518060200160405280600081525090565b905290565b6001600160a01b0381168114610d4057600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156111c8576111c8611190565b60405290565b60405160a081016001600160401b03811182821017156111c8576111c8611190565b60405161016081016001600160401b03811182821017156111c8576111c8611190565b60405160c081016001600160401b03811182821017156111c8576111c8611190565b604051601f8201601f191681016001600160401b038111828210171561125d5761125d611190565b604052919050565b60006001600160401b0382111561127e5761127e611190565b50601f01601f191660200190565b600061129f61129a84611265565b611235565b90508281528383830111156112b357600080fd5b828260208301376000602084830101529392505050565b600080604083850312156112dd57600080fd5b82356112e88161117b565b915060208301356001600160401b0381111561130357600080fd5b8301601f8101851361131457600080fd5b6113238582356020840161128c565b9150509250929050565b6000806020838503121561134057600080fd5b82356001600160401b038082111561135757600080fd5b818501915085601f83011261136b57600080fd5b81358181111561137a57600080fd5b86602082850101111561138c57600080fd5b60209290920196919550909350505050565b60005b838110156113b95781810151838201526020016113a1565b50506000910152565b600081518084526113da81602086016020860161139e565b601f01601f19169290920160200192915050565b602081526000825160406020840152805160c060608501526114146101208501826113c2565b90506020820151605f198086840301608087015261143283836113c2565b925060408401519150808684030160a087015261144f83836113c2565b925060608401519150808684030160c087015261146c83836113c2565b925060808401519150808684030160e087015261148983836113c2565b925060a08401519350808684030161010087015250506114a981836113c2565b91505060208401516114be6040850182519052565b509392505050565b6000602082840312156114d857600080fd5b81356001600160401b038111156114ee57600080fd5b820160c08185031215610e7157600080fd5b602081526000610e7160208301846113c2565b60008060006060848603121561152857600080fd5b83356115338161117b565b925060208401356115438161117b565b915060408401356115538161117b565b809150509250925092565b6000825161157081846020870161139e565b9190910192915050565b8183823760009101908152919050565b600181811c9082168061159e57607f821691505b6020821081036115be57634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e198436030181126115db57600080fd5b8301803591506001600160401b038211156115f557600080fd5b60200191503681900382131561160a57600080fd5b9250929050565b600082601f83011261162257600080fd5b815161163061129a82611265565b81815284602083860101111561164557600080fd5b61101182602083016020870161139e565b60006001600160401b0382111561166f5761166f611190565b5060051b60200190565b600082601f83011261168a57600080fd5b8151602061169a61129a83611656565b82815260059290921b840181019181810190868411156116b957600080fd5b8286015b848110156116f85780516001600160401b038111156116dc5760008081fd5b6116ea8986838b0101611611565b8452509183019183016116bd565b509695505050505050565b60006020828403121561171557600080fd5b604051602081018181106001600160401b038211171561173757611737611190565b6040529151825250919050565b60006020828403121561175657600080fd5b81516001600160401b038082111561176d57600080fd5b908301906040828603121561178157600080fd5b6117896111a6565b82518281111561179857600080fd5b830160a081880312156117aa57600080fd5b6117b26111ce565b8151848111156117c157600080fd5b6117cd89828501611611565b8252506020820151848111156117e257600080fd5b6117ee89828501611611565b60208301525060408201518481111561180657600080fd5b61181289828501611611565b60408301525060608201518481111561182a57600080fd5b61183689828501611611565b60608301525060808201518481111561184e57600080fd5b61185a89828501611679565b6080830152508252506118708660208501611703565b602082015295945050505050565b600060a0828403121561189057600080fd5b6118986111ce565b905081516001600160401b03808211156118b157600080fd5b6118bd85838601611611565b835260208401519150808211156118d357600080fd5b6118df85838601611611565b602084015260408401519150808211156118f857600080fd5b61190485838601611611565b6040840152606084015191508082111561191d57600080fd5b61192985838601611611565b6060840152608084015191508082111561194257600080fd5b5061194f84828501611611565b60808301525092915050565b600082601f83011261196c57600080fd5b8151602061197c61129a83611656565b82815260059290921b8401810191818101908684111561199b57600080fd5b8286015b848110156116f85780516001600160401b038111156119be5760008081fd5b6119cc8986838b010161187e565b84525091830191830161199f565b600082601f8301126119eb57600080fd5b815160206119fb61129a83611656565b82815260059290921b84018101918181019086841115611a1a57600080fd5b8286015b848110156116f85780516001600160401b0380821115611a3e5760008081fd5b908801906040828b03601f1901811315611a585760008081fd5b611a606111a6565b8784015183811115611a725760008081fd5b611a808d8a83880101611611565b825250908301519082821115611a965760008081fd5b611aa48c898487010161187e565b818901528652505050918301918301611a1e565b600082601f830112611ac957600080fd5b81516020611ad961129a83611656565b82815260059290921b84018101918181019086841115611af857600080fd5b8286015b848110156116f85780516001600160401b0380821115611b1c5760008081fd5b9088019060a0828b03601f1901811315611b365760008081fd5b611b3e6111ce565b8784015183811115611b505760008081fd5b611b5e8d8a83880101611611565b82525060408085015184811115611b755760008081fd5b611b838e8b83890101611611565b8a8401525060608086015185811115611b9c5760008081fd5b611baa8f8c838a0101611611565b8385015250608091508186015185811115611bc55760008081fd5b611bd38f8c838a0101611679565b82850152505082850151925083831115611bed5760008081fd5b611bfb8d8a85880101611679565b908201528652505050918301918301611afc565b600060808284031215611c2157600080fd5b604051608081018181106001600160401b0382111715611c4357611c43611190565b80604052508091508251611c568161117b565b80825250602083015160208201526040830151604082015260608301518015158114611c8157600080fd5b6060919091015292915050565b600060208284031215611ca057600080fd5b81516001600160401b0380821115611cb757600080fd5b9083019060a08286031215611ccb57600080fd5b611cd36111a6565b825182811115611ce257600080fd5b83016101608188031215611cf557600080fd5b611cfd6111f0565b815184811115611d0c57600080fd5b611d1889828501611679565b825250602082015184811115611d2d57600080fd5b611d3989828501611611565b602083015250604082015184811115611d5157600080fd5b611d5d89828501611679565b604083015250606082015184811115611d7557600080fd5b611d818982850161195b565b606083015250608082015184811115611d9957600080fd5b611da5898285016119da565b60808301525060a082015184811115611dbd57600080fd5b611dc9898285016119da565b60a08301525060c082015184811115611de157600080fd5b611ded898285016119da565b60c08301525060e082015184811115611e0557600080fd5b611e11898285016119da565b60e0830152506101008083015185811115611e2b57600080fd5b611e378a8286016119da565b8284015250506101208083015185811115611e5157600080fd5b611e5d8a828601611ab8565b8284015250506101408083015185811115611e7757600080fd5b611e838a828601611679565b82840152505080835250506118708660208501611c0f565b600082601f830112611eac57600080fd5b610e718383356020850161128c565b600060c08236031215611ecd57600080fd5b611ed5611213565b82356001600160401b0380821115611eec57600080fd5b611ef836838701611e9b565b83526020850135915080821115611f0e57600080fd5b611f1a36838701611e9b565b60208401526040850135915080821115611f3357600080fd5b611f3f36838701611e9b565b60408401526060850135915080821115611f5857600080fd5b611f6436838701611e9b565b60608401526080850135915080821115611f7d57600080fd5b611f8936838701611e9b565b608084015260a0850135915080821115611fa257600080fd5b50611faf36828601611e9b565b60a08301525092915050565b601f821115610c5a57600081815260208120601f850160051c81016020861015611fe25750805b601f850160051c820191505b8181101561200157828155600101611fee565b505050505050565b6001600160401b0383111561202057612020611190565b6120348361202e835461158a565b83611fbb565b6000601f84116001811461206857600085156120505750838201355b600019600387901b1c1916600186901b178355610b96565b600083815260209020601f19861690835b828110156120995786850135825560209485019460019092019101612079565b50868210156120b65760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b6120d282836115c4565b6001600160401b038111156120e9576120e9611190565b6120fd816120f7855461158a565b85611fbb565b6000601f82116001811461213157600083156121195750838201355b600019600385901b1c1916600184901b17855561218b565b600085815260209020601f19841690835b828110156121625786850135825560209485019460019092019101612142565b508482101561217f5760001960f88660031b161c19848701351681555b505060018360011b0185555b5050505061219c60208301836115c4565b6121aa818360018601612009565b50506121b960408301836115c4565b6121c7818360028601612009565b50506121d660608301836115c4565b6121e4818360038601612009565b50506121f360808301836115c4565b612201818360048601612009565b505061221060a08301836115c4565b610976818360058601612009565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b60006020828403121561225f57600080fd5b5051919050565b60006020828403121561227857600080fd5b81516001600160e01b031981168114610e7157600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220c52467272a7eb27b5d6cff71c72a0ce6279547ae4733101cfa2d77f1f2e3b1d064736f6c63430008150033" + "code": "0x6080604052600436106100555760003560e01c80634f1ef2861461005a57806352d1902d1461006f5780636170c48a146100975780639c35941a146100c4578063ad3cb1cc146100e4578063c0c53b8b14610122575b600080fd5b61006d6100683660046112c5565b610142565b005b34801561007b57600080fd5b50610084610161565b6040519081526020015b60405180910390f35b3480156100a357600080fd5b506100b76100b2366004611328565b61017e565b60405161008e91906113e9565b3480156100d057600080fd5b5061006d6100df3660046114c1565b6105cb565b3480156100f057600080fd5b50610115604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161008e91906114fb565b34801561012e57600080fd5b5061006d61013d36600461150e565b61099a565b61014a610aae565b61015382610b55565b61015d8282610bbb565b5050565b600061016b610c7d565b50600080516020611cdf83398151915290565b610186611135565b82828080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604051600392506101cd91508390611559565b9081526040519081900360200190206006015460000361020b57806040516305c96b5360e01b815260040161020291906114fb565b60405180910390fd5b6003848460405161021d929190611575565b90815260408051918290036020018220610100830182528054909183919082019083908290829061024d90611585565b80601f016020809104026020016040519081016040528092919081815260200182805461027990611585565b80156102c65780601f1061029b576101008083540402835291602001916102c6565b820191906000526020600020905b8154815290600101906020018083116102a957829003601f168201915b505050505081526020016001820180546102df90611585565b80601f016020809104026020016040519081016040528092919081815260200182805461030b90611585565b80156103585780601f1061032d57610100808354040283529160200191610358565b820191906000526020600020905b81548152906001019060200180831161033b57829003601f168201915b5050505050815260200160028201805461037190611585565b80601f016020809104026020016040519081016040528092919081815260200182805461039d90611585565b80156103ea5780601f106103bf576101008083540402835291602001916103ea565b820191906000526020600020905b8154815290600101906020018083116103cd57829003601f168201915b5050505050815260200160038201805461040390611585565b80601f016020809104026020016040519081016040528092919081815260200182805461042f90611585565b801561047c5780601f106104515761010080835404028352916020019161047c565b820191906000526020600020905b81548152906001019060200180831161045f57829003601f168201915b5050505050815260200160048201805461049590611585565b80601f01602080910402602001604051908101604052809291908181526020018280546104c190611585565b801561050e5780601f106104e35761010080835404028352916020019161050e565b820191906000526020600020905b8154815290600101906020018083116104f157829003601f168201915b5050505050815260200160058201805461052790611585565b80601f016020809104026020016040519081016040528092919081815260200182805461055390611585565b80156105a05780601f10610575576101008083540402835291602001916105a0565b820191906000526020600020905b81548152906001019060200180831161058357829003601f168201915b5050509190925250505081526040805160208082019092526006939093015483520152949350505050565b6105d581806115bf565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506040516003925061061a91508390611559565b908152604051908190036020019020600601541561064d57806040516341d617b960e01b815260040161020291906114fb565b61065a60408301836115bf565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060025460405163bd7fc5eb60e01b81526001600160a01b03909116925063bd7fc5eb91506106be9084906004016114fb565b6000604051808303816000875af11580156106dd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526107059190810190611730565b5061071360208401846115bf565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250506001546040516366874f2560e01b81526001600160a01b0390911692506366874f2591506107779084906004016114fb565b608060405180830381865afa9250505080156107b0575060408051601f3d908101601f191682019092526107ad9181019061186a565b60015b610855573d8080156107de576040519150601f19603f3d011682016040523d82523d6000602084013e6107e3565b606091505b506107f58163186a887560e11b610cc6565b156108155781604051634c92543b60e01b815260040161020291906114fb565b61082681631859e3bb60e11b610cc6565b15610846578160405163046cb69560e21b815260040161020291906114fb565b61084f81610cf6565b506108ba565b80516001600160a01b0316331461089357805160405163e69c46a360e01b81523360048201526001600160a01b039091166024820152604401610202565b8060600151156108b857816040516350943b5760e11b815260040161020291906114fb565b505b6108cb6108c685611903565b610d02565b6108dc6108d785611903565b610d61565b6108ed6108e885611903565b610db2565b8360036108fa82806115bf565b604051610908929190611575565b9081526040519081900360200190206109218282611b10565b50429050600361093186806115bf565b60405161093f929190611575565b90815260405190819003602001902060060155337f67a8d5704b8f46127dbda538dafb9c9529e5b4b7a7e92f22c08b212eb703512961097e86806115bf565b60405161098c929190611c6c565b60405180910390a250505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460019190600160401b900460ff16806109e3575080546001600160401b03808416911610155b15610a015760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b03831617600160401b178155600180546001600160a01b038088166001600160a01b0319928316179092556002805492871692909116919091179055610a5b83610df8565b805468ff0000000000000000191681556040516001600160401b03831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15050505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610b3557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610b29600080516020611cdf833981519152546001600160a01b031690565b6001600160a01b031614155b15610b535760405163703e46dd60e11b815260040160405180910390fd5b565b60005460405163574a81d760e01b81523060048201526001600160a01b0383811660248301529091169063574a81d79060440160006040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b5050505050565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610c15575060408051601f3d908101601f19168201909252610c1291810190611c9b565b60015b610c3d57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610202565b600080516020611cdf8339815191528114610c6e57604051632a87526960e21b815260048101829052602401610202565b610c788383610e22565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b535760405163703e46dd60e11b815260040160405180910390fd5b60008083806020019051810190610cdd9190611cb4565b6001600160e01b03198481169116149150505b92915050565b60208101815182018082fd5b610d3b610d286040518060400160405280600281526020016110d360f21b815250610e78565b610d358360600151610e78565b90610e83565b610d5e578060600151604051634e047ab160e11b815260040161020291906114fb565b50565b610d7e610d718260800151610e78565b6001600160801b03161590565b15610d5e57604051634efdf97760e01b815260206004820152600360248201526274616760e81b6044820152606401610202565b610dc2610d718260a00151610e78565b15610d5e57604051634efdf97760e01b815260206004820152600560248201526476616c756560d81b6044820152606401610202565b610e00610e96565b600080546001600160a01b0319166001600160a01b0392909216919091179055565b610e2b82610edf565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115610e7057610c788282610f44565b61015d610fba565b6000610cf082610fd9565b6000610e8f8383610fed565b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b5357604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b600003610f1557604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610202565b600080516020611cdf83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051610f619190611559565b600060405180830381855af49150503d8060008114610f9c576040519150601f19603f3d011682016040523d82523d6000602084013e610fa1565b606091505b5091509150610fb1858383611037565b95945050505050565b3415610b535760405163b398979f60e01b815260040160405180910390fd5b600080602083019050610e8f818451611093565b60006001600160801b03838116908316811461100d576000915050610cf0565b61102f61101a8560801c90565b6110248560801c90565b839081902091201490565b949350505050565b60608261104c576110478261109f565b610e8f565b815115801561106357506001600160a01b0384163b155b1561108c57604051639996b31560e01b81526001600160a01b0385166004820152602401610202565b5092915050565b6000610e8f83836110c8565b8051156110af5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b6000610e8f838360006001600160801b038311156110f95760405163fee7506f60e01b815260040160405180910390fd5b6001600160801b0382111561112157604051633b6b098d60e01b815260040160405180910390fd5b506001600160801b031660809190911b1790565b60405180604001604052806111796040518060c001604052806060815260200160608152602001606081526020016060815260200160608152602001606081525090565b81526020016111946040518060200160405280600081525090565b905290565b6001600160a01b0381168114610d5e57600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156111e6576111e66111ae565b60405290565b60405160a081016001600160401b03811182821017156111e6576111e66111ae565b60405160c081016001600160401b03811182821017156111e6576111e66111ae565b604051601f8201601f191681016001600160401b0381118282101715611258576112586111ae565b604052919050565b60006001600160401b03821115611279576112796111ae565b50601f01601f191660200190565b600061129a61129584611260565b611230565b90508281528383830111156112ae57600080fd5b828260208301376000602084830101529392505050565b600080604083850312156112d857600080fd5b82356112e381611199565b915060208301356001600160401b038111156112fe57600080fd5b8301601f8101851361130f57600080fd5b61131e85823560208401611287565b9150509250929050565b6000806020838503121561133b57600080fd5b82356001600160401b038082111561135257600080fd5b818501915085601f83011261136657600080fd5b81358181111561137557600080fd5b86602082850101111561138757600080fd5b60209290920196919550909350505050565b60005b838110156113b457818101518382015260200161139c565b50506000910152565b600081518084526113d5816020860160208601611399565b601f01601f19169290920160200192915050565b602081526000825160406020840152805160c0606085015261140f6101208501826113bd565b90506020820151605f198086840301608087015261142d83836113bd565b925060408401519150808684030160a087015261144a83836113bd565b925060608401519150808684030160c087015261146783836113bd565b925060808401519150808684030160e087015261148483836113bd565b925060a08401519350808684030161010087015250506114a481836113bd565b91505060208401516114b96040850182519052565b509392505050565b6000602082840312156114d357600080fd5b81356001600160401b038111156114e957600080fd5b820160c08185031215610e8f57600080fd5b602081526000610e8f60208301846113bd565b60008060006060848603121561152357600080fd5b833561152e81611199565b9250602084013561153e81611199565b9150604084013561154e81611199565b809150509250925092565b6000825161156b818460208701611399565b9190910192915050565b8183823760009101908152919050565b600181811c9082168061159957607f821691505b6020821081036115b957634e487b7160e01b600052602260045260246000fd5b50919050565b6000808335601e198436030181126115d657600080fd5b8301803591506001600160401b038211156115f057600080fd5b60200191503681900382131561160557600080fd5b9250929050565b600082601f83011261161d57600080fd5b815161162b61129582611260565b81815284602083860101111561164057600080fd5b61102f826020830160208701611399565b600082601f83011261166257600080fd5b815160206001600160401b038083111561167e5761167e6111ae565b8260051b61168d838201611230565b93845285810183019383810190888611156116a757600080fd5b84880192505b858310156116e3578251848111156116c55760008081fd5b6116d38a87838c010161160c565b83525091840191908401906116ad565b98975050505050505050565b60006020828403121561170157600080fd5b604051602081018181106001600160401b0382111715611723576117236111ae565b6040529151825250919050565b60006020828403121561174257600080fd5b81516001600160401b038082111561175957600080fd5b908301906040828603121561176d57600080fd5b6117756111c4565b82518281111561178457600080fd5b830160a0818803121561179657600080fd5b61179e6111ec565b8151848111156117ad57600080fd5b6117b98982850161160c565b8252506020820151848111156117ce57600080fd5b6117da8982850161160c565b6020830152506040820151848111156117f257600080fd5b6117fe8982850161160c565b60408301525060608201518481111561181657600080fd5b6118228982850161160c565b60608301525060808201518481111561183a57600080fd5b61184689828501611651565b60808301525082525061185c86602085016116ef565b602082015295945050505050565b60006080828403121561187c57600080fd5b604051608081018181106001600160401b038211171561189e5761189e6111ae565b60405282516118ac81611199565b808252506020830151602082015260408301516040820152606083015180151581146118d757600080fd5b60608201529392505050565b600082601f8301126118f457600080fd5b610e8f83833560208501611287565b600060c0823603121561191557600080fd5b61191d61120e565b82356001600160401b038082111561193457600080fd5b611940368387016118e3565b8352602085013591508082111561195657600080fd5b611962368387016118e3565b6020840152604085013591508082111561197b57600080fd5b611987368387016118e3565b604084015260608501359150808211156119a057600080fd5b6119ac368387016118e3565b606084015260808501359150808211156119c557600080fd5b6119d1368387016118e3565b608084015260a08501359150808211156119ea57600080fd5b506119f7368286016118e3565b60a08301525092915050565b601f821115610c7857600081815260208120601f850160051c81016020861015611a2a5750805b601f850160051c820191505b81811015611a4957828155600101611a36565b505050505050565b6001600160401b03831115611a6857611a686111ae565b611a7c83611a768354611585565b83611a03565b6000601f841160018114611ab05760008515611a985750838201355b600019600387901b1c1916600186901b178355610bb4565b600083815260209020601f19861690835b82811015611ae15786850135825560209485019460019092019101611ac1565b5086821015611afe5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b611b1a82836115bf565b6001600160401b03811115611b3157611b316111ae565b611b4581611b3f8554611585565b85611a03565b6000601f821160018114611b795760008315611b615750838201355b600019600385901b1c1916600184901b178555611bd3565b600085815260209020601f19841690835b82811015611baa5786850135825560209485019460019092019101611b8a565b5084821015611bc75760001960f88660031b161c19848701351681555b505060018360011b0185555b50505050611be460208301836115bf565b611bf2818360018601611a51565b5050611c0160408301836115bf565b611c0f818360028601611a51565b5050611c1e60608301836115bf565b611c2c818360038601611a51565b5050611c3b60808301836115bf565b611c49818360048601611a51565b5050611c5860a08301836115bf565b611c66818360058601611a51565b50505050565b60208152816020820152818360408301376000818301604090810191909152601f909201601f19160101919050565b600060208284031215611cad57600080fd5b5051919050565b600060208284031215611cc657600080fd5b81516001600160e01b031981168114610e8f57600080fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca26469706673582212205cc9d1aba8d1c6edc104583918445408bfc063f7f0a3e507f9614ff8b814d02964736f6c63430008140033" } } } diff --git a/indy-besu/smart_contracts/contracts-ts/DidRegistry.ts b/indy-besu/smart_contracts/contracts-ts/DidRegistry.ts index 07b5af281..d7bc5eef8 100644 --- a/indy-besu/smart_contracts/contracts-ts/DidRegistry.ts +++ b/indy-besu/smart_contracts/contracts-ts/DidRegistry.ts @@ -26,7 +26,7 @@ export class DidRegistry extends Contract { public async resolveDid(id: string): Promise { const didDocumentStorage = await this.instance.resolveDid(id) return { - document: mapDidDocument(didDocumentStorage.didDocument), + document: mapDidDocument(didDocumentStorage.document), metadata: mapDidMetadata(didDocumentStorage.metadata), } } diff --git a/indy-besu/smart_contracts/contracts-ts/UniversalDidReolver.ts b/indy-besu/smart_contracts/contracts-ts/UniversalDidReolver.ts index bd162f7f5..9025b0d44 100644 --- a/indy-besu/smart_contracts/contracts-ts/UniversalDidReolver.ts +++ b/indy-besu/smart_contracts/contracts-ts/UniversalDidReolver.ts @@ -2,7 +2,7 @@ import { Contract } from '../utils' import { DidDocument, DidMetadata, mapDidDocument, mapDidMetadata } from './types' export class UniversalDidResolver extends Contract { - public static readonly defaultAddress = '0x0000000000000000000000000000000000003030' + public static readonly defaultAddress = '0x000000000000000000000000000000000019999' constructor(sender?: any) { super(UniversalDidResolver.name, sender) diff --git a/indy-besu/smart_contracts/contracts/cl/CredentialDefinitionRegistry.sol b/indy-besu/smart_contracts/contracts/cl/CredentialDefinitionRegistry.sol index c18183533..cded0bc11 100644 --- a/indy-besu/smart_contracts/contracts/cl/CredentialDefinitionRegistry.sol +++ b/indy-besu/smart_contracts/contracts/cl/CredentialDefinitionRegistry.sol @@ -51,13 +51,13 @@ contract CredentialDefinitionRegistry is CredentialDefinitionRegistryInterface, } function initialize( - address issuerValidatorAddress, - address schemaRegistryAddress, - address upgradeControlAddress + address upgradeControlAddress, + address didResolverAddress, + address schemaRegistryAddress ) public reinitializer(1) { - _didResolver = UniversalDidResolverInterface(issuerValidatorAddress); - _schemaRegistry = SchemaRegistryInterface(schemaRegistryAddress); _initializeUpgradeControl(upgradeControlAddress); + _didResolver = UniversalDidResolverInterface(didResolverAddress); + _schemaRegistry = SchemaRegistryInterface(schemaRegistryAddress); } /// @inheritdoc CredentialDefinitionRegistryInterface diff --git a/indy-besu/smart_contracts/contracts/cl/SchemaRegistry.sol b/indy-besu/smart_contracts/contracts/cl/SchemaRegistry.sol index da4dacd02..07979c40a 100644 --- a/indy-besu/smart_contracts/contracts/cl/SchemaRegistry.sol +++ b/indy-besu/smart_contracts/contracts/cl/SchemaRegistry.sol @@ -36,9 +36,9 @@ contract SchemaRegistry is SchemaRegistryInterface, ControlledUpgradeable, CLReg _; } - function initialize(address didRegistryAddress, address upgradeControlAddress) public reinitializer(1) { - _didResolver = UniversalDidResolverInterface(didRegistryAddress); + function initialize(address upgradeControlAddress, address didResolverAddress) public reinitializer(1) { _initializeUpgradeControl(upgradeControlAddress); + _didResolver = UniversalDidResolverInterface(didResolverAddress); } /// @inheritdoc SchemaRegistryInterface diff --git a/indy-besu/smart_contracts/contracts/did/UniversalDidResolver.sol b/indy-besu/smart_contracts/contracts/did/UniversalDidResolver.sol index 5528849cb..7c049d0c1 100644 --- a/indy-besu/smart_contracts/contracts/did/UniversalDidResolver.sol +++ b/indy-besu/smart_contracts/contracts/did/UniversalDidResolver.sol @@ -21,13 +21,13 @@ contract UniversalDidResolver is UniversalDidResolverInterface, ControlledUpgrad EthereumDIDRegistry internal _ethereumDIDRegistry; function initialize( - address ethereumDIDRegistryAddress, + address upgradeControlAddress, address didRegistryddress, - address upgradeControlAddress + address ethereumDIDRegistryAddress ) public reinitializer(1) { - _ethereumDIDRegistry = EthereumDIDRegistry(ethereumDIDRegistryAddress); - _didRegistry = DidRegistryInterface(didRegistryddress); _initializeUpgradeControl(upgradeControlAddress); + _didRegistry = DidRegistryInterface(didRegistryddress); + _ethereumDIDRegistry = EthereumDIDRegistry(ethereumDIDRegistryAddress); } /// @inheritdoc UniversalDidResolverInterface diff --git a/indy-besu/smart_contracts/package.json b/indy-besu/smart_contracts/package.json index 4e1d90ca8..bf270ad7e 100644 --- a/indy-besu/smart_contracts/package.json +++ b/indy-besu/smart_contracts/package.json @@ -22,7 +22,7 @@ "demo/upgrade": "yarn run-on-besu demos/upgrade-control.ts", "genesis/generate": "ts-node scripts/genesis/generate.ts", "postinstall": "cd ../../ && husky install indy-besu/smart_contracts/.husky", - "solc-compile": "solc -o compiled-contracts --optimize --bin-runtime --evm-version=constantinople @dk1a=$(pwd)/node_modules/@dk1a @openzeppelin=$(pwd)/node_modules/@openzeppelin contracts/**/*.sol node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol" + "solc-compile": "solc -o compiled-contracts --optimize --bin-runtime --evm-version=constantinople @dk1a=$(pwd)/node_modules/@dk1a @openzeppelin=$(pwd)/node_modules/@openzeppelin ethr-did-registry=$(pwd)/node_modules/ethr-did-registry contracts/**/*.sol node_modules/@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol" }, "license": "Apache-2.0", "dependencies": { diff --git a/indy-besu/smart_contracts/scripts/genesis/config.ts b/indy-besu/smart_contracts/scripts/genesis/config.ts index 72878ec52..615420a2c 100644 --- a/indy-besu/smart_contracts/scripts/genesis/config.ts +++ b/indy-besu/smart_contracts/scripts/genesis/config.ts @@ -4,8 +4,10 @@ import { DidRegexConfig, DidsConfig, DidValidatorConfig, + EthereumDidRegistryConfig, RolesConfig, SchemasConfig, + UniversalDidResolverConfig, ValidatorsConfig, } from './contracts' import { UpgradeControlConfig } from './contracts/upgradeControl' @@ -20,8 +22,10 @@ export interface Config { didValidator: DidValidatorConfig didRegistry: DidsConfig didRegex: DidRegexConfig + ethereumDidRegistry: EthereumDidRegistryConfig roleControl: RolesConfig schemaRegistry: SchemasConfig + universalDidResolver: UniversalDidResolverConfig upgradeControl: UpgradeControlConfig validatorControl: ValidatorsConfig } @@ -36,6 +40,8 @@ const contractsAddresses = { validators: '0x0000000000000000000000000000000000007777', accountControl: '0x0000000000000000000000000000000000008888', upgradeControl: '0x0000000000000000000000000000000000009999', + universalDidResolver: '0x000000000000000000000000000000000019999', + ethereumDIDRegistry: '0x0000000000000000000000000000000000018888', } export const config: Config = { @@ -54,7 +60,7 @@ export const config: Config = { description: 'Smart contract to manage credential definitions', data: { credentialDefinitions: [], - didRegistryAddress: contractsAddresses.didRegistry, + universalDidResolverAddress: contractsAddresses.universalDidResolver, schemaRegistryAddress: contractsAddresses.schemas, upgradeControlAddress: contractsAddresses.upgradeControl, }, @@ -80,6 +86,11 @@ export const config: Config = { upgradeControlAddress: contractsAddresses.upgradeControl, }, }, + ethereumDidRegistry: { + name: 'EthereumDidRegistry', + address: contractsAddresses.ethereumDIDRegistry, + description: 'Ethereum registry for ERC-1056 ethr did methods', + }, roleControl: { name: 'RoleControl', address: contractsAddresses.roles, @@ -121,6 +132,16 @@ export const config: Config = { description: 'Smart contract to manage schemas', data: { schemas: [], + universalDidResolverAddress: contractsAddresses.universalDidResolver, + upgradeControlAddress: contractsAddresses.upgradeControl, + }, + }, + universalDidResolver: { + name: 'UniversalDidResolver', + address: contractsAddresses.universalDidResolver, + description: 'Smart contract to resolve DIDs from various DID registries', + data: { + etheriumDidRegistryAddress: contractsAddresses.ethereumDIDRegistry, didRegistryAddress: contractsAddresses.didRegistry, upgradeControlAddress: contractsAddresses.upgradeControl, }, diff --git a/indy-besu/smart_contracts/scripts/genesis/contracts/credentialDefinitionRegistry.ts b/indy-besu/smart_contracts/scripts/genesis/contracts/credentialDefinitionRegistry.ts index 37aceb548..5a989ae18 100644 --- a/indy-besu/smart_contracts/scripts/genesis/contracts/credentialDefinitionRegistry.ts +++ b/indy-besu/smart_contracts/scripts/genesis/contracts/credentialDefinitionRegistry.ts @@ -6,7 +6,7 @@ import { buildProxySection, slots } from '../helpers' export interface CredentialDefinitionsConfig extends ContractConfig { data: { credentialDefinitions: Array<{ id: string; data: { name: string } }> - didRegistryAddress: string + universalDidResolverAddress: string schemaRegistryAddress: string upgradeControlAddress: string } @@ -16,11 +16,11 @@ export function credentialDefinitionRegistry() { const { name, address, description, data } = config.credentialDefinitionRegistry const storage: any = {} - // address of upgrade control contact stored in slot 2 + // address of upgrade control contact stored in slot 0 storage[slots['0']] = padLeft(data.upgradeControlAddress, 64) - // address of DID registry contact stored in slot 0 - storage[slots['1']] = padLeft(data.didRegistryAddress, 64) - // address of schema registry contact stored in slot 1 + // address of DID registry contact stored in slot 1 + storage[slots['1']] = padLeft(data.universalDidResolverAddress, 64) + // address of schema registry contact stored in slot 2 storage[slots['2']] = padLeft(data.schemaRegistryAddress, 64) return buildProxySection(name, address, description, storage) } diff --git a/indy-besu/smart_contracts/scripts/genesis/contracts/ethereumDidRegistry.ts b/indy-besu/smart_contracts/scripts/genesis/contracts/ethereumDidRegistry.ts new file mode 100644 index 000000000..a49c55fef --- /dev/null +++ b/indy-besu/smart_contracts/scripts/genesis/contracts/ethereumDidRegistry.ts @@ -0,0 +1,12 @@ +import { config } from '../config' +import { ContractConfig } from '../contractConfig' +import { buildSection } from '../helpers' + +export interface EthereumDidRegistryConfig extends ContractConfig {} + +export function ethereumDidRegistry() { + const { name, address, description } = config.ethereumDidRegistry + const storage: any = {} + + return buildSection(name, address, description, storage) +} diff --git a/indy-besu/smart_contracts/scripts/genesis/contracts/index.ts b/indy-besu/smart_contracts/scripts/genesis/contracts/index.ts index 2e619e2ed..a15ea097f 100644 --- a/indy-besu/smart_contracts/scripts/genesis/contracts/index.ts +++ b/indy-besu/smart_contracts/scripts/genesis/contracts/index.ts @@ -3,7 +3,9 @@ export * from './credentialDefinitionRegistry' export * from './didRegistry' export * from './didRegex' export * from './didValidator' +export * from './ethereumDidRegistry' export * from './roleControl' export * from './schemaRegistry' +export * from './universalDidResolver' export * from './upgradeControl' export * from './validatorControl' diff --git a/indy-besu/smart_contracts/scripts/genesis/contracts/schemaRegistry.ts b/indy-besu/smart_contracts/scripts/genesis/contracts/schemaRegistry.ts index 239202686..1e7511420 100644 --- a/indy-besu/smart_contracts/scripts/genesis/contracts/schemaRegistry.ts +++ b/indy-besu/smart_contracts/scripts/genesis/contracts/schemaRegistry.ts @@ -6,7 +6,7 @@ import { buildProxySection, slots } from '../helpers' export interface SchemasConfig extends ContractConfig { data: { schemas: Array<{ id: string; data: { name: string } }> - didRegistryAddress: string + universalDidResolverAddress: string upgradeControlAddress: string } } @@ -15,9 +15,9 @@ export function schemaRegistry() { const { name, address, description, data } = config.schemaRegistry const storage: any = {} - // address of upgrade control contact stored in slot 1 + // address of upgrade control contact stored in slot 0 storage[slots['0']] = padLeft(data.upgradeControlAddress, 64) - // address of DID registry contact stored in slot 0 - storage[slots['1']] = padLeft(data.didRegistryAddress, 64) + // address of DID resolver contact stored in slot 1 + storage[slots['1']] = padLeft(data.universalDidResolverAddress, 64) return buildProxySection(name, address, description, storage) } diff --git a/indy-besu/smart_contracts/scripts/genesis/contracts/universalDidResolver.ts b/indy-besu/smart_contracts/scripts/genesis/contracts/universalDidResolver.ts new file mode 100644 index 000000000..9f9bcdb33 --- /dev/null +++ b/indy-besu/smart_contracts/scripts/genesis/contracts/universalDidResolver.ts @@ -0,0 +1,25 @@ +import { padLeft } from 'web3-utils' +import { config } from '../config' +import { ContractConfig } from '../contractConfig' +import { buildProxySection, slots } from '../helpers' + +export interface UniversalDidResolverConfig extends ContractConfig { + data: { + didRegistryAddress: string + etheriumDidRegistryAddress: string + upgradeControlAddress: string + } +} + +export function universalDidResolver() { + const { name, address, description, data } = config.universalDidResolver + const storage: any = {} + + // address of upgrade control contact stored in slot 0 + storage[slots['0']] = padLeft(data.upgradeControlAddress, 64) + // address of DID registry contact stored in slot 1 + storage[slots['1']] = padLeft(data.didRegistryAddress, 64) + // address of etherium DID registry contact stored in slot 2 + storage[slots['2']] = padLeft(data.etheriumDidRegistryAddress, 64) + return buildProxySection(name, address, description, storage) +} diff --git a/indy-besu/smart_contracts/scripts/genesis/generate.ts b/indy-besu/smart_contracts/scripts/genesis/generate.ts index 689bfdec0..af537a402 100644 --- a/indy-besu/smart_contracts/scripts/genesis/generate.ts +++ b/indy-besu/smart_contracts/scripts/genesis/generate.ts @@ -6,8 +6,10 @@ import { didRegex, didRegistry, didValidator, + ethereumDidRegistry, roleControl, schemaRegistry, + universalDidResolver, upgradeControl, validatorControl, } from './contracts' @@ -21,6 +23,8 @@ function main() { ...didRegex(), ...didValidator(), ...didRegistry(), + ...ethereumDidRegistry(), + ...universalDidResolver(), ...schemaRegistry(), ...credentialDefinitionRegistry(), } diff --git a/indy-besu/smart_contracts/test/utils/contract-helpers.ts b/indy-besu/smart_contracts/test/utils/contract-helpers.ts index 07bcf1244..7110182e0 100644 --- a/indy-besu/smart_contracts/test/utils/contract-helpers.ts +++ b/indy-besu/smart_contracts/test/utils/contract-helpers.ts @@ -64,7 +64,7 @@ export async function deployUniversalDidResolver() { const ethereumDIDRegistry = await new EthereumDIDRegistry().deploy() const universalDidReolver = await new TestableUniversalDidResolver().deployProxy({ - params: [ethereumDIDRegistry.address, didRegistry.address, ZERO_ADDRESS], + params: [ZERO_ADDRESS, didRegistry.address, ethereumDIDRegistry.address], }) return { universalDidReolver, ethereumDIDRegistry, didRegistry, testAccounts } @@ -73,7 +73,7 @@ export async function deployUniversalDidResolver() { export async function deploySchemaRegistry() { const { universalDidReolver, didRegistry, testAccounts } = await deployUniversalDidResolver() const schemaRegistry = await new TestableSchemaRegistry().deployProxy({ - params: [universalDidReolver.address, ZERO_ADDRESS], + params: [ZERO_ADDRESS, universalDidReolver.address], }) return { universalDidReolver, didRegistry, schemaRegistry, testAccounts } @@ -82,7 +82,7 @@ export async function deploySchemaRegistry() { export async function deployCredentialDefinitionRegistry() { const { universalDidReolver, didRegistry, schemaRegistry, testAccounts } = await deploySchemaRegistry() const credentialDefinitionRegistry = await new TestableCredentialDefinitionRegistry().deployProxy({ - params: [universalDidReolver.address, schemaRegistry.address, ZERO_ADDRESS], + params: [ZERO_ADDRESS, universalDidReolver.address, schemaRegistry.address], }) return { credentialDefinitionRegistry, universalDidReolver, didRegistry, schemaRegistry, testAccounts }