diff --git a/contracts/generated/ManagementContract/ManagementContract.go b/contracts/generated/ManagementContract/ManagementContract.go index 8cc256dcf3..3aaff4093c 100644 --- a/contracts/generated/ManagementContract/ManagementContract.go +++ b/contracts/generated/ManagementContract/ManagementContract.go @@ -54,7 +54,7 @@ type StructsMetaRollup struct { // ManagementContractMetaData contains all meta data concerning the ManagementContract contract. var ManagementContractMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"ImportantContractAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"messageBusAddress\",\"type\":\"address\"}],\"name\":\"LogManagementContractCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"r\",\"type\":\"tuple\"},{\"internalType\":\"string\",\"name\":\"_rollupData\",\"type\":\"string\"},{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"sequence\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"topic\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"payload\",\"type\":\"bytes\"},{\"internalType\":\"uint8\",\"name\":\"consistencyLevel\",\"type\":\"uint8\"}],\"internalType\":\"structStructs.CrossChainMessage[]\",\"name\":\"messages\",\"type\":\"tuple[]\"}],\"internalType\":\"structStructs.HeaderCrossChainData\",\"name\":\"crossChainData\",\"type\":\"tuple\"}],\"name\":\"AddRollup\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_addr\",\"type\":\"address\"}],\"name\":\"Attested\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetHostAddresses\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetImportantContractKeys\",\"outputs\":[{\"internalType\":\"string[]\",\"name\":\"\",\"type\":\"string[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"rollupHash\",\"type\":\"bytes32\"}],\"name\":\"GetRollupByHash\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"Hash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"AggregatorID\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"LastSequenceNumber\",\"type\":\"uint256\"}],\"internalType\":\"structStructs.MetaRollup\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_aggregatorID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"_hostAddress\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"_genesisAttestation\",\"type\":\"string\"}],\"name\":\"InitializeNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"IsWithdrawalAvailable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"requestReport\",\"type\":\"string\"}],\"name\":\"RequestNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attesterID\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"requesterID\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"attesterSig\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"responseSecret\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"hostAddress\",\"type\":\"string\"},{\"internalType\":\"bool\",\"name\":\"verifyAttester\",\"type\":\"bool\"}],\"name\":\"RespondNetworkSecret\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RetrieveAllBridgeFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"newAddress\",\"type\":\"address\"}],\"name\":\"SetImportantContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"name\":\"importantContractAddresses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"importantContractKeys\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastBatchSeqNo\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageBus\",\"outputs\":[{\"internalType\":\"contractIMessageBus\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b612cd8806100a56000396000f3fe608060405234801561001057600080fd5b50600436106101515760003560e01c80638129fc1c116100cd578063a1a227fa11610081578063bbd79e1511610066578063bbd79e151461035d578063e34fbfc814610370578063f2fde38b1461038357600080fd5b8063a1a227fa1461033a578063a52f433c1461034d57600080fd5b80638da5cb5b116100b25780638da5cb5b146102f65780638fa0d0531461030757806398077e861461031a57600080fd5b80638129fc1c146102535780638236a7ba1461025b57600080fd5b8063440c953b116101245780636a30d26c116101095780636a30d26c1461023b578063715018a614610243578063728109961461024b57600080fd5b8063440c953b1461021157806359a900711461022857600080fd5b806303e72e4814610156578063324ff8661461016b5780633e60a22f1461018957806343348b2f146101d5575b600080fd5b610169610164366004611296565b610396565b005b61017361049e565b6040516101809190611338565b60405180910390f35b6101bd61019736600461139a565b80516020818301810180516005825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001610180565b6102016101e33660046113d7565b6001600160a01b031660009081526002602052604090205460ff1690565b6040519015158152602001610180565b61021a60075481565b604051908152602001610180565b610169610236366004611444565b610577565b6101736105fa565b6101696106ca565b6101696106de565b61016961075e565b6102c36102693660046114eb565b6040805160608082018352600080835260208084018290529284018190528481526008835283902083519182018452805480835260018201546001600160a01b031693830193909352600201549281019290925290911491565b60408051921515835281516020808501919091528201516001600160a01b03168382015201516060820152608001610180565b6000546001600160a01b03166101bd565b610169610315366004611504565b61091e565b61032d6103283660046114eb565b6109b2565b604051610180919061158b565b6009546101bd906001600160a01b031681565b600654610100900460ff16610201565b61016961036b36600461159e565b610a5e565b61016961037e366004611664565b610bbc565b6101696103913660046113d7565b610bdb565b61039e610c32565b60006001600160a01b03166005836040516103b991906116a6565b908152604051908190036020019020546001600160a01b03160361041557600480546001810182556000919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01610413838261174a565b505b8060058360405161042691906116a6565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb590610492908490849061180a565b60405180910390a15050565b60606003805480602002602001604051908101604052809291908181526020016000905b8282101561056e5783829060005260206000200180546104e1906116c2565b80601f016020809104026020016040519081016040528092919081815260200182805461050d906116c2565b801561055a5780601f1061052f5761010080835404028352916020019161055a565b820191906000526020600020905b81548152906001019060200180831161053d57829003601f168201915b5050505050815260200190600101906104c2565b50505050905090565b60065460ff161561058757600080fd5b60068054600160ff1991821681179092556001600160a01b03881660009081526002602052604081208054909216831790915560038054928301815590527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016105f1848261174a565b50505050505050565b60606004805480602002602001604051908101604052809291908181526020016000905b8282101561056e57838290600052602060002001805461063d906116c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610669906116c2565b80156106b65780601f1061068b576101008083540402835291602001916106b6565b820191906000526020600020905b81548152906001019060200180831161069957829003601f168201915b50505050508152602001906001019061061e565b6106d2610c32565b6106dc6000610c78565b565b6106e6610c32565b6009546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da9090602401600060405180830381600087803b15801561074457600080fd5b505af1158015610758573d6000803e3d6000fd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff166000811580156107a95750825b905060008267ffffffffffffffff1660011480156107c65750303b155b9050811580156107d4575080155b1561080b576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561083f57845468ff00000000000000001916680100000000000000001785555b6000600755604051610850906111d0565b604051809103906000f08015801561086c573d6000803e3d6000fd5b506009805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a1831561091757845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6002600061093260408701602088016113d7565b6001600160a01b0316815260208101919091526040016000205460ff166109a05760405162461bcd60e51b815260206004820152601760248201527f61676772656761746f72206e6f7420617474657374656400000000000000000060448201526064015b60405180910390fd5b6109a984610cd5565b61075881610d0a565b600481815481106109c257600080fd5b9060005260206000200160009150905080546109dd906116c2565b80601f0160208091040260200160405190810160405280929190818152602001828054610a09906116c2565b8015610a565780601f10610a2b57610100808354040283529160200191610a56565b820191906000526020600020905b815481529060010190602001808311610a3957829003601f168201915b505050505081565b6001600160a01b03861660009081526002602052604090205460ff1680610a8457600080fd5b8115610b54576000610aba88888688604051602001610aa69493929190611835565b604051602081830303815290604052610dc4565b90506000610ac88288610dff565b9050886001600160a01b0316816001600160a01b031614610b515760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d6174636800000000000000000000000000000000000000006064820152608401610997565b50505b6001600160a01b0386166000908152600260205260408120805460ff191660019081179091556003805491820181559091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b01610bb2848261174a565b5050505050505050565b336000908152600160205260409020610bd6828483611891565b505050565b610be3610c32565b6001600160a01b038116610c26576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610997565b610c2f81610c78565b50565b6000546001600160a01b031633146106dc576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610997565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b803560009081526008602052604090208190610cf18282611951565b505060075460408201351115610c2f5760400135600755565b6000610d16828061199d565b9050905060005b81811015610bd6576009546001600160a01b0316639730886d610d40858061199d565b84818110610d5057610d506119e7565b9050602002810190610d6291906119fd565b60016040518363ffffffff1660e01b8152600401610d81929190611aac565b600060405180830381600087803b158015610d9b57600080fd5b505af1158015610daf573d6000803e3d6000fd5b5050505080610dbd90611b63565b9050610d1d565b6000610dd08251610e29565b82604051602001610de2929190611b8a565b604051602081830303815290604052805190602001209050919050565b600080600080610e0f8686610ec9565b925092509250610e1f8282610f16565b5090949350505050565b60606000610e368361101e565b600101905060008167ffffffffffffffff811115610e5657610e566111de565b6040519080825280601f01601f191660200182016040528015610e80576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8504945084610e8a57509392505050565b60008060008351604103610f035760208401516040850151606086015160001a610ef588828585611101565b955095509550505050610f0f565b50508151600091506002905b9250925092565b6000826003811115610f2a57610f2a611be5565b03610f33575050565b6001826003811115610f4757610f47611be5565b03610f7e576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002826003811115610f9257610f92611be5565b03610fcc576040517ffce698f700000000000000000000000000000000000000000000000000000000815260048101829052602401610997565b6003826003811115610fe057610fe0611be5565b0361101a576040517fd78bce0c00000000000000000000000000000000000000000000000000000000815260048101829052602401610997565b5050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611067577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef81000000008310611093576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106110b157662386f26fc10000830492506010015b6305f5e10083106110c9576305f5e100830492506008015b61271083106110dd57612710830492506004015b606483106110ef576064830492506002015b600a83106110fb576001015b92915050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561113c57506000915060039050826111c6565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611190573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111bc575060009250600191508290506111c6565b9250600091508190505b9450945094915050565b6110a78062001bfc83390190565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261120557600080fd5b813567ffffffffffffffff80821115611220576112206111de565b604051601f8301601f19908116603f01168101908282118183101715611248576112486111de565b8160405283815286602085880101111561126157600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b0381168114610c2f57600080fd5b600080604083850312156112a957600080fd5b823567ffffffffffffffff8111156112c057600080fd5b6112cc858286016111f4565b92505060208301356112dd81611281565b809150509250929050565b60005b838110156113035781810151838201526020016112eb565b50506000910152565b600081518084526113248160208601602086016112e8565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561138d57603f1988860301845261137b85835161130c565b9450928501929085019060010161135f565b5092979650505050505050565b6000602082840312156113ac57600080fd5b813567ffffffffffffffff8111156113c357600080fd5b6113cf848285016111f4565b949350505050565b6000602082840312156113e957600080fd5b81356113f481611281565b9392505050565b60008083601f84011261140d57600080fd5b50813567ffffffffffffffff81111561142557600080fd5b60208301915083602082850101111561143d57600080fd5b9250929050565b6000806000806000806080878903121561145d57600080fd5b863561146881611281565b9550602087013567ffffffffffffffff8082111561148557600080fd5b6114918a838b016113fb565b909750955060408901359150808211156114aa57600080fd5b6114b68a838b016111f4565b945060608901359150808211156114cc57600080fd5b506114d989828a016113fb565b979a9699509497509295939492505050565b6000602082840312156114fd57600080fd5b5035919050565b60008060008084860360a081121561151b57600080fd5b606081121561152957600080fd5b50849350606085013567ffffffffffffffff8082111561154857600080fd5b611554888389016113fb565b9095509350608087013591508082111561156d57600080fd5b5085016020818803121561158057600080fd5b939692955090935050565b6020815260006113f4602083018461130c565b60008060008060008060c087890312156115b757600080fd5b86356115c281611281565b955060208701356115d281611281565b9450604087013567ffffffffffffffff808211156115ef57600080fd5b6115fb8a838b016111f4565b9550606089013591508082111561161157600080fd5b61161d8a838b016111f4565b9450608089013591508082111561163357600080fd5b5061164089828a016111f4565b92505060a0870135801515811461165657600080fd5b809150509295509295509295565b6000806020838503121561167757600080fd5b823567ffffffffffffffff81111561168e57600080fd5b61169a858286016113fb565b90969095509350505050565b600082516116b88184602087016112e8565b9190910192915050565b600181811c908216806116d657607f821691505b6020821081036116f657634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115610bd657600081815260208120601f850160051c810160208610156117235750805b601f850160051c820191505b818110156117425782815560010161172f565b505050505050565b815167ffffffffffffffff811115611764576117646111de565b6117788161177284546116c2565b846116fc565b602080601f8311600181146117ad57600084156117955750858301515b600019600386901b1c1916600185901b178555611742565b600085815260208120601f198616915b828110156117dc578886015182559484019460019091019084016117bd565b50858210156117fa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600061181d604083018561130c565b90506001600160a01b03831660208301529392505050565b60006bffffffffffffffffffffffff19808760601b168352808660601b16601484015250835161186c8160288501602088016112e8565b8351908301906118838160288401602088016112e8565b016028019695505050505050565b67ffffffffffffffff8311156118a9576118a96111de565b6118bd836118b783546116c2565b836116fc565b6000601f8411600181146118f157600085156118d95750838201355b600019600387901b1c1916600186901b178355610917565b600083815260209020601f19861690835b828110156119225786850135825560209485019460019092019101611902565b508682101561193f5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135815560018101602083013561196781611281565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff198354161782555050604082013560028201555050565b6000808335601e198436030181126119b457600080fd5b83018035915067ffffffffffffffff8211156119cf57600080fd5b6020019150600581901b360382131561143d57600080fd5b634e487b7160e01b600052603260045260246000fd5b6000823560be198336030181126116b857600080fd5b803563ffffffff81168114611a2757600080fd5b919050565b6000808335601e19843603018112611a4357600080fd5b830160208101925035905067ffffffffffffffff811115611a6357600080fd5b80360382131561143d57600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff81168114611a2757600080fd5b6040815260008335611abd81611281565b6001600160a01b03166040830152602084013567ffffffffffffffff8116808214611ae757600080fd5b606084015250611af960408501611a13565b63ffffffff166080830152611b1060608501611a13565b63ffffffff1660a0830152611b286080850185611a2c565b60c080850152611b3d61010085018284611a72565b915050611b4c60a08601611a9b565b60ff1660e084015260209092019290925292915050565b600060018201611b8357634e487b7160e01b600052601160045260246000fd5b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a000000000000815260008351611bc281601a8501602088016112e8565b835190830190611bd981601a8401602088016112e8565b01601a01949350505050565b634e487b7160e01b600052602160045260246000fdfe608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611002806100a56000396000f3fe6080604052600436106100b55760003560e01c80638da5cb5b1161006957806399a3ad211161004e57806399a3ad2114610269578063b1454caa14610289578063f2fde38b146102c257610129565b80638da5cb5b146102215780639730886d1461024957610129565b8063346633fb1161009a578063346633fb146101d957806336d2da90146101ec578063715018a61461020c57610129565b80630fcfbd111461017657806333a88c72146101a957610129565b36610129576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561018257600080fd5b50610196610191366004610945565b6102e2565b6040519081526020015b60405180910390f35b3480156101b557600080fd5b506101c96101c4366004610945565b610398565b60405190151581526020016101a0565b6101276101e736600461098f565b6103eb565b3480156101f857600080fd5b506101276102073660046109bb565b6104b7565b34801561021857600080fd5b50610127610566565b34801561022d57600080fd5b506000546040516001600160a01b0390911681526020016101a0565b34801561025557600080fd5b506101276102643660046109d8565b61057a565b34801561027557600080fd5b5061012761028436600461098f565b6106cc565b34801561029557600080fd5b506102a96102a4366004610a4e565b61077c565b60405167ffffffffffffffff90911681526020016101a0565b3480156102ce57600080fd5b506101276102dd3660046109bb565b6107d5565b600080826040516020016102f69190610b3a565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806103915760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b9392505050565b600080826040516020016103ac9190610b3a565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906103e35750428111155b949350505050565b6000341180156103fa57508034145b61046c5760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e6720457468657200000000000000000000000000000000606482015260840161016d565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6104bf61082c565b6000816001600160a01b03164760405160006040518083038185875af1925050503d806000811461050c576040519150601f19603f3d011682016040523d82523d6000602084013e610511565b606091505b50509050806105625760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b5050565b61056e61082c565b6105786000610872565b565b61058261082c565b600061058e8242610c3b565b90506000836040516020016105a39190610b3a565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561063e5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f2100000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b6000818152600160209081526040822084905560029190610661908701876109bb565b6001600160a01b03168152602081019190915260400160009081209061068d6080870160608801610c54565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016106c48282610e2a565b505050505050565b6106d461082c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610721576040519150601f19603f3d011682016040523d82523d6000602084013e610726565b606091505b50509050806107775760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b505050565b6000610787336108cf565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef775937338288888888886040516107c49796959493929190610f44565b60405180910390a195945050505050565b6107dd61082c565b6001600160a01b038116610820576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161016d565b61082981610872565b50565b6000546001600160a01b03163314610578576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161016d565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff1691600191906109028385610fa4565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600060c0828403121561093f57600080fd5b50919050565b60006020828403121561095757600080fd5b813567ffffffffffffffff81111561096e57600080fd5b6103e38482850161092d565b6001600160a01b038116811461082957600080fd5b600080604083850312156109a257600080fd5b82356109ad8161097a565b946020939093013593505050565b6000602082840312156109cd57600080fd5b81356103918161097a565b600080604083850312156109eb57600080fd5b823567ffffffffffffffff811115610a0257600080fd5b610a0e8582860161092d565b95602094909401359450505050565b63ffffffff8116811461082957600080fd5b60ff8116811461082957600080fd5b8035610a4981610a2f565b919050565b600080600080600060808688031215610a6657600080fd5b8535610a7181610a1d565b94506020860135610a8181610a1d565b9350604086013567ffffffffffffffff80821115610a9e57600080fd5b818801915088601f830112610ab257600080fd5b813581811115610ac157600080fd5b896020828501011115610ad357600080fd5b6020830195508094505050506060860135610aed81610a2f565b809150509295509295909350565b67ffffffffffffffff8116811461082957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235610b4b8161097a565b6001600160a01b0381166020840152506020830135610b6981610afb565b67ffffffffffffffff808216604085015260408501359150610b8a82610a1d565b63ffffffff808316606086015260608601359250610ba783610a1d565b80831660808601525060808501359150601e19853603018212610bc957600080fd5b6020918501918201913581811115610be057600080fd5b803603831315610bef57600080fd5b60c060a0860152610c0460e086018285610b11565b92505050610c1460a08501610a3e565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4e57610c4e610c25565b92915050565b600060208284031215610c6657600080fd5b813561039181610a1d565b60008135610c4e81610a1d565b6000808335601e19843603018112610c9557600080fd5b83018035915067ffffffffffffffff821115610cb057600080fd5b602001915036819003821315610cc557600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610cf657607f821691505b60208210810361093f57634e487b7160e01b600052602260045260246000fd5b601f82111561077757600081815260208120601f850160051c81016020861015610d3d5750805b601f850160051c820191505b818110156106c457828155600101610d49565b67ffffffffffffffff831115610d7457610d74610ccc565b610d8883610d828354610ce2565b83610d16565b6000601f841160018114610dbc5760008515610da45750838201355b600019600387901b1c1916600186901b178355610e16565b600083815260209020601f19861690835b82811015610ded5786850135825560209485019460019092019101610dcd565b5086821015610e0a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008135610c4e81610a2f565b8135610e358161097a565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff1982161783556020840135610e6d81610afb565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff0000000000000000000000000000000000000000000000000000000081848285161717855560408601359250610ecb83610a1d565b921760e09190911b909116178155610f03610ee860608401610c71565b6001830163ffffffff821663ffffffff198254161781555050565b610f106080830183610c7e565b610f1e818360028601610d5c565b5050610562610f2f60a08401610e1d565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff87166020820152600063ffffffff808816604084015280871660608401525060c06080830152610f8d60c083018587610b11565b905060ff831660a083015298975050505050505050565b67ffffffffffffffff818116838216019080821115610fc557610fc5610c25565b509291505056fea2646970667358221220bf1d60e3428c04ea6757da5786796ba3e18c5c9e196fa40928db0557ff27620f64736f6c63430008140033a2646970667358221220f9990321c02b27ff6d9e9764a4533e0649409c086361d42137fc2d2df1d7363064736f6c63430008140033", + Bin: "0x608060405234801561001057600080fd5b5061001a3361001f565b610090565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b612f5a8061009f6000396000f3fe60806040523480156200001157600080fd5b50600436106200016c5760003560e01c80638129fc1c11620000dd578063a1a227fa116200008b578063bbd79e15116200006e578063bbd79e1514620003c6578063e34fbfc814620003dd578063f2fde38b14620003f457600080fd5b8063a1a227fa14620003a1578063a52f433c14620003b557600080fd5b80638da5cb5b11620000c05780638da5cb5b14620003335780638fa0d053146200036457806398077e86146200037b57600080fd5b80638129fc1c146200028a5780638236a7ba146200029457600080fd5b8063440c953b116200013b5780636a30d26c116200011e5780636a30d26c146200026c578063715018a6146200027657806372810996146200028057600080fd5b8063440c953b146200023c57806359a90071146200025557600080fd5b806303e72e481462000171578063324ff866146200018a5780633e60a22f14620001ac57806343348b2f14620001fc575b600080fd5b620001886200018236600462001492565b6200040b565b005b620001946200051e565b604051620001a391906200153e565b60405180910390f35b620001e3620001bd366004620015a4565b80516020818301810180516004825292820191909301209152546001600160a01b031681565b6040516001600160a01b039091168152602001620001a3565b6200022b6200020d366004620015e5565b6001600160a01b031660009081526001602052604090205460ff1690565b6040519015158152602001620001a3565b6200024660065481565b604051908152602001620001a3565b620001886200026636600462001658565b62000601565b6200019462000687565b6200018862000761565b6200018862000779565b62000188620007fd565b620002ff620002a53660046200170b565b6040805160608082018352600080835260208084018290529284018190528481526007835283902083519182018452805480835260018201546001600160a01b031693830193909352600201549281019290925290911491565b60408051921515835281516020808501919091528201516001600160a01b03168382015201516060820152608001620001a3565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316620001e3565b620001886200037536600462001725565b620009d1565b620003926200038c3660046200170b565b62000a6c565b604051620001a39190620017b3565b600854620001e3906001600160a01b031681565b600554610100900460ff166200022b565b62000188620003d7366004620017c8565b62000b21565b62000188620003ee3660046200189d565b62000c89565b6200018862000405366004620015e5565b62000caa565b6200041562000d07565b60006001600160a01b0316600483604051620004329190620018e3565b908152604051908190036020019020546001600160a01b0316036200049157600380546001810182556000919091527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016200048f83826200198f565b505b80600483604051620004a49190620018e3565b90815260405190819003602001812080546001600160a01b039390931673ffffffffffffffffffffffffffffffffffffffff19909316929092179091557f17b2f9f5748931099ffee882b5b64f4a560b5c55da9b4f4e396dae3bb9f98cb59062000512908490849062001a5c565b60405180910390a15050565b60606002805480602002602001604051908101604052809291908181526020016000905b82821015620005f8578382906000526020600020018054620005649062001901565b80601f0160208091040260200160405190810160405280929190818152602001828054620005929062001901565b8015620005e35780601f10620005b757610100808354040283529160200191620005e3565b820191906000526020600020905b815481529060010190602001808311620005c557829003601f168201915b50505050508152602001906001019062000542565b50505050905090565b60055460ff16156200061257600080fd5b60058054600160ff1991821681179092556001600160a01b03881660009081526020839052604081208054909216831790915560028054928301815590527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace016200067e84826200198f565b50505050505050565b60606003805480602002602001604051908101604052809291908181526020016000905b82821015620005f8578382906000526020600020018054620006cd9062001901565b80601f0160208091040260200160405190810160405280929190818152602001828054620006fb9062001901565b80156200074c5780601f1062000720576101008083540402835291602001916200074c565b820191906000526020600020905b8154815290600101906020018083116200072e57829003601f168201915b505050505081526020019060010190620006ab565b6200076b62000d07565b62000777600062000d7e565b565b6200078362000d07565b6008546040517f36d2da900000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b03909116906336d2da9090602401600060405180830381600087803b158015620007e257600080fd5b505af1158015620007f7573d6000803e3d6000fd5b50505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015620008495750825b905060008267ffffffffffffffff166001148015620008675750303b155b90508115801562000876575080155b15620008ae576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b845467ffffffffffffffff191660011785558315620008e357845468ff00000000000000001916680100000000000000001785555b620008ee3362000dfc565b60006006556040516200090190620013c3565b604051809103906000f0801580156200091e573d6000803e3d6000fd5b506008805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039290921691821790556040519081527fbd726cf82ac9c3260b1495107182e336e0654b25c10915648c0cc15b2bb72cbf9060200160405180910390a18315620009ca57845468ff000000000000000019168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b60016000620009e76040870160208801620015e5565b6001600160a01b0316815260208101919091526040016000205460ff1662000a565760405162461bcd60e51b815260206004820152601760248201527f61676772656761746f72206e6f7420617474657374656400000000000000000060448201526064015b60405180910390fd5b62000a618462000e11565b620007f78162000e49565b6003818154811062000a7d57600080fd5b90600052602060002001600091509050805462000a9a9062001901565b80601f016020809104026020016040519081016040528092919081815260200182805462000ac89062001901565b801562000b195780601f1062000aed5761010080835404028352916020019162000b19565b820191906000526020600020905b81548152906001019060200180831162000afb57829003601f168201915b505050505081565b6001600160a01b03861660009081526001602052604090205460ff168062000b4857600080fd5b811562000c2157600062000b838888868860405160200162000b6e949392919062001a89565b60405160208183030381529060405262000f14565b9050600062000b93828862000f53565b9050886001600160a01b0316816001600160a01b03161462000c1e5760405162461bcd60e51b815260206004820152602c60248201527f63616c63756c61746564206164647265737320616e642061747465737465724960448201527f4420646f6e74206d617463680000000000000000000000000000000000000000606482015260840162000a4d565b50505b6001600160a01b03861660009081526001602081905260408220805460ff1916821790556002805491820181559091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0162000c7f84826200198f565b5050505050505050565b33600090815260208190526040902062000ca582848362001ae9565b505050565b62000cb462000d07565b6001600160a01b03811662000cf9576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240162000a4d565b62000d048162000d7e565b50565b3362000d3a7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b03161462000777576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240162000a4d565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300805473ffffffffffffffffffffffffffffffffffffffff1981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b62000e0662000f81565b62000d048162000fe9565b80356000908152600760205260409020819062000e2f828262001bb6565b50506006546040820135111562000d045760400135600655565b600062000e57828062001c04565b9050905060005b8181101562000ca5576008546001600160a01b0316639730886d62000e84858062001c04565b8481811062000e975762000e9762001c51565b905060200281019062000eab919062001c67565b60016040518363ffffffff1660e01b815260040162000ecc92919062001d1c565b600060405180830381600087803b15801562000ee757600080fd5b505af115801562000efc573d6000803e3d6000fd5b505050508062000f0c9062001de0565b905062000e5e565b600062000f22825162000ff3565b8260405160200162000f3692919062001e08565b604051602081830303815290604052805190602001209050919050565b60008060008062000f6586866200109a565b92509250925062000f778282620010eb565b5090949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff1662000777576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b62000cb462000f81565b60606000620010028362001205565b600101905060008167ffffffffffffffff811115620010255762001025620013d1565b6040519080825280601f01601f19166020018201604052801562001050576020820181803683370190505b5090508181016020015b600019017f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85049450846200105a57509392505050565b60008060008351604103620010d85760208401516040850151606086015160001a620010c988828585620012ef565b955095509550505050620010e4565b50508151600091506002905b9250925092565b600082600381111562001102576200110262001e67565b036200110c575050565b600182600381111562001123576200112362001e67565b036200115b576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600282600381111562001172576200117262001e67565b03620011ae576040517ffce698f70000000000000000000000000000000000000000000000000000000081526004810182905260240162000a4d565b6003826003811115620011c557620011c562001e67565b0362001201576040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004810182905260240162000a4d565b5050565b6000807a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106200124f577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000830492506040015b6d04ee2d6d415b85acef810000000083106200127c576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106200129b57662386f26fc10000830492506010015b6305f5e1008310620012b4576305f5e100830492506008015b6127108310620012c957612710830492506004015b60648310620012dc576064830492506002015b600a8310620012e9576001015b92915050565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156200132c5750600091506003905082620013b9565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa15801562001381573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116620013af57506000925060019150829050620013b9565b9250600091508190505b9450945094915050565b6110a78062001e7e83390190565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620013f957600080fd5b813567ffffffffffffffff80821115620014175762001417620013d1565b604051601f8301601f19908116603f01168101908282118183101715620014425762001442620013d1565b816040528381528660208588010111156200145c57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6001600160a01b038116811462000d0457600080fd5b60008060408385031215620014a657600080fd5b823567ffffffffffffffff811115620014be57600080fd5b620014cc85828601620013e7565b9250506020830135620014df816200147c565b809150509250929050565b60005b8381101562001507578181015183820152602001620014ed565b50506000910152565b600081518084526200152a816020860160208601620014ea565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156200159757603f198886030184526200158485835162001510565b9450928501929085019060010162001565565b5092979650505050505050565b600060208284031215620015b757600080fd5b813567ffffffffffffffff811115620015cf57600080fd5b620015dd84828501620013e7565b949350505050565b600060208284031215620015f857600080fd5b813562001605816200147c565b9392505050565b60008083601f8401126200161f57600080fd5b50813567ffffffffffffffff8111156200163857600080fd5b6020830191508360208285010111156200165157600080fd5b9250929050565b600080600080600080608087890312156200167257600080fd5b86356200167f816200147c565b9550602087013567ffffffffffffffff808211156200169d57600080fd5b620016ab8a838b016200160c565b90975095506040890135915080821115620016c557600080fd5b620016d38a838b01620013e7565b94506060890135915080821115620016ea57600080fd5b50620016f989828a016200160c565b979a9699509497509295939492505050565b6000602082840312156200171e57600080fd5b5035919050565b60008060008084860360a08112156200173d57600080fd5b60608112156200174c57600080fd5b50849350606085013567ffffffffffffffff808211156200176c57600080fd5b6200177a888389016200160c565b909550935060808701359150808211156200179457600080fd5b50850160208188031215620017a857600080fd5b939692955090935050565b60208152600062001605602083018462001510565b60008060008060008060c08789031215620017e257600080fd5b8635620017ef816200147c565b9550602087013562001801816200147c565b9450604087013567ffffffffffffffff808211156200181f57600080fd5b6200182d8a838b01620013e7565b955060608901359150808211156200184457600080fd5b620018528a838b01620013e7565b945060808901359150808211156200186957600080fd5b506200187889828a01620013e7565b92505060a087013580151581146200188f57600080fd5b809150509295509295509295565b60008060208385031215620018b157600080fd5b823567ffffffffffffffff811115620018c957600080fd5b620018d7858286016200160c565b90969095509350505050565b60008251620018f7818460208701620014ea565b9190910192915050565b600181811c908216806200191657607f821691505b6020821081036200193757634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111562000ca557600081815260208120601f850160051c81016020861015620019665750805b601f850160051c820191505b81811015620019875782815560010162001972565b505050505050565b815167ffffffffffffffff811115620019ac57620019ac620013d1565b620019c481620019bd845462001901565b846200193d565b602080601f831160018114620019fc5760008415620019e35750858301515b600019600386901b1c1916600185901b17855562001987565b600085815260208120601f198616915b8281101562001a2d5788860151825594840194600190910190840162001a0c565b508582101562001a4c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60408152600062001a71604083018562001510565b90506001600160a01b03831660208301529392505050565b60006bffffffffffffffffffffffff19808760601b168352808660601b16601484015250835162001ac2816028850160208801620014ea565b83519083019062001adb816028840160208801620014ea565b016028019695505050505050565b67ffffffffffffffff83111562001b045762001b04620013d1565b62001b1c8362001b15835462001901565b836200193d565b6000601f84116001811462001b53576000851562001b3a5750838201355b600019600387901b1c1916600186901b178355620009ca565b600083815260209020601f19861690835b8281101562001b86578685013582556020948501946001909201910162001b64565b508682101562001ba45760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b8135815560018101602083013562001bce816200147c565b6001600160a01b03811673ffffffffffffffffffffffffffffffffffffffff198354161782555050604082013560028201555050565b6000808335601e1984360301811262001c1c57600080fd5b83018035915067ffffffffffffffff82111562001c3857600080fd5b6020019150600581901b36038213156200165157600080fd5b634e487b7160e01b600052603260045260246000fd5b6000823560be19833603018112620018f757600080fd5b803563ffffffff8116811462001c9357600080fd5b919050565b6000808335601e1984360301811262001cb057600080fd5b830160208101925035905067ffffffffffffffff81111562001cd157600080fd5b8036038213156200165157600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b803560ff8116811462001c9357600080fd5b604081526000833562001d2f816200147c565b6001600160a01b03166040830152602084013567ffffffffffffffff811680821462001d5a57600080fd5b60608401525062001d6e6040850162001c7e565b63ffffffff16608083015262001d876060850162001c7e565b63ffffffff1660a083015262001da1608085018562001c98565b60c08085015262001db86101008501828462001ce1565b91505062001dc960a0860162001d0a565b60ff1660e084015260209092019290925292915050565b60006001820162001e0157634e487b7160e01b600052601160045260246000fd5b5060010190565b7f19457468657265756d205369676e6564204d6573736167653a0a00000000000081526000835162001e4281601a850160208801620014ea565b83519083019062001e5b81601a840160208801620014ea565b01601a01949350505050565b634e487b7160e01b600052602160045260246000fdfe608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b611002806100a56000396000f3fe6080604052600436106100b55760003560e01c80638da5cb5b1161006957806399a3ad211161004e57806399a3ad2114610269578063b1454caa14610289578063f2fde38b146102c257610129565b80638da5cb5b146102215780639730886d1461024957610129565b8063346633fb1161009a578063346633fb146101d957806336d2da90146101ec578063715018a61461020c57610129565b80630fcfbd111461017657806333a88c72146101a957610129565b36610129576040517f346633fb0000000000000000000000000000000000000000000000000000000081523360048201523460248201819052309163346633fb91906044016000604051808303818588803b15801561011357600080fd5b505af1158015610127573d6000803e3d6000fd5b005b60405162461bcd60e51b815260206004820152600b60248201527f756e737570706f7274656400000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561018257600080fd5b50610196610191366004610945565b6102e2565b6040519081526020015b60405180910390f35b3480156101b557600080fd5b506101c96101c4366004610945565b610398565b60405190151581526020016101a0565b6101276101e736600461098f565b6103eb565b3480156101f857600080fd5b506101276102073660046109bb565b6104b7565b34801561021857600080fd5b50610127610566565b34801561022d57600080fd5b506000546040516001600160a01b0390911681526020016101a0565b34801561025557600080fd5b506101276102643660046109d8565b61057a565b34801561027557600080fd5b5061012761028436600461098f565b6106cc565b34801561029557600080fd5b506102a96102a4366004610a4e565b61077c565b60405167ffffffffffffffff90911681526020016101a0565b3480156102ce57600080fd5b506101276102dd3660046109bb565b6107d5565b600080826040516020016102f69190610b3a565b60408051601f19818403018152918152815160209283012060008181526001909352912054909150806103915760405162461bcd60e51b815260206004820152602160248201527f54686973206d65737361676520776173206e65766572207375626d697474656460448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b9392505050565b600080826040516020016103ac9190610b3a565b60408051601f1981840301815291815281516020928301206000818152600190935291205490915080158015906103e35750428111155b949350505050565b6000341180156103fa57508034145b61046c5760405162461bcd60e51b815260206004820152603060248201527f417474656d7074696e6720746f2073656e642076616c756520776974686f757460448201527f2070726f766964696e6720457468657200000000000000000000000000000000606482015260840161016d565b604080513381526001600160a01b0384166020820152348183015290517ff1365f826a788d6c1a955db0eed5ba8642674219c4771f8c65918617511a15609181900360600190a15050565b6104bf61082c565b6000816001600160a01b03164760405160006040518083038185875af1925050503d806000811461050c576040519150601f19603f3d011682016040523d82523d6000602084013e610511565b606091505b50509050806105625760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b5050565b61056e61082c565b6105786000610872565b565b61058261082c565b600061058e8242610c3b565b90506000836040516020016105a39190610b3a565b60408051601f198184030181529181528151602092830120600081815260019093529120549091501561063e5760405162461bcd60e51b815260206004820152602160248201527f4d657373616765207375626d6974746564206d6f7265207468616e206f6e636560448201527f2100000000000000000000000000000000000000000000000000000000000000606482015260840161016d565b6000818152600160209081526040822084905560029190610661908701876109bb565b6001600160a01b03168152602081019190915260400160009081209061068d6080870160608801610c54565b63ffffffff168152602080820192909252604001600090812080546001810182559082529190208591600402016106c48282610e2a565b505050505050565b6106d461082c565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610721576040519150601f19603f3d011682016040523d82523d6000602084013e610726565b606091505b50509050806107775760405162461bcd60e51b815260206004820152601460248201527f6661696c65642073656e64696e672076616c7565000000000000000000000000604482015260640161016d565b505050565b6000610787336108cf565b90507fb93c37389233beb85a3a726c3f15c2d15533ee74cb602f20f490dfffef775937338288888888886040516107c49796959493929190610f44565b60405180910390a195945050505050565b6107dd61082c565b6001600160a01b038116610820576040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526000600482015260240161016d565b61082981610872565b50565b6000546001600160a01b03163314610578576040517f118cdaa700000000000000000000000000000000000000000000000000000000815233600482015260240161016d565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b0381166000908152600360205260408120805467ffffffffffffffff1691600191906109028385610fa4565b92506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550919050565b600060c0828403121561093f57600080fd5b50919050565b60006020828403121561095757600080fd5b813567ffffffffffffffff81111561096e57600080fd5b6103e38482850161092d565b6001600160a01b038116811461082957600080fd5b600080604083850312156109a257600080fd5b82356109ad8161097a565b946020939093013593505050565b6000602082840312156109cd57600080fd5b81356103918161097a565b600080604083850312156109eb57600080fd5b823567ffffffffffffffff811115610a0257600080fd5b610a0e8582860161092d565b95602094909401359450505050565b63ffffffff8116811461082957600080fd5b60ff8116811461082957600080fd5b8035610a4981610a2f565b919050565b600080600080600060808688031215610a6657600080fd5b8535610a7181610a1d565b94506020860135610a8181610a1d565b9350604086013567ffffffffffffffff80821115610a9e57600080fd5b818801915088601f830112610ab257600080fd5b813581811115610ac157600080fd5b896020828501011115610ad357600080fd5b6020830195508094505050506060860135610aed81610a2f565b809150509295509295909350565b67ffffffffffffffff8116811461082957600080fd5b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260008235610b4b8161097a565b6001600160a01b0381166020840152506020830135610b6981610afb565b67ffffffffffffffff808216604085015260408501359150610b8a82610a1d565b63ffffffff808316606086015260608601359250610ba783610a1d565b80831660808601525060808501359150601e19853603018212610bc957600080fd5b6020918501918201913581811115610be057600080fd5b803603831315610bef57600080fd5b60c060a0860152610c0460e086018285610b11565b92505050610c1460a08501610a3e565b60ff811660c0850152509392505050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610c4e57610c4e610c25565b92915050565b600060208284031215610c6657600080fd5b813561039181610a1d565b60008135610c4e81610a1d565b6000808335601e19843603018112610c9557600080fd5b83018035915067ffffffffffffffff821115610cb057600080fd5b602001915036819003821315610cc557600080fd5b9250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680610cf657607f821691505b60208210810361093f57634e487b7160e01b600052602260045260246000fd5b601f82111561077757600081815260208120601f850160051c81016020861015610d3d5750805b601f850160051c820191505b818110156106c457828155600101610d49565b67ffffffffffffffff831115610d7457610d74610ccc565b610d8883610d828354610ce2565b83610d16565b6000601f841160018114610dbc5760008515610da45750838201355b600019600387901b1c1916600186901b178355610e16565b600083815260209020601f19861690835b82811015610ded5786850135825560209485019460019092019101610dcd565b5086821015610e0a5760001960f88860031b161c19848701351681555b505060018560011b0183555b5050505050565b60008135610c4e81610a2f565b8135610e358161097a565b6001600160a01b038116905081548173ffffffffffffffffffffffffffffffffffffffff1982161783556020840135610e6d81610afb565b7bffffffffffffffff00000000000000000000000000000000000000008160a01b1690507fffffffff0000000000000000000000000000000000000000000000000000000081848285161717855560408601359250610ecb83610a1d565b921760e09190911b909116178155610f03610ee860608401610c71565b6001830163ffffffff821663ffffffff198254161781555050565b610f106080830183610c7e565b610f1e818360028601610d5c565b5050610562610f2f60a08401610e1d565b6003830160ff821660ff198254161781555050565b6001600160a01b038816815267ffffffffffffffff87166020820152600063ffffffff808816604084015280871660608401525060c06080830152610f8d60c083018587610b11565b905060ff831660a083015298975050505050505050565b67ffffffffffffffff818116838216019080821115610fc557610fc5610c25565b509291505056fea2646970667358221220bf1d60e3428c04ea6757da5786796ba3e18c5c9e196fa40928db0557ff27620f64736f6c63430008140033a26469706673582212202a6230abae8a4863d19d5102e9df3e0677fa0631267f92d3dfcb257cfdac41f764736f6c63430008140033", } // ManagementContractABI is the input ABI used to generate the binding from. diff --git a/contracts/src/management/ManagementContract.sol b/contracts/src/management/ManagementContract.sol index 5eb800650a..c7256eec7d 100644 --- a/contracts/src/management/ManagementContract.sol +++ b/contracts/src/management/ManagementContract.sol @@ -2,21 +2,21 @@ pragma solidity >=0.7.0 <0.9.0; import "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; -import "@openzeppelin/contracts/access/Ownable.sol"; -import "@openzeppelin/contracts/proxy/utils/Initializable.sol"; +import "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol"; import "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; import "./Structs.sol"; import * as MessageBus from "../messaging/MessageBus.sol"; -contract ManagementContract is Ownable, Initializable { +contract ManagementContract is Initializable, OwnableUpgradeable { using MessageHashUtils for bytes32; using MessageHashUtils for bytes; - constructor() Ownable(msg.sender) { - // _disableInitializers(); //todo @siliev - figure out why the solidity compiler cant find this. Perhaps OZ needs a version upgrade? + constructor() { + // _disableInitializers(); + _transferOwnership(msg.sender); } event LogManagementContractCreated(address messageBusAddress); @@ -46,6 +46,7 @@ contract ManagementContract is Ownable, Initializable { //The messageBus where messages can be sent to Obscuro MessageBus.IMessageBus public messageBus; function initialize() public initializer { + __Ownable_init(msg.sender); lastBatchSeqNo = 0; messageBus = new MessageBus.MessageBus(); emit LogManagementContractCreated(address(messageBus));