UNPKG

@secure-ci/core

Version:

Smart contracts for the Secure Contract Interaction protocol

553 lines (552 loc) 41.6 kB
{ "_format": "hh-sol-artifact-1", "contractName": "SciRegistrar", "sourceName": "contracts/Registrars/SciRegistrar.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "_sciRegistry", "type": "address" }, { "internalType": "uint48", "name": "initialDelay", "type": "uint48" }, { "internalType": "address", "name": "_initialDefaultAdmin", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessControlBadConfirmation", "type": "error" }, { "inputs": [ { "internalType": "uint48", "name": "schedule", "type": "uint48" } ], "name": "AccessControlEnforcedDefaultAdminDelay", "type": "error" }, { "inputs": [], "name": "AccessControlEnforcedDefaultAdminRules", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "defaultAdmin", "type": "address" } ], "name": "AccessControlInvalidDefaultAdmin", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bytes32", "name": "neededRole", "type": "bytes32" } ], "name": "AccessControlUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "uint8", "name": "bits", "type": "uint8" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "SafeCastOverflowedUintDowncast", "type": "error" }, { "anonymous": false, "inputs": [], "name": "DefaultAdminDelayChangeCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint48", "name": "newDelay", "type": "uint48" }, { "indexed": false, "internalType": "uint48", "name": "effectSchedule", "type": "uint48" } ], "name": "DefaultAdminDelayChangeScheduled", "type": "event" }, { "anonymous": false, "inputs": [], "name": "DefaultAdminTransferCanceled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAdmin", "type": "address" }, { "indexed": false, "internalType": "uint48", "name": "acceptSchedule", "type": "uint48" } ], "name": "DefaultAdminTransferScheduled", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "previousAdminRole", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "newAdminRole", "type": "bytes32" } ], "name": "RoleAdminChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleGranted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": true, "internalType": "address", "name": "sender", "type": "address" } ], "name": "RoleRevoked", "type": "event" }, { "inputs": [], "name": "DEFAULT_ADMIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "REGISTER_DOMAIN_ROLE", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "acceptDefaultAdminTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "beginDefaultAdminTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "cancelDefaultAdminTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint48", "name": "newDelay", "type": "uint48" } ], "name": "changeDefaultAdminDelay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "defaultAdmin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultAdminDelay", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "defaultAdminDelayIncreaseWait", "outputs": [ { "internalType": "uint48", "name": "", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" } ], "name": "getRoleAdmin", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "grantRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "hasRole", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingDefaultAdmin", "outputs": [ { "internalType": "address", "name": "newAdmin", "type": "address" }, { "internalType": "uint48", "name": "schedule", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pendingDefaultAdminDelay", "outputs": [ { "internalType": "uint48", "name": "newDelay", "type": "uint48" }, { "internalType": "uint48", "name": "schedule", "type": "uint48" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "bytes32", "name": "domainHash", "type": "bytes32" } ], "name": "registerDomain", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "bytes32", "name": "domainHash", "type": "bytes32" }, { "internalType": "contract IVerifier", "name": "verifier", "type": "address" } ], "name": "registerDomainWithVerifier", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "registry", "outputs": [ { "internalType": "contract ISciRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "renounceRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "role", "type": "bytes32" }, { "internalType": "address", "name": "account", "type": "address" } ], "name": "revokeRole", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rollbackDefaultAdminDelay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60a060405234801561001057600080fd5b50604051611f8c380380611f8c83398181016040528101906100329190610430565b8181600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a65760006040517fc22c802200000000000000000000000000000000000000000000000000000000815260040161009d9190610492565b60405180910390fd5b816001601a6101000a81548165ffffffffffff021916908365ffffffffffff1602179055506100de6000801b8261011d60201b60201c565b5050508273ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050506104ad565b60008060001b83036101de57600073ffffffffffffffffffffffffffffffffffffffff1661014f6101f660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161461019c576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6101ee838361022060201b60201c565b905092915050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610232838361031d60201b60201c565b61031257600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506102af61038760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050610317565b600090505b92915050565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600033905090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006103bf82610394565b9050919050565b6103cf816103b4565b81146103da57600080fd5b50565b6000815190506103ec816103c6565b92915050565b600065ffffffffffff82169050919050565b61040d816103f2565b811461041857600080fd5b50565b60008151905061042a81610404565b92915050565b6000806000606084860312156104495761044861038f565b5b6000610457868287016103dd565b93505060206104688682870161041b565b9250506040610479868287016103dd565b9150509250925092565b61048c816103b4565b82525050565b60006020820190506104a76000830184610483565b92915050565b608051611ab66104d66000396000818161063e0152818161079601526109fb0152611ab66000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063cc8463c81161007c578063cc8463c814610340578063cefc14291461035e578063cf6eefb714610368578063d547741f14610387578063d602b9fd146103a3578063dd738e6c146103ad57610142565b80638da5cb5b1461029957806391d14854146102b7578063a1eda53c146102e7578063a217fddf14610306578063a8c008611461032457610142565b80632f2ff15d1161010a5780632f2ff15d146101ed57806336568abe14610209578063634e93da14610225578063649a5ec7146102415780637b1039991461025d57806384ef8ffc1461027b57610142565b806301ffc9a714610147578063022d63fb146101775780630aa6220b14610195578063248a9ca31461019f5780632a3fea62146101cf575b600080fd5b610161600480360381019061015c91906114bb565b6103c9565b60405161016e9190611503565b60405180910390f35b61017f610443565b60405161018c919061153f565b60405180910390f35b61019d61044e565b005b6101b960048036038101906101b49190611590565b610466565b6040516101c691906115cc565b60405180910390f35b6101d7610485565b6040516101e491906115cc565b60405180910390f35b61020760048036038101906102029190611645565b6104a9565b005b610223600480360381019061021e9190611645565b6104f3565b005b61023f600480360381019061023a9190611685565b610608565b005b61025b600480360381019061025691906116de565b610622565b005b61026561063c565b604051610272919061176a565b60405180910390f35b610283610660565b6040516102909190611794565b60405180910390f35b6102a161068a565b6040516102ae9190611794565b60405180910390f35b6102d160048036038101906102cc9190611645565b610699565b6040516102de9190611503565b60405180910390f35b6102ef610703565b6040516102fd9291906117af565b60405180910390f35b61030e610763565b60405161031b91906115cc565b60405180910390f35b61033e600480360381019061033991906117d8565b61076a565b005b610348610826565b604051610355919061153f565b60405180910390f35b610366610894565b005b61037061092a565b60405161037e929190611818565b60405180910390f35b6103a1600480360381019061039c9190611645565b61096d565b005b6103ab6109b7565b005b6103c760048036038101906103c2919061187f565b6109cf565b005b60007f31498786000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043c575061043b82610a8e565b5b9050919050565b600062069780905090565b6000801b61045b81610b08565b610463610b1c565b50565b6000806000838152602001908152602001600020600101549050919050565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c6881565b6000801b82036104e5576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104ef8282610b29565b5050565b6000801b821480156105375750610508610660565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156105fa5760008061054761092a565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158061058d575061058b81610b4b565b155b8061059e575061059c81610b60565b155b156105e057806040517f19ca5ebb0000000000000000000000000000000000000000000000000000000081526004016105d7919061153f565b60405180910390fd5b600160146101000a81549065ffffffffffff021916905550505b6106048282610b74565b5050565b6000801b61061581610b08565b61061e82610bef565b5050565b6000801b61062f81610b08565b61063882610c6a565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610694610660565b905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806002601a9054906101000a900465ffffffffffff16905061072681610b4b565b8015610738575061073681610b60565b155b6107445760008061075b565b600260149054906101000a900465ffffffffffff16815b915091509091565b6000801b81565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c6861079481610b08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a8c0086184846040518363ffffffff1660e01b81526004016107ef9291906118d2565b600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b50505050505050565b6000806002601a9054906101000a900465ffffffffffff16905061084981610b4b565b801561085a575061085981610b60565b5b610878576001601a9054906101000a900465ffffffffffff1661088e565b600260149054906101000a900465ffffffffffff165b91505090565b600061089e61092a565b5090508073ffffffffffffffffffffffffffffffffffffffff166108c0610cd1565b73ffffffffffffffffffffffffffffffffffffffff161461091f576108e3610cd1565b6040517fc22c80220000000000000000000000000000000000000000000000000000000081526004016109169190611794565b60405180910390fd5b610927610cd9565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160149054906101000a900465ffffffffffff16915091509091565b6000801b82036109a9576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109b38282610da8565b5050565b6000801b6109c481610b08565b6109cc610dca565b50565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c686109f981610b08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd738e6c8585856040518463ffffffff1660e01b8152600401610a569392919061191c565b600060405180830381600087803b158015610a7057600080fd5b505af1158015610a84573d6000803e3d6000fd5b5050505050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b015750610b0082610dd7565b5b9050919050565b610b1981610b14610cd1565b610e41565b50565b610b27600080610e92565b565b610b3282610466565b610b3b81610b08565b610b458383610f82565b50505050565b6000808265ffffffffffff1614159050919050565b6000428265ffffffffffff16109050919050565b610b7c610cd1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610be0576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bea828261104f565b505050565b6000610bf9610826565b610c02426110d2565b610c0c9190611982565b9050610c18828261112c565b8173ffffffffffffffffffffffffffffffffffffffff167f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed682604051610c5e919061153f565b60405180910390a25050565b6000610c75826111df565b610c7e426110d2565b610c889190611982565b9050610c948282610e92565b7ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b8282604051610cc59291906117af565b60405180910390a15050565b600033905090565b600080610ce461092a565b91509150610cf181610b4b565b1580610d035750610d0181610b60565b155b15610d4557806040517f19ca5ebb000000000000000000000000000000000000000000000000000000008152600401610d3c919061153f565b60405180910390fd5b610d596000801b610d54610660565b61104f565b50610d676000801b83610f82565b50600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160146101000a81549065ffffffffffff02191690555050565b610db182610466565b610dba81610b08565b610dc4838361104f565b50505050565b610dd560008061112c565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610e4b8282610699565b610e8e5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610e859291906118d2565b60405180910390fd5b5050565b60006002601a9054906101000a900465ffffffffffff169050610eb481610b4b565b15610f3357610ec281610b60565b15610f0557600260149054906101000a900465ffffffffffff166001601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550610f32565b7f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec560405160405180910390a15b5b82600260146101000a81548165ffffffffffff021916908365ffffffffffff160217905550816002601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b60008060001b830361103d57600073ffffffffffffffffffffffffffffffffffffffff16610fae610660565b73ffffffffffffffffffffffffffffffffffffffff1614610ffb576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b611047838361123e565b905092915050565b60008060001b831480156110955750611066610660565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156110c057600260006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6110ca838361132f565b905092915050565b600065ffffffffffff8016821115611124576030826040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260040161111b929190611a1d565b60405180910390fd5b819050919050565b600061113661092a565b91505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055506111a881610b4b565b156111da577f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510960405160405180910390a15b505050565b6000806111ea610826565b90508065ffffffffffff168365ffffffffffff161161121457828161120f9190611a46565b611236565b6112358365ffffffffffff16611228610443565b65ffffffffffff16611421565b5b915050919050565b600061124a8383610699565b61132457600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506112c1610cd1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611329565b600090505b92915050565b600061133b8383610699565b1561141657600080600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113b3610cd1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001905061141b565b600090505b92915050565b60006114308284108484611438565b905092915050565b600061144384611452565b82841802821890509392505050565b60008115159050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61149881611463565b81146114a357600080fd5b50565b6000813590506114b58161148f565b92915050565b6000602082840312156114d1576114d061145e565b5b60006114df848285016114a6565b91505092915050565b60008115159050919050565b6114fd816114e8565b82525050565b600060208201905061151860008301846114f4565b92915050565b600065ffffffffffff82169050919050565b6115398161151e565b82525050565b60006020820190506115546000830184611530565b92915050565b6000819050919050565b61156d8161155a565b811461157857600080fd5b50565b60008135905061158a81611564565b92915050565b6000602082840312156115a6576115a561145e565b5b60006115b48482850161157b565b91505092915050565b6115c68161155a565b82525050565b60006020820190506115e160008301846115bd565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611612826115e7565b9050919050565b61162281611607565b811461162d57600080fd5b50565b60008135905061163f81611619565b92915050565b6000806040838503121561165c5761165b61145e565b5b600061166a8582860161157b565b925050602061167b85828601611630565b9150509250929050565b60006020828403121561169b5761169a61145e565b5b60006116a984828501611630565b91505092915050565b6116bb8161151e565b81146116c657600080fd5b50565b6000813590506116d8816116b2565b92915050565b6000602082840312156116f4576116f361145e565b5b6000611702848285016116c9565b91505092915050565b6000819050919050565b600061173061172b611726846115e7565b61170b565b6115e7565b9050919050565b600061174282611715565b9050919050565b600061175482611737565b9050919050565b61176481611749565b82525050565b600060208201905061177f600083018461175b565b92915050565b61178e81611607565b82525050565b60006020820190506117a96000830184611785565b92915050565b60006040820190506117c46000830185611530565b6117d16020830184611530565b9392505050565b600080604083850312156117ef576117ee61145e565b5b60006117fd85828601611630565b925050602061180e8582860161157b565b9150509250929050565b600060408201905061182d6000830185611785565b61183a6020830184611530565b9392505050565b600061184c82611607565b9050919050565b61185c81611841565b811461186757600080fd5b50565b60008135905061187981611853565b92915050565b6000806000606084860312156118985761189761145e565b5b60006118a686828701611630565b93505060206118b78682870161157b565b92505060406118c88682870161186a565b9150509250925092565b60006040820190506118e76000830185611785565b6118f460208301846115bd565b9392505050565b600061190682611737565b9050919050565b611916816118fb565b82525050565b60006060820190506119316000830186611785565b61193e60208301856115bd565b61194b604083018461190d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061198d8261151e565b91506119988361151e565b9250828201905065ffffffffffff8111156119b6576119b5611953565b5b92915050565b6000819050919050565b600060ff82169050919050565b60006119ee6119e96119e4846119bc565b61170b565b6119c6565b9050919050565b6119fe816119d3565b82525050565b6000819050919050565b611a1781611a04565b82525050565b6000604082019050611a3260008301856119f5565b611a3f6020830184611a0e565b9392505050565b6000611a518261151e565b9150611a5c8361151e565b9250828203905065ffffffffffff811115611a7a57611a79611953565b5b9291505056fea26469706673582212204307e6557245d6962c4aa6df3b0d00da7f70a8fe6d588026bced90e93aa484cb64736f6c634300081c0033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101425760003560e01c80638da5cb5b116100b8578063cc8463c81161007c578063cc8463c814610340578063cefc14291461035e578063cf6eefb714610368578063d547741f14610387578063d602b9fd146103a3578063dd738e6c146103ad57610142565b80638da5cb5b1461029957806391d14854146102b7578063a1eda53c146102e7578063a217fddf14610306578063a8c008611461032457610142565b80632f2ff15d1161010a5780632f2ff15d146101ed57806336568abe14610209578063634e93da14610225578063649a5ec7146102415780637b1039991461025d57806384ef8ffc1461027b57610142565b806301ffc9a714610147578063022d63fb146101775780630aa6220b14610195578063248a9ca31461019f5780632a3fea62146101cf575b600080fd5b610161600480360381019061015c91906114bb565b6103c9565b60405161016e9190611503565b60405180910390f35b61017f610443565b60405161018c919061153f565b60405180910390f35b61019d61044e565b005b6101b960048036038101906101b49190611590565b610466565b6040516101c691906115cc565b60405180910390f35b6101d7610485565b6040516101e491906115cc565b60405180910390f35b61020760048036038101906102029190611645565b6104a9565b005b610223600480360381019061021e9190611645565b6104f3565b005b61023f600480360381019061023a9190611685565b610608565b005b61025b600480360381019061025691906116de565b610622565b005b61026561063c565b604051610272919061176a565b60405180910390f35b610283610660565b6040516102909190611794565b60405180910390f35b6102a161068a565b6040516102ae9190611794565b60405180910390f35b6102d160048036038101906102cc9190611645565b610699565b6040516102de9190611503565b60405180910390f35b6102ef610703565b6040516102fd9291906117af565b60405180910390f35b61030e610763565b60405161031b91906115cc565b60405180910390f35b61033e600480360381019061033991906117d8565b61076a565b005b610348610826565b604051610355919061153f565b60405180910390f35b610366610894565b005b61037061092a565b60405161037e929190611818565b60405180910390f35b6103a1600480360381019061039c9190611645565b61096d565b005b6103ab6109b7565b005b6103c760048036038101906103c2919061187f565b6109cf565b005b60007f31498786000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061043c575061043b82610a8e565b5b9050919050565b600062069780905090565b6000801b61045b81610b08565b610463610b1c565b50565b6000806000838152602001908152602001600020600101549050919050565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c6881565b6000801b82036104e5576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6104ef8282610b29565b5050565b6000801b821480156105375750610508610660565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b156105fa5760008061054761092a565b91509150600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158061058d575061058b81610b4b565b155b8061059e575061059c81610b60565b155b156105e057806040517f19ca5ebb0000000000000000000000000000000000000000000000000000000081526004016105d7919061153f565b60405180910390fd5b600160146101000a81549065ffffffffffff021916905550505b6106048282610b74565b5050565b6000801b61061581610b08565b61061e82610bef565b5050565b6000801b61062f81610b08565b61063882610c6a565b5050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610694610660565b905090565b600080600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000806002601a9054906101000a900465ffffffffffff16905061072681610b4b565b8015610738575061073681610b60565b155b6107445760008061075b565b600260149054906101000a900465ffffffffffff16815b915091509091565b6000801b81565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c6861079481610b08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a8c0086184846040518363ffffffff1660e01b81526004016107ef9291906118d2565b600060405180830381600087803b15801561080957600080fd5b505af115801561081d573d6000803e3d6000fd5b50505050505050565b6000806002601a9054906101000a900465ffffffffffff16905061084981610b4b565b801561085a575061085981610b60565b5b610878576001601a9054906101000a900465ffffffffffff1661088e565b600260149054906101000a900465ffffffffffff165b91505090565b600061089e61092a565b5090508073ffffffffffffffffffffffffffffffffffffffff166108c0610cd1565b73ffffffffffffffffffffffffffffffffffffffff161461091f576108e3610cd1565b6040517fc22c80220000000000000000000000000000000000000000000000000000000081526004016109169190611794565b60405180910390fd5b610927610cd9565b50565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160149054906101000a900465ffffffffffff16915091509091565b6000801b82036109a9576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109b38282610da8565b5050565b6000801b6109c481610b08565b6109cc610dca565b50565b7f272794ccb0a4bcd0471f23cee002b833b46b2522c714889fc822087de7383c686109f981610b08565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663dd738e6c8585856040518463ffffffff1660e01b8152600401610a569392919061191c565b600060405180830381600087803b158015610a7057600080fd5b505af1158015610a84573d6000803e3d6000fd5b5050505050505050565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b015750610b0082610dd7565b5b9050919050565b610b1981610b14610cd1565b610e41565b50565b610b27600080610e92565b565b610b3282610466565b610b3b81610b08565b610b458383610f82565b50505050565b6000808265ffffffffffff1614159050919050565b6000428265ffffffffffff16109050919050565b610b7c610cd1565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610be0576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bea828261104f565b505050565b6000610bf9610826565b610c02426110d2565b610c0c9190611982565b9050610c18828261112c565b8173ffffffffffffffffffffffffffffffffffffffff167f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed682604051610c5e919061153f565b60405180910390a25050565b6000610c75826111df565b610c7e426110d2565b610c889190611982565b9050610c948282610e92565b7ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b8282604051610cc59291906117af565b60405180910390a15050565b600033905090565b600080610ce461092a565b91509150610cf181610b4b565b1580610d035750610d0181610b60565b155b15610d4557806040517f19ca5ebb000000000000000000000000000000000000000000000000000000008152600401610d3c919061153f565b60405180910390fd5b610d596000801b610d54610660565b61104f565b50610d676000801b83610f82565b50600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600160146101000a81549065ffffffffffff02191690555050565b610db182610466565b610dba81610b08565b610dc4838361104f565b50505050565b610dd560008061112c565b565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610e4b8282610699565b610e8e5780826040517fe2517d3f000000000000000000000000000000000000000000000000000000008152600401610e859291906118d2565b60405180910390fd5b5050565b60006002601a9054906101000a900465ffffffffffff169050610eb481610b4b565b15610f3357610ec281610b60565b15610f0557600260149054906101000a900465ffffffffffff166001601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550610f32565b7f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec560405160405180910390a15b5b82600260146101000a81548165ffffffffffff021916908365ffffffffffff160217905550816002601a6101000a81548165ffffffffffff021916908365ffffffffffff160217905550505050565b60008060001b830361103d57600073ffffffffffffffffffffffffffffffffffffffff16610fae610660565b73ffffffffffffffffffffffffffffffffffffffff1614610ffb576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b611047838361123e565b905092915050565b60008060001b831480156110955750611066610660565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b156110c057600260006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555b6110ca838361132f565b905092915050565b600065ffffffffffff8016821115611124576030826040517f6dfcc65000000000000000000000000000000000000000000000000000000000815260040161111b929190611a1d565b60405180910390fd5b819050919050565b600061113661092a565b91505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600160146101000a81548165ffffffffffff021916908365ffffffffffff1602179055506111a881610b4b565b156111da577f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510960405160405180910390a15b505050565b6000806111ea610826565b90508065ffffffffffff168365ffffffffffff161161121457828161120f9190611a46565b611236565b6112358365ffffffffffff16611228610443565b65ffffffffffff16611421565b5b915050919050565b600061124a8383610699565b61132457600160008085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506112c1610cd1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019050611329565b600090505b92915050565b600061133b8383610699565b1561141657600080600085815260200190815260200160002060000160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506113b3610cd1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001905061141b565b600090505b92915050565b60006114308284108484611438565b905092915050565b600061144384611452565b82841802821890509392505050565b60008115159050919050565b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61149881611463565b81146114a357600080fd5b50565b6000813590506114b58161148f565b92915050565b6000602082840312156114d1576114d061145e565b5b60006114df848285016114a6565b91505092915050565b60008115159050919050565b6114fd816114e8565b82525050565b600060208201905061151860008301846114f4565b92915050565b600065ffffffffffff82169050919050565b6115398161151e565b82525050565b60006020820190506115546000830184611530565b92915050565b6000819050919050565b61156d8161155a565b811461157857600080fd5b50565b60008135905061158a81611564565b92915050565b6000602082840312156115a6576115a561145e565b5b60006115b48482850161157b565b91505092915050565b6115c68161155a565b82525050565b60006020820190506115e160008301846115bd565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611612826115e7565b9050919050565b61162281611607565b811461162d57600080fd5b50565b60008135905061163f81611619565b92915050565b6000806040838503121561165c5761165b61145e565b5b600061166a8582860161157b565b925050602061167b85828601611630565b9150509250929050565b60006020828403121561169b5761169a61145e565b5b60006116a984828501611630565b91505092915050565b6116bb8161151e565b81146116c657600080fd5b50565b6000813590506116d8816116b2565b92915050565b6000602082840312156116f4576116f361145e565b5b6000611702848285016116c9565b91505092915050565b6000819050919050565b600061173061172b611726846115e7565b61170b565b6115e7565b9050919050565b600061174282611715565b9050919050565b600061175482611737565b9050919050565b61176481611749565b82525050565b600060208201905061177f600083018461175b565b92915050565b61178e81611607565b82525050565b60006020820190506117a96000830184611785565b92915050565b60006040820190506117c46000830185611530565b6117d16020830184611530565b9392505050565b600080604083850312156117ef576117ee61145e565b5b60006117fd85828601611630565b925050602061180e8582860161157b565b9150509250929050565b600060408201905061182d6000830185611785565b61183a6020830184611530565b9392505050565b600061184c82611607565b9050919050565b61185c81611841565b811461186757600080fd5b50565b60008135905061187981611853565b92915050565b6000806000606084860312156118985761189761145e565b5b60006118a686828701611630565b93505060206118b78682870161157b565b92505060406118c88682870161186a565b9150509250925092565b60006040820190506118e76000830185611785565b6118f460208301846115bd565b9392505050565b600061190682611737565b9050919050565b611916816118fb565b82525050565b60006060820190506119316000830186611785565b61193e60208301856115bd565b61194b604083018461190d565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061198d8261151e565b91506119988361151e565b9250828201905065ffffffffffff8111156119b6576119b5611953565b5b92915050565b6000819050919050565b600060ff82169050919050565b60006119ee6119e96119e4846119bc565b61170b565b6119c6565b9050919050565b6119fe816119d3565b82525050565b6000819050919050565b611a1781611a04565b82525050565b6000604082019050611a3260008301856119f5565b611a3f6020830184611a0e565b9392505050565b6000611a518261151e565b9150611a5c8361151e565b9250828203905065ffffffffffff811115611a7a57611a79611953565b5b9291505056fea26469706673582212204307e6557245d6962c4aa6df3b0d00da7f70a8fe6d588026bced90e93aa484cb64736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} }