/* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; import { Provider, TransactionRequest } from "@ethersproject/providers"; import type { ProtocolControl, ProtocolControlInterface, } from "../ProtocolControl"; const _abi = [ { inputs: [], stateMutability: "nonpayable", type: "constructor", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "from", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, ], name: "EtherReceived", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "_newForwarder", type: "address", }, ], name: "ForwarderUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "to", type: "address", }, { indexed: true, internalType: "address", name: "currency", type: "address", }, { indexed: false, internalType: "uint256", name: "amount", type: "uint256", }, { indexed: false, internalType: "uint256", name: "fee", type: "uint256", }, ], name: "FundsWithdrawn", type: "event", }, { anonymous: false, inputs: [ { indexed: true, internalType: "bytes32", name: "moduleId", type: "bytes32", }, { indexed: true, internalType: "address", name: "module", type: "address", }, ], name: "ModuleUpdated", 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", }, { anonymous: false, inputs: [ { indexed: true, internalType: "address", name: "protocolControlAddress", type: "address", }, { indexed: true, internalType: "address", name: "moduleAddress", type: "address", }, { indexed: false, internalType: "address", name: "treasury", type: "address", }, ], name: "RoyaltyTreasuryUpdated", type: "event", }, { anonymous: false, inputs: [ { indexed: false, internalType: "address", name: "_newTreasury", type: "address", }, ], name: "TreasuryUpdated", type: "event", }, { inputs: [], name: "DEFAULT_ADMIN_ROLE", outputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "MAX_BPS", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "NATIVE_TOKEN", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "_newModuleAddress", type: "address", }, { internalType: "uint256", name: "_moduleType", type: "uint256", }, ], name: "addModule", outputs: [ { internalType: "bytes32", name: "moduleId", type: "bytes32", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "contractURI", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "uint256", name: "_moduleType", type: "uint256", }, ], name: "getAllModulesOfType", outputs: [ { internalType: "address[]", name: "allModules", type: "address[]", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "getForwarder", outputs: [ { internalType: "address", name: "", type: "address", }, ], 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: "uint256", name: "index", type: "uint256", }, ], name: "getRoleMember", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes32", name: "role", type: "bytes32", }, ], name: "getRoleMemberCount", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "moduleAddress", type: "address", }, ], name: "getRoyaltyTreasury", outputs: [ { internalType: "address", name: "", type: "address", }, ], 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: [ { internalType: "address", name: "_registry", type: "address", }, { internalType: "address", name: "_admin", type: "address", }, { internalType: "string", name: "_uri", type: "string", }, ], name: "initialize", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes32", name: "", type: "bytes32", }, ], name: "modules", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes[]", name: "data", type: "bytes[]", }, ], name: "multicall", outputs: [ { internalType: "bytes[]", name: "results", type: "bytes[]", }, ], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], name: "numOfModuleType", outputs: [ { internalType: "uint256", name: "", type: "uint256", }, ], stateMutability: "view", type: "function", }, { inputs: [], name: "registry", outputs: [ { internalType: "address", 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: "royaltyTreasury", outputs: [ { internalType: "address", name: "", type: "address", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "string", name: "_URI", type: "string", }, ], name: "setContractURI", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "forwarder", type: "address", }, ], name: "setForwarder", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address", name: "moduleAddress", type: "address", }, { internalType: "address payable", name: "_treasury", type: "address", }, ], name: "setModuleRoyaltyTreasury", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "address payable", name: "_treasury", type: "address", }, ], name: "setRoyaltyTreasury", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [ { internalType: "bytes4", name: "interfaceId", type: "bytes4", }, ], name: "supportsInterface", outputs: [ { internalType: "bool", name: "", type: "bool", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "bytes32", name: "_moduleId", type: "bytes32", }, { internalType: "address", name: "_newModuleAddress", type: "address", }, ], name: "updateModule", outputs: [], stateMutability: "nonpayable", type: "function", }, { inputs: [], name: "version", outputs: [ { internalType: "string", name: "", type: "string", }, ], stateMutability: "view", type: "function", }, { inputs: [ { internalType: "address", name: "to", type: "address", }, { internalType: "address", name: "currency", type: "address", }, ], name: "withdrawFunds", outputs: [], stateMutability: "nonpayable", type: "function", }, { stateMutability: "payable", type: "receive", }, ]; const _bytecode = "0x60806040523480156200001157600080fd5b50600254610100900460ff166200002f5760025460ff161562000039565b62000039620000de565b620000a15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600254610100900460ff16158015620000c4576002805461ffff19166101011790555b8015620000d7576002805461ff00191690555b5062000102565b6000620000f630620000fc60201b620019931760201c565b15905090565b3b151590565b612a5a80620001126000396000f3fe6080604052600436106101c55760003560e01c806391d14854116100f7578063b0b6cc1a11610095578063d547741f11610064578063d547741f146105e3578063e8a3d48514610603578063f2aab4b314610618578063fd967f471461063857600080fd5b8063b0b6cc1a1461054d578063b9998a2414610583578063c097b1fb146105a3578063ca15c873146105c357600080fd5b8063a0042526116100d1578063a0042526146104c9578063a217fddf146104de578063ac9650d8146104f3578063aca841751461052057600080fd5b806391d1485414610445578063938e3d7b1461048957806396362d32146104a957600080fd5b80633b98a7df116101645780634d8188851161013e5780634d818885146103ab57806354fd4d50146103cb5780637b103999146104055780639010d07c1461042557600080fd5b80633b98a7df1461033e5780633fff7bf81461035e5780634571e3a61461038b57600080fd5b8063248a9ca3116101a0578063248a9ca3146102985780632f2ff15d146102d657806331f7d964146102f657806336568abe1461031e57600080fd5b80620fa9fb1461020957806301ffc9a71461022b57806305e9ca9b1461026057600080fd5b3661020457604080513381523460208201527f1e57e3bb474320be3d2c77138f75b7c3941292d647f5f9634e33a8e94e0e069b910160405180910390a1005b600080fd5b34801561021557600080fd5b506102296102243660046123dd565b61064e565b005b34801561023757600080fd5b5061024b610246366004612416565b610c8d565b60405190151581526020015b60405180910390f35b34801561026c57600080fd5b50600754610280906001600160a01b031681565b6040516001600160a01b039091168152602001610257565b3480156102a457600080fd5b506102c86102b3366004612440565b60009081526020819052604090206001015490565b604051908152602001610257565b3480156102e257600080fd5b506102296102f1366004612459565b610cb8565b34801561030257600080fd5b5061028073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b34801561032a57600080fd5b50610229610339366004612459565b610ce3565b34801561034a57600080fd5b5061022961035936600461247e565b610d6f565b34801561036a57600080fd5b506102c8610379366004612440565b60046020526000908152604090205481565b34801561039757600080fd5b506102296103a63660046124b1565b610ed3565b3480156103b757600080fd5b506102296103c63660046123dd565b610fe6565b3480156103d757600080fd5b506103f8604051806040016040528060018152602001603160f81b81525081565b60405161025791906125df565b34801561041157600080fd5b50600654610280906001600160a01b031681565b34801561043157600080fd5b506102806104403660046125f2565b61115a565b34801561045157600080fd5b5061024b610460366004612459565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b34801561049557600080fd5b506102296104a4366004612614565b611179565b3480156104b557600080fd5b506102c86104c4366004612686565b611229565b3480156104d557600080fd5b50610280611380565b3480156104ea57600080fd5b506102c8600081565b3480156104ff57600080fd5b5061051361050e3660046126b2565b61142e565b6040516102579190612715565b34801561052c57600080fd5b5061054061053b366004612440565b611523565b6040516102579190612777565b34801561055957600080fd5b50610280610568366004612440565b6003602052600090815260409020546001600160a01b031681565b34801561058f57600080fd5b5061022961059e36600461247e565b611614565b3480156105af57600080fd5b506102296105be366004612459565b61170c565b3480156105cf57600080fd5b506102c86105de366004612440565b611893565b3480156105ef57600080fd5b506102296105fe366004612459565b6118aa565b34801561060f57600080fd5b506103f86118d0565b34801561062457600080fd5b5061028061063336600461247e565b61195e565b34801561064457600080fd5b506102c861271081565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff166106f75760405162461bcd60e51b815260206004820152603d60248201527f50726f746f636f6c436f6e74726f6c3a204f6e6c792070726f746f636f6c206160448201527f646d696e732063616e2063616c6c20746869732066756e6374696f6e2e00000060648201526084015b60405180910390fd5b600654604080516361d027b360e01b815290516001600160a01b0390921691839160009184916361d027b3916004808301926020929190829003018186803b15801561074257600080fd5b505afa158015610756573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077a91906127c4565b905060008061078884611999565b9050801561079857479150610812565b6040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b1580156107d757600080fd5b505afa1580156107eb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061080f91906127e1565b91505b604051630e78de6f60e31b8152306004820152600090612710906001600160a01b038816906373c6f3789060240160206040518083038186803b15801561085857600080fd5b505afa15801561086c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061089091906127e1565b61089a9085612810565b6108a4919061282f565b90506108b08184612851565b925060008215610a63576040516001600160a01b038a16908590600081818185875af1925050503d8060008114610903576040519150601f19603f3d011682016040523d82523d6000602084013e610908565b606091505b5050809150508061095b5760405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f2077697468647261772066756e6473000000000000000060448201526064016106ee565b6040516001600160a01b038616908390600081818185875af1925050503d80600081146109a4576040519150601f19603f3d011682016040523d82523d6000602084013e6109a9565b606091505b50508091505080610a085760405162461bcd60e51b8152602060048201526024808201527f6661696c656420746f2077697468647261772066756e647320746f20726567696044820152637374727960e01b60648201526084016106ee565b876001600160a01b0316896001600160a01b03167f080a49aa43b33f2f3fe14496cbedde2305f0cc484e98afb78e943cf9881adc8a8685604051610a56929190918252602082015260400190565b60405180910390a3610c82565b60405163a9059cbb60e01b81526001600160a01b038a811660048301526024820186905287169063a9059cbb90604401602060405180830381600087803b158015610aad57600080fd5b505af1158015610ac1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ae59190612868565b905080610b345760405162461bcd60e51b815260206004820152601a60248201527f6661696c656420746f207472616e73666572207061796d656e7400000000000060448201526064016106ee565b60405163a9059cbb60e01b81526001600160a01b0386811660048301526024820184905287169063a9059cbb90604401602060405180830381600087803b158015610b7e57600080fd5b505af1158015610b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb69190612868565b905080610c2b5760405162461bcd60e51b815260206004820152602660248201527f6661696c656420746f207472616e73666572207061796d656e7420746f20726560448201527f676973747279000000000000000000000000000000000000000000000000000060648201526084016106ee565b876001600160a01b0316896001600160a01b03167f080a49aa43b33f2f3fe14496cbedde2305f0cc484e98afb78e943cf9881adc8a8685604051610c79929190918252602082015260400190565b60405180910390a35b505050505050505050565b60006001600160e01b03198216635a05180f60e01b1480610cb25750610cb2826119cf565b92915050565b600082815260208190526040902060010154610cd48133611a04565b610cde8383611a82565b505050565b6001600160a01b0381163314610d615760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c66000000000000000000000000000000000060648201526084016106ee565b610d6b8282611aa4565b5050565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff16610e135760405162461bcd60e51b815260206004820152603d60248201527f50726f746f636f6c436f6e74726f6c3a204f6e6c792070726f746f636f6c206160448201527f646d696e732063616e2063616c6c20746869732066756e6374696f6e2e00000060648201526084016106ee565b610e1c81611ac6565b610e7a5760405162461bcd60e51b815260206004820152602960248201527f50726f746f636f6c436f6e74726f6c3a2070726f766964657220736861726573604482015268103a37b7903637bb9760b91b60648201526084016106ee565b600780546001600160a01b0319166001600160a01b03831690811790915560405190815260009030907f55a6d5ecee94ad7f72b42efa05adae50807422b98f5c511cf7f0a0205b65b7519060200160405180910390a350565b600254610100900460ff16610eee5760025460ff1615610ef2565b303b155b610f645760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084016106ee565b600254610100900460ff16158015610f86576002805461ffff19166101011790555b8151610f999060099060208501906122b8565b50600680546001600160a01b0386166001600160a01b0319918216179091556007805490911630179055610fce600084611cf3565b8015610fe0576002805461ff00191690555b50505050565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff1661108a5760405162461bcd60e51b815260206004820152603d60248201527f50726f746f636f6c436f6e74726f6c3a204f6e6c792070726f746f636f6c206160448201527f646d696e732063616e2063616c6c20746869732066756e6374696f6e2e00000060648201526084016106ee565b61109381611ac6565b6110f15760405162461bcd60e51b815260206004820152602960248201527f50726f746f636f6c436f6e74726f6c3a2070726f766964657220736861726573604482015268103a37b7903637bb9760b91b60648201526084016106ee565b6001600160a01b0382811660008181526005602090815260409182902080546001600160a01b03191694861694851790559051928352909130917f55a6d5ecee94ad7f72b42efa05adae50807422b98f5c511cf7f0a0205b65b751910160405180910390a35050565b60008281526001602052604081206111729083611cfd565b9392505050565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff1661121d5760405162461bcd60e51b815260206004820152603d60248201527f50726f746f636f6c436f6e74726f6c3a204f6e6c792070726f746f636f6c206160448201527f646d696e732063616e2063616c6c20746869732066756e6374696f6e2e00000060648201526084016106ee565b610cde6009838361233c565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205460ff166112cd5760405162461bcd60e51b815260206004820152603d60248201527f50726f746f636f6c436f6e74726f6c3a204f6e6c792070726f746f636f6c206160448201527f646d696e732063616e2063616c6c20746869732066756e6374696f6e2e00000060648201526084016106ee565b50600081815260046020818152604080842080548251808501829052808401889052835180820385018152606090910190935282519284019290922086865293909252919260019261132090849061288a565b909155505060008181526003602052604080822080546001600160a01b0319166001600160a01b0387169081179091559051909183917ff0d0fe9ecd941ad0096a6b95e0998ddcd76ba6a240a106fef284fc2d4f0caa419190a392915050565b6008546000906001600160a01b031661141e57600660009054906101000a90046001600160a01b03166001600160a01b031663f645d4f96040518163ffffffff1660e01b815260040160206040518083038186803b1580156113e157600080fd5b505afa1580156113f5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141991906127c4565b905090565b506008546001600160a01b031690565b60608167ffffffffffffffff8111156114495761144961249b565b60405190808252806020026020018201604052801561147c57816020015b60608152602001906001900390816114675790505b50905060005b8281101561151c576114ec308585848181106114a0576114a06128a2565b90506020028101906114b291906128b8565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611d0992505050565b8282815181106114fe576114fe6128a2565b6020026020010181905250808061151490612906565b915050611482565b5092915050565b6000818152600460205260409020546060908067ffffffffffffffff81111561154e5761154e61249b565b604051908082528060200260200182016040528015611577578160200160208202803683370190505b50915060005b8181101561160d57604080516020810183905290810185905260009060600160408051601f1981840301815291815281516020928301206000818152600390935291205485519192506001600160a01b0316908590849081106115e2576115e26128a2565b6001600160a01b03909216602092830291909101909101525061160660018261288a565b905061157d565b5050919050565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff166116b85760405162461bcd60e51b815260206004820152603d60248201527f50726f746f636f6c436f6e74726f6c3a204f6e6c792070726f746f636f6c206160448201527f646d696e732063616e2063616c6c20746869732066756e6374696f6e2e00000060648201526084016106ee565b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f9d90a82ec1d038d4e13317a0eb136f9c65b7ed42156fc204ec4b7c4731e739509060200160405180910390a150565b3360009081527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604090205460ff166117b05760405162461bcd60e51b815260206004820152603d60248201527f50726f746f636f6c436f6e74726f6c3a204f6e6c792070726f746f636f6c206160448201527f646d696e732063616e2063616c6c20746869732066756e6374696f6e2e00000060648201526084016106ee565b6000828152600360205260409020546001600160a01b031661183a5760405162461bcd60e51b815260206004820152603660248201527f50726f746f636f6c436f6e74726f6c3a2061206d6f64756c652077697468207460448201527f68697320494420646f6573206e6f742065786973742e0000000000000000000060648201526084016106ee565b60008281526003602052604080822080546001600160a01b0319166001600160a01b0385169081179091559051909184917ff0d0fe9ecd941ad0096a6b95e0998ddcd76ba6a240a106fef284fc2d4f0caa419190a35050565b6000818152600160205260408120610cb290611d2e565b6000828152602081905260409020600101546118c68133611a04565b610cde8383611aa4565b600980546118dd90612921565b80601f016020809104026020016040519081016040528092919081815260200182805461190990612921565b80156119565780601f1061192b57610100808354040283529160200191611956565b820191906000526020600020905b81548152906001019060200180831161193957829003601f168201915b505050505081565b6001600160a01b0380821660009081526005602052604081205490911680610cb25750506007546001600160a01b0316919050565b3b151590565b60006001600160a01b03821673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1480610cb25750506001600160a01b03161590565b60006001600160e01b03198216637965db0b60e01b1480610cb257506301ffc9a760e01b6001600160e01b0319831614610cb2565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610d6b57611a40816001600160a01b03166014611d38565b611a4b836020611d38565b604051602001611a5c92919061295c565b60408051601f198184030181529082905262461bcd60e51b82526106ee916004016125df565b611a8c8282611ee1565b6000828152600160205260409020610cde9082611f7f565b611aae8282611f94565b6000828152600160205260409020610cde9082612013565b600654604080516361d027b360e01b8152905160009284926001600160a01b0391821692859285169163ce7c2ac29185916361d027b3916004808301926020929190829003018186803b158015611b1c57600080fd5b505afa158015611b30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b5491906127c4565b6040516001600160e01b031960e084901b1681526001600160a01b03909116600482015260240160206040518083038186803b158015611b9357600080fd5b505afa158015611ba7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bcb91906127e1565b90506000836001600160a01b0316633a98ef396040518163ffffffff1660e01b815260040160206040518083038186803b158015611c0857600080fd5b505afa158015611c1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c4091906127e1565b9050600081611c5161271085612810565b611c5b919061282f565b604051630e78de6f60e31b8152306004820152909150600a9081906001600160a01b038716906373c6f3789060240160206040518083038186803b158015611ca257600080fd5b505afa158015611cb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cda91906127e1565b611ce49190612851565b90911015979650505050505050565b610d6b8282611a82565b60006111728383612028565b60606111728383604051806060016040528060278152602001612a2760279139612052565b6000610cb2825490565b60606000611d47836002612810565b611d5290600261288a565b67ffffffffffffffff811115611d6a57611d6a61249b565b6040519080825280601f01601f191660200182016040528015611d94576020820181803683370190505b509050600360fc1b81600081518110611daf57611daf6128a2565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611dde57611dde6128a2565b60200101906001600160f81b031916908160001a9053506000611e02846002612810565b611e0d90600161288a565b90505b6001811115611e92577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110611e4e57611e4e6128a2565b1a60f81b828281518110611e6457611e646128a2565b60200101906001600160f81b031916908160001a90535060049490941c93611e8b816129dd565b9050611e10565b5083156111725760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106ee565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16610d6b576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055611f3b3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000611172836001600160a01b03841661213d565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1615610d6b576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611172836001600160a01b03841661218c565b600082600001828154811061203f5761203f6128a2565b9060005260206000200154905092915050565b6060833b6120c85760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084016106ee565b600080856001600160a01b0316856040516120e391906129f4565b600060405180830381855af49150503d806000811461211e576040519150601f19603f3d011682016040523d82523d6000602084013e612123565b606091505b509150915061213382828661227f565b9695505050505050565b600081815260018301602052604081205461218457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610cb2565b506000610cb2565b600081815260018301602052604081205480156122755760006121b0600183612851565b85549091506000906121c490600190612851565b90508181146122295760008660000182815481106121e4576121e46128a2565b9060005260206000200154905080876000018481548110612207576122076128a2565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061223a5761223a612a10565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610cb2565b6000915050610cb2565b6060831561228e575081611172565b82511561229e5782518084602001fd5b8160405162461bcd60e51b81526004016106ee91906125df565b8280546122c490612921565b90600052602060002090601f0160209004810192826122e6576000855561232c565b82601f106122ff57805160ff191683800117855561232c565b8280016001018555821561232c579182015b8281111561232c578251825591602001919060010190612311565b506123389291506123b0565b5090565b82805461234890612921565b90600052602060002090601f01602090048101928261236a576000855561232c565b82601f106123835782800160ff1982351617855561232c565b8280016001018555821561232c579182015b8281111561232c578235825591602001919060010190612395565b5b8082111561233857600081556001016123b1565b6001600160a01b03811681146123da57600080fd5b50565b600080604083850312156123f057600080fd5b82356123fb816123c5565b9150602083013561240b816123c5565b809150509250929050565b60006020828403121561242857600080fd5b81356001600160e01b03198116811461117257600080fd5b60006020828403121561245257600080fd5b5035919050565b6000806040838503121561246c57600080fd5b82359150602083013561240b816123c5565b60006020828403121561249057600080fd5b8135611172816123c5565b634e487b7160e01b600052604160045260246000fd5b6000806000606084860312156124c657600080fd5b83356124d1816123c5565b925060208401356124e1816123c5565b9150604084013567ffffffffffffffff808211156124fe57600080fd5b818601915086601f83011261251257600080fd5b8135818111156125245761252461249b565b604051601f8201601f19908116603f0116810190838211818310171561254c5761254c61249b565b8160405282815289602084870101111561256557600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b60005b838110156125a257818101518382015260200161258a565b83811115610fe05750506000910152565b600081518084526125cb816020860160208601612587565b601f01601f19169290920160200192915050565b60208152600061117260208301846125b3565b6000806040838503121561260557600080fd5b50508035926020909101359150565b6000806020838503121561262757600080fd5b823567ffffffffffffffff8082111561263f57600080fd5b818501915085601f83011261265357600080fd5b81358181111561266257600080fd5b86602082850101111561267457600080fd5b60209290920196919550909350505050565b6000806040838503121561269957600080fd5b82356126a4816123c5565b946020939093013593505050565b600080602083850312156126c557600080fd5b823567ffffffffffffffff808211156126dd57600080fd5b818501915085601f8301126126f157600080fd5b81358181111561270057600080fd5b8660208260051b850101111561267457600080fd5b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561276a57603f198886030184526127588583516125b3565b9450928501929085019060010161273c565b5092979650505050505050565b6020808252825182820181905260009190848201906040850190845b818110156127b85783516001600160a01b031683529284019291840191600101612793565b50909695505050505050565b6000602082840312156127d657600080fd5b8151611172816123c5565b6000602082840312156127f357600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561282a5761282a6127fa565b500290565b60008261284c57634e487b7160e01b600052601260045260246000fd5b500490565b600082821015612863576128636127fa565b500390565b60006020828403121561287a57600080fd5b8151801515811461117257600080fd5b6000821982111561289d5761289d6127fa565b500190565b634e487b7160e01b600052603260045260246000fd5b6000808335601e198436030181126128cf57600080fd5b83018035915067ffffffffffffffff8211156128ea57600080fd5b6020019150368190038213156128ff57600080fd5b9250929050565b600060001982141561291a5761291a6127fa565b5060010190565b600181811c9082168061293557607f821691505b6020821081141561295657634e487b7160e01b600052602260045260246000fd5b50919050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612994816017850160208801612587565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516129d1816028840160208801612587565b01602801949350505050565b6000816129ec576129ec6127fa565b506000190190565b60008251612a06818460208701612587565b9190910192915050565b634e487b7160e01b600052603160045260246000fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000809000a"; type ProtocolControlConstructorParams = | [signer?: Signer] | ConstructorParameters; const isSuperArgs = ( xs: ProtocolControlConstructorParams ): xs is ConstructorParameters => xs.length > 1; export class ProtocolControl__factory extends ContractFactory { constructor(...args: ProtocolControlConstructorParams) { if (isSuperArgs(args)) { super(...args); } else { super(_abi, _bytecode, args[0]); } } deploy( overrides?: Overrides & { from?: string | Promise } ): Promise { return super.deploy(overrides || {}) as Promise; } getDeployTransaction( overrides?: Overrides & { from?: string | Promise } ): TransactionRequest { return super.getDeployTransaction(overrides || {}); } attach(address: string): ProtocolControl { return super.attach(address) as ProtocolControl; } connect(signer: Signer): ProtocolControl__factory { return super.connect(signer) as ProtocolControl__factory; } static readonly bytecode = _bytecode; static readonly abi = _abi; static createInterface(): ProtocolControlInterface { return new utils.Interface(_abi) as ProtocolControlInterface; } static connect( address: string, signerOrProvider: Signer | Provider ): ProtocolControl { return new Contract(address, _abi, signerOrProvider) as ProtocolControl; } }