{
  "_format": "hh3-artifact-1",
  "contractName": "MockUSDC",
  "sourceName": "contracts/test/MockStableToken.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "initialSupply",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "allowance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientAllowance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "needed",
          "type": "uint256"
        }
      ],
      "name": "ERC20InsufficientBalance",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "approver",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidApprover",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidReceiver",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidSender",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "ERC20InvalidSpender",
      "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": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "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"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "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": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561001057600080fd5b50604051610e36380380610e3683398101604081905261002f916102ad565b33604051806040016040528060088152602001672aa9a21021b7b4b760c11b815250604051806040016040528060048152602001635553444360e01b815250816003908161007d9190610365565b50600461008a8282610365565b5050506001600160a01b0381166100c0576000604051631e4fbdf760e01b81526004016100b79190610423565b60405180910390fd5b6100c9816100f7565b50600660808190526100f19033906100e290600a610536565b6100ec908461054c565b610149565b50610576565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03821661017357600060405163ec442f0560e01b81526004016100b79190610423565b61017f60008383610183565b5050565b6001600160a01b0383166101ae5780600260008282546101a39190610563565b909155506102209050565b6001600160a01b038316600090815260208190526040902054818110156102015760405163391434e360e21b81526001600160a01b038516600482015260248101829052604481018390526064016100b7565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661023c5760028054829003905561025b565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516102a091815260200190565b60405180910390a3505050565b6000602082840312156102bf57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806102f057607f821691505b60208210810361031057634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561036057806000526020600020601f840160051c8101602085101561033d5750805b601f840160051c820191505b8181101561035d5760008155600101610349565b50505b505050565b81516001600160401b0381111561037e5761037e6102c6565b6103928161038c84546102dc565b84610316565b6020601f8211600181146103c657600083156103ae5750848201515b600019600385901b1c1916600184901b17845561035d565b600084815260208120601f198516915b828110156103f657878501518255602094850194600190920191016103d6565b50848210156104145786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b6001600160a01b0391909116815260200190565b634e487b7160e01b600052601160045260246000fd5b6001815b60018411156104885780850481111561046c5761046c610437565b600184161561047a57908102905b60019390931c928002610451565b935093915050565b60008261049f57506001610530565b816104ac57506000610530565b81600181146104c257600281146104cc576104e8565b6001915050610530565b60ff8411156104dd576104dd610437565b50506001821b610530565b5060208310610133831016604e8410600b841016171561050b575081810a610530565b610518600019848461044d565b806000190482111561052c5761052c610437565b0290505b92915050565b600061054560ff841683610490565b9392505050565b808202811582820484141761053057610530610437565b8082018082111561053057610530610437565b6080516108a5610591600039600061012101526108a56000f3fe608060405234801561001057600080fd5b50600436106100af5760003560e01c806306fdde03146100b4578063095ea7b3146100d257806318160ddd146100f557806323b872dd14610107578063313ce5671461011a57806340c10f191461014b57806370a0823114610160578063715018a6146101895780638da5cb5b1461019157806395d89b41146101a6578063a9059cbb146101ae578063dd62ed3e146101c1578063f2fde38b146101d4575b600080fd5b6100bc6101e7565b6040516100c991906106e2565b60405180910390f35b6100e56100e036600461074c565b610279565b60405190151581526020016100c9565b6002545b6040519081526020016100c9565b6100e5610115366004610776565b610293565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100c9565b61015e61015936600461074c565b6102b7565b005b6100f961016e3660046107b3565b6001600160a01b031660009081526020819052604090205490565b61015e6102c5565b6101996102d9565b6040516100c991906107d5565b6100bc6102e8565b6100e56101bc36600461074c565b6102f7565b6100f96101cf3660046107e9565b610305565b61015e6101e23660046107b3565b610330565b6060600380546101f69061081c565b80601f01602080910402602001604051908101604052809291908181526020018280546102229061081c565b801561026f5780601f106102445761010080835404028352916020019161026f565b820191906000526020600020905b81548152906001019060200180831161025257829003601f168201915b5050505050905090565b600033610287818585610377565b60019150505b92915050565b6000336102a1858285610389565b6102ac8585856103dd565b506001949350505050565b6102c1828261043c565b5050565b6102cd610472565b6102d760006104a4565b565b6005546001600160a01b031690565b6060600480546101f69061081c565b6000336102878185856103dd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610338610472565b6001600160a01b03811661036b576000604051631e4fbdf760e01b815260040161036291906107d5565b60405180910390fd5b610374816104a4565b50565b61038483838360016104f6565b505050565b60006103958484610305565b90506000198110156103d757818110156103c857828183604051637dc7a0d960e11b815260040161036293929190610856565b6103d7848484840360006104f6565b50505050565b6001600160a01b038316610407576000604051634b637e8f60e11b815260040161036291906107d5565b6001600160a01b03821661043157600060405163ec442f0560e01b815260040161036291906107d5565b6103848383836105cb565b6001600160a01b03821661046657600060405163ec442f0560e01b815260040161036291906107d5565b6102c1600083836105cb565b3361047b6102d9565b6001600160a01b0316146102d7573360405163118cdaa760e01b815260040161036291906107d5565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03841661052057600060405163e602df0560e01b815260040161036291906107d5565b6001600160a01b03831661054a576000604051634a1406b160e11b815260040161036291906107d5565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103d757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105bd91815260200190565b60405180910390a350505050565b6001600160a01b0383166105f65780600260008282546105eb9190610877565b909155506106559050565b6001600160a01b038316600090815260208190526040902054818110156106365783818360405163391434e360e21b815260040161036293929190610856565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661067157600280548290039055610690565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106d591815260200190565b60405180910390a3505050565b602081526000825180602084015260005b8181101561071057602081860181015160408684010152016106f3565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461074757600080fd5b919050565b6000806040838503121561075f57600080fd5b61076883610730565b946020939093013593505050565b60008060006060848603121561078b57600080fd5b61079484610730565b92506107a260208501610730565b929592945050506040919091013590565b6000602082840312156107c557600080fd5b6107ce82610730565b9392505050565b6001600160a01b0391909116815260200190565b600080604083850312156107fc57600080fd5b61080583610730565b915061081360208401610730565b90509250929050565b600181811c9082168061083057607f821691505b60208210810361085057634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561028d57634e487b7160e01b600052601160045260246000fdfea164736f6c634300081c000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100af5760003560e01c806306fdde03146100b4578063095ea7b3146100d257806318160ddd146100f557806323b872dd14610107578063313ce5671461011a57806340c10f191461014b57806370a0823114610160578063715018a6146101895780638da5cb5b1461019157806395d89b41146101a6578063a9059cbb146101ae578063dd62ed3e146101c1578063f2fde38b146101d4575b600080fd5b6100bc6101e7565b6040516100c991906106e2565b60405180910390f35b6100e56100e036600461074c565b610279565b60405190151581526020016100c9565b6002545b6040519081526020016100c9565b6100e5610115366004610776565b610293565b60405160ff7f00000000000000000000000000000000000000000000000000000000000000001681526020016100c9565b61015e61015936600461074c565b6102b7565b005b6100f961016e3660046107b3565b6001600160a01b031660009081526020819052604090205490565b61015e6102c5565b6101996102d9565b6040516100c991906107d5565b6100bc6102e8565b6100e56101bc36600461074c565b6102f7565b6100f96101cf3660046107e9565b610305565b61015e6101e23660046107b3565b610330565b6060600380546101f69061081c565b80601f01602080910402602001604051908101604052809291908181526020018280546102229061081c565b801561026f5780601f106102445761010080835404028352916020019161026f565b820191906000526020600020905b81548152906001019060200180831161025257829003601f168201915b5050505050905090565b600033610287818585610377565b60019150505b92915050565b6000336102a1858285610389565b6102ac8585856103dd565b506001949350505050565b6102c1828261043c565b5050565b6102cd610472565b6102d760006104a4565b565b6005546001600160a01b031690565b6060600480546101f69061081c565b6000336102878185856103dd565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610338610472565b6001600160a01b03811661036b576000604051631e4fbdf760e01b815260040161036291906107d5565b60405180910390fd5b610374816104a4565b50565b61038483838360016104f6565b505050565b60006103958484610305565b90506000198110156103d757818110156103c857828183604051637dc7a0d960e11b815260040161036293929190610856565b6103d7848484840360006104f6565b50505050565b6001600160a01b038316610407576000604051634b637e8f60e11b815260040161036291906107d5565b6001600160a01b03821661043157600060405163ec442f0560e01b815260040161036291906107d5565b6103848383836105cb565b6001600160a01b03821661046657600060405163ec442f0560e01b815260040161036291906107d5565b6102c1600083836105cb565b3361047b6102d9565b6001600160a01b0316146102d7573360405163118cdaa760e01b815260040161036291906107d5565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03841661052057600060405163e602df0560e01b815260040161036291906107d5565b6001600160a01b03831661054a576000604051634a1406b160e11b815260040161036291906107d5565b6001600160a01b03808516600090815260016020908152604080832093871683529290522082905580156103d757826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516105bd91815260200190565b60405180910390a350505050565b6001600160a01b0383166105f65780600260008282546105eb9190610877565b909155506106559050565b6001600160a01b038316600090815260208190526040902054818110156106365783818360405163391434e360e21b815260040161036293929190610856565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821661067157600280548290039055610690565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516106d591815260200190565b60405180910390a3505050565b602081526000825180602084015260005b8181101561071057602081860181015160408684010152016106f3565b506000604082850101526040601f19601f83011684010191505092915050565b80356001600160a01b038116811461074757600080fd5b919050565b6000806040838503121561075f57600080fd5b61076883610730565b946020939093013593505050565b60008060006060848603121561078b57600080fd5b61079484610730565b92506107a260208501610730565b929592945050506040919091013590565b6000602082840312156107c557600080fd5b6107ce82610730565b9392505050565b6001600160a01b0391909116815260200190565b600080604083850312156107fc57600080fd5b61080583610730565b915061081360208401610730565b90509250929050565b600181811c9082168061083057607f821691505b60208210810361085057634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b039390931683526020830191909152604082015260600190565b8082018082111561028d57634e487b7160e01b600052601160045260246000fdfea164736f6c634300081c000a",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "immutableReferences": {
    "33611": [
      {
        "length": 32,
        "start": 289
      }
    ]
  },
  "inputSourceName": "project/contracts/test/MockStableToken.sol",
  "buildInfoId": "solc-0_8_28-58b894a0ac77a2d784be77b69288a062b8f6f518"
}