{
  "_format": "hh-sol-artifact-1",
  "contractName": "CleanupBlockNumberManager",
  "sourceName": "contracts/token/implementation/CleanupBlockNumberManager.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_addressUpdater",
          "type": "address"
        },
        {
          "internalType": "string",
          "name": "_triggerContractName",
          "type": "string"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IICleanable",
          "name": "theContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        }
      ],
      "name": "CleanupBlockNumberSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "proposedGovernance",
          "type": "address"
        }
      ],
      "name": "GovernanceProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldGovernance",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newGoveranance",
          "type": "address"
        }
      ],
      "name": "GovernanceUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IICleanable",
          "name": "theContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "add",
          "type": "bool"
        }
      ],
      "name": "RegistrationUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "claimGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getAddressUpdater",
      "outputs": [
        {
          "internalType": "address",
          "name": "_addressUpdater",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "initialise",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "proposeGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposedGovernance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IICleanable",
          "name": "_cleanableToken",
          "type": "address"
        }
      ],
      "name": "registerToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "registeredTokens",
      "outputs": [
        {
          "internalType": "contract IICleanable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        }
      ],
      "name": "setCleanUpBlockNumber",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "transferGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "triggerContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "triggerContractName",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IICleanable",
          "name": "_cleanableToken",
          "type": "address"
        }
      ],
      "name": "unregisterToken",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32[]",
          "name": "_contractNameHashes",
          "type": "bytes32[]"
        },
        {
          "internalType": "address[]",
          "name": "_contractAddresses",
          "type": "address[]"
        }
      ],
      "name": "updateContractAddresses",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200129f3803806200129f833981810160405260608110156200003757600080fd5b815160208301516040808501805191519395929483019291846401000000008211156200006357600080fd5b9083019060208201858111156200007957600080fd5b82516401000000008111828201881017156200009457600080fd5b82525081516020918201929091019080838360005b83811015620000c3578181015183820152602001620000a9565b50505050905090810190601f168015620000f15780820380516001836020036101000a031916815260200191505b5060405250839150849050806001600160a01b038116156200011857620001188162000194565b506001600160a01b03811662000168576040805162461bcd60e51b815260206004820152601060248201526f5f676f7665726e616e6365207a65726f60801b604482015290519081900360640190fd5b50620001748162000278565b5080516200018a9060049060208401906200029c565b5050505062000348565b600154600160a01b900460ff1615620001f4576040805162461bcd60e51b815260206004820152601460248201527f696e697469616c6973656420213d2066616c7365000000000000000000000000604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620002d457600085556200031f565b82601f10620002ef57805160ff19168380011785556200031f565b828001600101855582156200031f579182015b828111156200031f57825182559160200191906001019062000302565b506200032d92915062000331565b5090565b5b808211156200032d576000815560010162000332565b610f4780620003586000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639d6a890f1161008c578063c373a08e11610066578063c373a08e14610360578063cbc31cf714610386578063d2b799ad146103a3578063d38bfff4146103ab576100ea565b80639d6a890f14610196578063b00c0b76146101bc578063c1ce5578146102e3576100ea565b80635d36b190116100c85780635d36b1901461014357806360f7ac971461014b57806377860cdd146101535780639a0ba2ea14610179576100ea565b806309824a80146100ef5780635267a15d146101175780635aa6e6751461013b575b600080fd5b6101156004803603602081101561010557600080fd5b50356001600160a01b03166103d1565b005b61011f6104b3565b604080516001600160a01b039092168252519081900360200190f35b61011f6104d8565b6101156104e7565b61011f6105a9565b6101156004803603602081101561016957600080fd5b50356001600160a01b03166105b8565b61011f6004803603602081101561018f57600080fd5b5035610792565b610115600480360360208110156101ac57600080fd5b50356001600160a01b03166107bc565b610115600480360360408110156101d257600080fd5b8101906020810181356401000000008111156101ed57600080fd5b8201836020820111156101ff57600080fd5b8035906020019184602083028401116401000000008311171561022157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561027157600080fd5b82018360208201111561028357600080fd5b803590602001918460208302840111640100000000831117156102a557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610896945050505050565b6102eb610941565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032557818101518382015260200161030d565b50505050905090810190601f1680156103525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101156004803603602081101561037657600080fd5b50356001600160a01b03166109cf565b6101156004803603602081101561039c57600080fd5b5035610a2b565b61011f610c2a565b610115600480360360208110156103c157600080fd5b50356001600160a01b0316610c39565b6103d9610cb2565b60025460005b8181101561042257600281815481106103f457fe5b6000918252602090912001546001600160a01b038481169116141561041a5750506104b0565b6001016103df565b5060028054600180820183556000929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03851690811790915560408051918252602082019290925281517f86d03f430c7616021073d7a71766f632f1ce19f289aa989534d9f4732253eb59929181900390910190a1505b50565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e77195490565b6000546001600160a01b031681565b6001546001600160a01b03163314610536576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b6105c0610cb2565b60025460005b818110156106e257600281815481106105db57fe5b6000918252602090912001546001600160a01b03848116911614156106da576002600183038154811061060a57fe5b600091825260209091200154600280546001600160a01b03909216918390811061063057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600280548061066957fe5b60008281526020808220830160001990810180546001600160a01b0319169055909201909255604080516001600160a01b03871681529182019290925281517f86d03f430c7616021073d7a71766f632f1ce19f289aa989534d9f4732253eb59929181900390910190a150506104b0565b6001016105c6565b506040518060400160405280601281526020017118dbdb9d1c9858dd081b9bdd08199bdd5b9960721b81525060405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561075757818101518382015260200161073f565b50505050905090810190601f1680156107845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b600281815481106107a257600080fd5b6000918252602090912001546001600160a01b0316905081565b600154600160a01b900460ff1615610812576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b61089e6104b3565b6001600160a01b0316336001600160a01b0316146108fa576040805162461bcd60e51b815260206004820152601460248201527337b7363c9030b2323932b9b9903ab83230ba32b960611b604482015290519081900360640190fd5b61093361092e83836040518060400160405280600e81526020016d20b2323932b9b9aab83230ba32b960911b815250610d05565b610e32565b61093d8282610e56565b5050565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109c75780601f1061099c576101008083540402835291602001916109c7565b820191906000526020600020905b8154815290600101906020018083116109aa57829003601f168201915b505050505081565b6109d7610cb2565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b6003546001600160a01b0316331480610a4e57506000546001600160a01b031633145b6040518060400160405280601a81526020017f74726967676572206f7220676f7665726e616e6365206f6e6c7900000000000081525090610ad05760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561075757818101518382015260200161073f565b5060025460005b81811015610c255760028181548110610aec57fe5b6000918252602082200154604080516313de97f560e01b81526004810187905290516001600160a01b03909216926313de97f59260248084019382900301818387803b158015610b3b57600080fd5b505af1925050508015610b4c575060015b610bb9577f6e31dc4aae4e8c2369947a8179952c1929b7af7bc75f57e71ebce5d37e62eae760028281548110610b7e57fe5b6000918252602080832090910154604080516001600160a01b03909216825291810187905280820192909252519081900360600190a1610c1d565b7f6e31dc4aae4e8c2369947a8179952c1929b7af7bc75f57e71ebce5d37e62eae760028281548110610be757fe5b60009182526020918290200154604080516001600160a01b03909216825291810186905260018183015290519081900360600190a15b600101610ad7565b505050565b6003546001600160a01b031681565b610c41610cb2565b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b03163314610d03576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b565b600080826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610d49578181015183820152602001610d31565b50505050905090810190601f168015610d765780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012090506000805b8651811015610dde57868181518110610dac57fe5b6020026020010151831415610dd657858181518110610dc757fe5b60200260200101519150610dde565b600101610d97565b506001600160a01b038116610e29576040805162461bcd60e51b815260206004820152600c60248201526b61646472657373207a65726f60a01b604482015290519081900360640190fd5b95945050505050565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152610eed9386938693830182828015610ee35780601f10610eb857610100808354040283529160200191610ee3565b820191906000526020600020905b815481529060010190602001808311610ec657829003601f168201915b5050505050610d05565b600380546001600160a01b0319166001600160a01b0392909216919091179055505056fea2646970667358221220fd68eee4c4a125e4d6933ce558f73f51abc2bb603e2edfd6fdf690434cee5de364736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c80639d6a890f1161008c578063c373a08e11610066578063c373a08e14610360578063cbc31cf714610386578063d2b799ad146103a3578063d38bfff4146103ab576100ea565b80639d6a890f14610196578063b00c0b76146101bc578063c1ce5578146102e3576100ea565b80635d36b190116100c85780635d36b1901461014357806360f7ac971461014b57806377860cdd146101535780639a0ba2ea14610179576100ea565b806309824a80146100ef5780635267a15d146101175780635aa6e6751461013b575b600080fd5b6101156004803603602081101561010557600080fd5b50356001600160a01b03166103d1565b005b61011f6104b3565b604080516001600160a01b039092168252519081900360200190f35b61011f6104d8565b6101156104e7565b61011f6105a9565b6101156004803603602081101561016957600080fd5b50356001600160a01b03166105b8565b61011f6004803603602081101561018f57600080fd5b5035610792565b610115600480360360208110156101ac57600080fd5b50356001600160a01b03166107bc565b610115600480360360408110156101d257600080fd5b8101906020810181356401000000008111156101ed57600080fd5b8201836020820111156101ff57600080fd5b8035906020019184602083028401116401000000008311171561022157600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929594936020810193503591505064010000000081111561027157600080fd5b82018360208201111561028357600080fd5b803590602001918460208302840111640100000000831117156102a557600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610896945050505050565b6102eb610941565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561032557818101518382015260200161030d565b50505050905090810190601f1680156103525780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101156004803603602081101561037657600080fd5b50356001600160a01b03166109cf565b6101156004803603602081101561039c57600080fd5b5035610a2b565b61011f610c2a565b610115600480360360208110156103c157600080fd5b50356001600160a01b0316610c39565b6103d9610cb2565b60025460005b8181101561042257600281815481106103f457fe5b6000918252602090912001546001600160a01b038481169116141561041a5750506104b0565b6001016103df565b5060028054600180820183556000929092527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b03851690811790915560408051918252602082019290925281517f86d03f430c7616021073d7a71766f632f1ce19f289aa989534d9f4732253eb59929181900390910190a1505b50565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e77195490565b6000546001600160a01b031681565b6001546001600160a01b03163314610536576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b6105c0610cb2565b60025460005b818110156106e257600281815481106105db57fe5b6000918252602090912001546001600160a01b03848116911614156106da576002600183038154811061060a57fe5b600091825260209091200154600280546001600160a01b03909216918390811061063057fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550600280548061066957fe5b60008281526020808220830160001990810180546001600160a01b0319169055909201909255604080516001600160a01b03871681529182019290925281517f86d03f430c7616021073d7a71766f632f1ce19f289aa989534d9f4732253eb59929181900390910190a150506104b0565b6001016105c6565b506040518060400160405280601281526020017118dbdb9d1c9858dd081b9bdd08199bdd5b9960721b81525060405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561075757818101518382015260200161073f565b50505050905090810190601f1680156107845780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b600281815481106107a257600080fd5b6000918252602090912001546001600160a01b0316905081565b600154600160a01b900460ff1615610812576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b61089e6104b3565b6001600160a01b0316336001600160a01b0316146108fa576040805162461bcd60e51b815260206004820152601460248201527337b7363c9030b2323932b9b9903ab83230ba32b960611b604482015290519081900360640190fd5b61093361092e83836040518060400160405280600e81526020016d20b2323932b9b9aab83230ba32b960911b815250610d05565b610e32565b61093d8282610e56565b5050565b6004805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156109c75780601f1061099c576101008083540402835291602001916109c7565b820191906000526020600020905b8154815290600101906020018083116109aa57829003601f168201915b505050505081565b6109d7610cb2565b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b6003546001600160a01b0316331480610a4e57506000546001600160a01b031633145b6040518060400160405280601a81526020017f74726967676572206f7220676f7665726e616e6365206f6e6c7900000000000081525090610ad05760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561075757818101518382015260200161073f565b5060025460005b81811015610c255760028181548110610aec57fe5b6000918252602082200154604080516313de97f560e01b81526004810187905290516001600160a01b03909216926313de97f59260248084019382900301818387803b158015610b3b57600080fd5b505af1925050508015610b4c575060015b610bb9577f6e31dc4aae4e8c2369947a8179952c1929b7af7bc75f57e71ebce5d37e62eae760028281548110610b7e57fe5b6000918252602080832090910154604080516001600160a01b03909216825291810187905280820192909252519081900360600190a1610c1d565b7f6e31dc4aae4e8c2369947a8179952c1929b7af7bc75f57e71ebce5d37e62eae760028281548110610be757fe5b60009182526020918290200154604080516001600160a01b03909216825291810186905260018183015290519081900360600190a15b600101610ad7565b505050565b6003546001600160a01b031681565b610c41610cb2565b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b03163314610d03576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b565b600080826040516020018080602001828103825283818151815260200191508051906020019080838360005b83811015610d49578181015183820152602001610d31565b50505050905090810190601f168015610d765780820380516001836020036101000a031916815260200191505b50925050506040516020818303038152906040528051906020012090506000805b8651811015610dde57868181518110610dac57fe5b6020026020010151831415610dd657858181518110610dc757fe5b60200260200101519150610dde565b600101610d97565b506001600160a01b038116610e29576040805162461bcd60e51b815260206004820152600c60248201526b61646472657373207a65726f60a01b604482015290519081900360640190fd5b95945050505050565b7f714f205b2abd25bef1d06a1af944e38c113fe6160375c4e1d6d5cf28848e771955565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152610eed9386938693830182828015610ee35780601f10610eb857610100808354040283529160200191610ee3565b820191906000526020600020905b815481529060010190602001808311610ec657829003601f168201915b5050505050610d05565b600380546001600160a01b0319166001600160a01b0392909216919091179055505056fea2646970667358221220fd68eee4c4a125e4d6933ce558f73f51abc2bb603e2edfd6fdf690434cee5de364736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
