{
  "_format": "hh-sol-artifact-1",
  "contractName": "MockBluePrint",
  "sourceName": "contracts/test/MockBluePrint.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "AccessDenied",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "bytes",
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "name": "ExecutionFailed",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "InvalidInitialization",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "NotInitializing",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "Executed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "version",
          "type": "uint64"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "createOneTimeTicket",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "delegatecall",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "execute",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "executeUnsafe",
      "outputs": [
        {
          "internalType": "bool",
          "name": "success",
          "type": "bool"
        },
        {
          "internalType": "bytes",
          "name": "returnData",
          "type": "bytes"
        }
      ],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "targets",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "values",
          "type": "uint256[]"
        },
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "oneTimeTickets",
      "outputs": [
        {
          "internalType": "bool",
          "name": "ticket",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        }
      ],
      "name": "revokeOneTimeTicket",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "upgradedToMockBluePrint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b611096806100d96000396000f3fe6080604052600436106100a05760003560e01c80638da5cb5b116100645780638da5cb5b14610161578063b61d27f614610199578063c4d66de8146101b9578063c72c901a146101d9578063dc40af1f146101f9578063e1f21c671461022957600080fd5b806341e15ea0146100ac57806345670295146100d157806345f67ac7146100f25780636e0aacf71461011f5780637e383a751461013f57600080fd5b366100a757005b600080fd5b3480156100b857600080fd5b5060015b60405190151581526020015b60405180910390f35b6100e46100df366004610c2b565b610249565b6040516100c8929190610cd5565b3480156100fe57600080fd5b5061011261010d366004610d3d565b610373565b6040516100c89190610de3565b34801561012b57600080fd5b506100e461013a366004610e48565b6105cc565b34801561014b57600080fd5b5061015f61015a366004610e9b565b6106e6565b005b34801561016d57600080fd5b50600054610181906001600160a01b031681565b6040516001600160a01b0390911681526020016100c8565b6101ac6101a7366004610c2b565b610741565b6040516100c89190610ebd565b3480156101c557600080fd5b5061015f6101d4366004610e9b565b610895565b3480156101e557600080fd5b5061015f6101f4366004610e9b565b6109b7565b34801561020557600080fd5b506100bc610214366004610e9b565b60016020526000908152604090205460ff1681565b34801561023557600080fd5b5061015f610244366004610ed0565b610a18565b3360009081526001602052604081205460609060ff161561028057336000908152600160205260409020805460ff191690556102c0565b60005433906001600160a01b031681146102be57604051630504a20d60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b505b856001600160a01b03168585856040516102db929190610f0d565b60006040518083038185875af1925050503d8060008114610318576040519150601f19603f3d011682016040523d82523d6000602084013e61031d565b606091505b5060405191935091506001600160a01b038716907fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9061036290889088908890610f46565b60405180910390a294509492505050565b3360009081526001602052604090205460609060ff16156103aa57336000908152600160205260409020805460ff191690556103e5565b60005433906001600160a01b031681146103e357604051630504a20d60e01b81526001600160a01b0390911660048201526024016102b5565b505b60008667ffffffffffffffff81111561040057610400610f69565b60405190808252806020026020018201604052801561043357816020015b606081526020019060019003908161041e5790505b50905060005b878110156105c0576000808a8a8481811061045657610456610f7f565b905060200201602081019061046b9190610e9b565b6001600160a01b031689898581811061048657610486610f7f565b9050602002013588888681811061049f5761049f610f7f565b90506020028101906104b19190610f95565b6040516104bf929190610f0d565b60006040518083038185875af1925050503d80600081146104fc576040519150601f19603f3d011682016040523d82523d6000602084013e610501565b606091505b5091509150818b8b8581811061051957610519610f7f565b905060200201602081019061052e9190610e9b565b8a8a8681811061054057610540610f7f565b9050602002013589898781811061055957610559610f7f565b905060200281019061056b9190610f95565b85909192939461059357604051630717adb560e21b81526004016102b5959493929190610fdc565b5050505050808484815181106105ab576105ab610f7f565b60209081029190910101525050600101610439565b50979650505050505050565b6000805460609033906001600160a01b0316811461060957604051630504a20d60e01b81526001600160a01b0390911660048201526024016102b5565b50846001600160a01b03168484604051610624929190610f0d565b600060405180830381855af49150503d806000811461065f576040519150601f19603f3d011682016040523d82523d6000602084013e610664565b606091505b5090925090508460008585848661069357604051630717adb560e21b81526004016102b5959493929190610fdc565b5050505050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f600086866040516106d693929190610f46565b60405180910390a2935093915050565b60005433906001600160a01b0316811461071f57604051630504a20d60e01b81526001600160a01b0390911660048201526024016102b5565b506001600160a01b03166000908152600160205260409020805460ff19169055565b3360009081526001602052604090205460609060ff161561077857336000908152600160205260409020805460ff191690556107b3565b60005433906001600160a01b031681146107b157604051630504a20d60e01b81526001600160a01b0390911660048201526024016102b5565b505b600080866001600160a01b03168686866040516107d1929190610f0d565b60006040518083038185875af1925050503d806000811461080e576040519150601f19603f3d011682016040523d82523d6000602084013e610813565b606091505b50909250905086868686848661084157604051630717adb560e21b81526004016102b5959493929190610fdc565b5050505050866001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f87878760405161088393929190610f46565b60405180910390a29695505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156108db5750825b905060008267ffffffffffffffff1660011480156108f85750303b155b905081158015610906575080155b156109245760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561094e57845460ff60401b1916600160401b1785555b600080546001600160a01b0319166001600160a01b03881617905583156109af57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60005433906001600160a01b031681146109f057604051630504a20d60e01b81526001600160a01b0390911660048201526024016102b5565b506001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526001602052604090205460ff1615610a4c57336000908152600160205260409020805460ff19169055610a87565b60005433906001600160a01b03168114610a8557604051630504a20d60e01b81526001600160a01b0390911660048201526024016102b5565b505b610a92838383610a97565b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1790529151600092839290871691610af39190611022565b6000604051808303816000865af19150503d8060008114610b30576040519150601f19603f3d011682016040523d82523d6000602084013e610b35565b606091505b5091509150818015610b5f575080511580610b5f575080806020019051810190610b5f919061103e565b610bbf5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201526a1c9bdd994819985a5b195960aa1b60648201526084016102b5565b5050505050565b80356001600160a01b0381168114610bdd57600080fd5b919050565b60008083601f840112610bf457600080fd5b50813567ffffffffffffffff811115610c0c57600080fd5b602083019150836020828501011115610c2457600080fd5b9250929050565b60008060008060608587031215610c4157600080fd5b610c4a85610bc6565b935060208501359250604085013567ffffffffffffffff811115610c6d57600080fd5b610c7987828801610be2565b95989497509550505050565b60005b83811015610ca0578181015183820152602001610c88565b50506000910152565b60008151808452610cc1816020860160208601610c85565b601f01601f19169290920160200192915050565b8215158152604060208201526000610cf06040830184610ca9565b949350505050565b60008083601f840112610d0a57600080fd5b50813567ffffffffffffffff811115610d2257600080fd5b6020830191508360208260051b8501011115610c2457600080fd5b60008060008060008060608789031215610d5657600080fd5b863567ffffffffffffffff811115610d6d57600080fd5b610d7989828a01610cf8565b909750955050602087013567ffffffffffffffff811115610d9957600080fd5b610da589828a01610cf8565b909550935050604087013567ffffffffffffffff811115610dc557600080fd5b610dd189828a01610cf8565b979a9699509497509295939492505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610e3c57603f19878603018452610e27858351610ca9565b94506020938401939190910190600101610e0b565b50929695505050505050565b600080600060408486031215610e5d57600080fd5b610e6684610bc6565b9250602084013567ffffffffffffffff811115610e8257600080fd5b610e8e86828701610be2565b9497909650939450505050565b600060208284031215610ead57600080fd5b610eb682610bc6565b9392505050565b602081526000610eb66020830184610ca9565b600080600060608486031215610ee557600080fd5b610eee84610bc6565b9250610efc60208501610bc6565b929592945050506040919091013590565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b838152604060208201526000610f60604083018486610f1d565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610fac57600080fd5b83018035915067ffffffffffffffff821115610fc757600080fd5b602001915036819003821315610c2457600080fd5b60018060a01b0386168152846020820152608060408201526000611004608083018587610f1d565b82810360608401526110168185610ca9565b98975050505050505050565b60008251611034818460208701610c85565b9190910192915050565b60006020828403121561105057600080fd5b81518015158114610eb657600080fdfea26469706673582212200b526636d0ecf7b395f66bfd52858d8333e5a1cb0b047f9800b61711aa9cf6a064736f6c634300081c0033",
  "deployedBytecode": "0x6080604052600436106100a05760003560e01c80638da5cb5b116100645780638da5cb5b14610161578063b61d27f614610199578063c4d66de8146101b9578063c72c901a146101d9578063dc40af1f146101f9578063e1f21c671461022957600080fd5b806341e15ea0146100ac57806345670295146100d157806345f67ac7146100f25780636e0aacf71461011f5780637e383a751461013f57600080fd5b366100a757005b600080fd5b3480156100b857600080fd5b5060015b60405190151581526020015b60405180910390f35b6100e46100df366004610c2b565b610249565b6040516100c8929190610cd5565b3480156100fe57600080fd5b5061011261010d366004610d3d565b610373565b6040516100c89190610de3565b34801561012b57600080fd5b506100e461013a366004610e48565b6105cc565b34801561014b57600080fd5b5061015f61015a366004610e9b565b6106e6565b005b34801561016d57600080fd5b50600054610181906001600160a01b031681565b6040516001600160a01b0390911681526020016100c8565b6101ac6101a7366004610c2b565b610741565b6040516100c89190610ebd565b3480156101c557600080fd5b5061015f6101d4366004610e9b565b610895565b3480156101e557600080fd5b5061015f6101f4366004610e9b565b6109b7565b34801561020557600080fd5b506100bc610214366004610e9b565b60016020526000908152604090205460ff1681565b34801561023557600080fd5b5061015f610244366004610ed0565b610a18565b3360009081526001602052604081205460609060ff161561028057336000908152600160205260409020805460ff191690556102c0565b60005433906001600160a01b031681146102be57604051630504a20d60e01b81526001600160a01b0390911660048201526024015b60405180910390fd5b505b856001600160a01b03168585856040516102db929190610f0d565b60006040518083038185875af1925050503d8060008114610318576040519150601f19603f3d011682016040523d82523d6000602084013e61031d565b606091505b5060405191935091506001600160a01b038716907fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f9061036290889088908890610f46565b60405180910390a294509492505050565b3360009081526001602052604090205460609060ff16156103aa57336000908152600160205260409020805460ff191690556103e5565b60005433906001600160a01b031681146103e357604051630504a20d60e01b81526001600160a01b0390911660048201526024016102b5565b505b60008667ffffffffffffffff81111561040057610400610f69565b60405190808252806020026020018201604052801561043357816020015b606081526020019060019003908161041e5790505b50905060005b878110156105c0576000808a8a8481811061045657610456610f7f565b905060200201602081019061046b9190610e9b565b6001600160a01b031689898581811061048657610486610f7f565b9050602002013588888681811061049f5761049f610f7f565b90506020028101906104b19190610f95565b6040516104bf929190610f0d565b60006040518083038185875af1925050503d80600081146104fc576040519150601f19603f3d011682016040523d82523d6000602084013e610501565b606091505b5091509150818b8b8581811061051957610519610f7f565b905060200201602081019061052e9190610e9b565b8a8a8681811061054057610540610f7f565b9050602002013589898781811061055957610559610f7f565b905060200281019061056b9190610f95565b85909192939461059357604051630717adb560e21b81526004016102b5959493929190610fdc565b5050505050808484815181106105ab576105ab610f7f565b60209081029190910101525050600101610439565b50979650505050505050565b6000805460609033906001600160a01b0316811461060957604051630504a20d60e01b81526001600160a01b0390911660048201526024016102b5565b50846001600160a01b03168484604051610624929190610f0d565b600060405180830381855af49150503d806000811461065f576040519150601f19603f3d011682016040523d82523d6000602084013e610664565b606091505b5090925090508460008585848661069357604051630717adb560e21b81526004016102b5959493929190610fdc565b5050505050846001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f600086866040516106d693929190610f46565b60405180910390a2935093915050565b60005433906001600160a01b0316811461071f57604051630504a20d60e01b81526001600160a01b0390911660048201526024016102b5565b506001600160a01b03166000908152600160205260409020805460ff19169055565b3360009081526001602052604090205460609060ff161561077857336000908152600160205260409020805460ff191690556107b3565b60005433906001600160a01b031681146107b157604051630504a20d60e01b81526001600160a01b0390911660048201526024016102b5565b505b600080866001600160a01b03168686866040516107d1929190610f0d565b60006040518083038185875af1925050503d806000811461080e576040519150601f19603f3d011682016040523d82523d6000602084013e610813565b606091505b50909250905086868686848661084157604051630717adb560e21b81526004016102b5959493929190610fdc565b5050505050866001600160a01b03167fcaf938de11c367272220bfd1d2baa99ca46665e7bc4d85f00adb51b90fe1fa9f87878760405161088393929190610f46565b60405180910390a29695505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156108db5750825b905060008267ffffffffffffffff1660011480156108f85750303b155b905081158015610906575080155b156109245760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561094e57845460ff60401b1916600160401b1785555b600080546001600160a01b0319166001600160a01b03881617905583156109af57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b60005433906001600160a01b031681146109f057604051630504a20d60e01b81526001600160a01b0390911660048201526024016102b5565b506001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b3360009081526001602052604090205460ff1615610a4c57336000908152600160205260409020805460ff19169055610a87565b60005433906001600160a01b03168114610a8557604051630504a20d60e01b81526001600160a01b0390911660048201526024016102b5565b505b610a92838383610a97565b505050565b604080516001600160a01b038481166024830152604480830185905283518084039091018152606490920183526020820180516001600160e01b031663095ea7b360e01b1790529151600092839290871691610af39190611022565b6000604051808303816000865af19150503d8060008114610b30576040519150601f19603f3d011682016040523d82523d6000602084013e610b35565b606091505b5091509150818015610b5f575080511580610b5f575080806020019051810190610b5f919061103e565b610bbf5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657248656c7065723a3a73616665417070726f76653a2061707060448201526a1c9bdd994819985a5b195960aa1b60648201526084016102b5565b5050505050565b80356001600160a01b0381168114610bdd57600080fd5b919050565b60008083601f840112610bf457600080fd5b50813567ffffffffffffffff811115610c0c57600080fd5b602083019150836020828501011115610c2457600080fd5b9250929050565b60008060008060608587031215610c4157600080fd5b610c4a85610bc6565b935060208501359250604085013567ffffffffffffffff811115610c6d57600080fd5b610c7987828801610be2565b95989497509550505050565b60005b83811015610ca0578181015183820152602001610c88565b50506000910152565b60008151808452610cc1816020860160208601610c85565b601f01601f19169290920160200192915050565b8215158152604060208201526000610cf06040830184610ca9565b949350505050565b60008083601f840112610d0a57600080fd5b50813567ffffffffffffffff811115610d2257600080fd5b6020830191508360208260051b8501011115610c2457600080fd5b60008060008060008060608789031215610d5657600080fd5b863567ffffffffffffffff811115610d6d57600080fd5b610d7989828a01610cf8565b909750955050602087013567ffffffffffffffff811115610d9957600080fd5b610da589828a01610cf8565b909550935050604087013567ffffffffffffffff811115610dc557600080fd5b610dd189828a01610cf8565b979a9699509497509295939492505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b82811015610e3c57603f19878603018452610e27858351610ca9565b94506020938401939190910190600101610e0b565b50929695505050505050565b600080600060408486031215610e5d57600080fd5b610e6684610bc6565b9250602084013567ffffffffffffffff811115610e8257600080fd5b610e8e86828701610be2565b9497909650939450505050565b600060208284031215610ead57600080fd5b610eb682610bc6565b9392505050565b602081526000610eb66020830184610ca9565b600080600060608486031215610ee557600080fd5b610eee84610bc6565b9250610efc60208501610bc6565b929592945050506040919091013590565b8183823760009101908152919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b838152604060208201526000610f60604083018486610f1d565b95945050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e19843603018112610fac57600080fd5b83018035915067ffffffffffffffff821115610fc757600080fd5b602001915036819003821315610c2457600080fd5b60018060a01b0386168152846020820152608060408201526000611004608083018587610f1d565b82810360608401526110168185610ca9565b98975050505050505050565b60008251611034818460208701610c85565b9190910192915050565b60006020828403121561105057600080fd5b81518015158114610eb657600080fdfea26469706673582212200b526636d0ecf7b395f66bfd52858d8333e5a1cb0b047f9800b61711aa9cf6a064736f6c634300081c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
