{
  "_format": "hh-sol-artifact-1",
  "contractName": "ERC20Mock",
  "sourceName": "contracts/mocks/ERC20Mock.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_initialAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "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": "_from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner_",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "deadline",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "permit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": "amount",
          "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": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60c060405234801561001057600080fd5b50604051610af0380380610af08339818101604052602081101561003357600080fd5b50514660a081905261004481610062565b608052503360009081526020819052604090208190556003556100bb565b604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692186020808301919091528183019390935230606080830191909152825180830390910181526080909101909152805191012090565b60805160a051610a126100de6000398061088c5250806108c15250610a126000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c806370a082311161006657806370a08231146101305780637ecebe0014610156578063a9059cbb1461017c578063d505accf146101a8578063dd62ed3e146101fb57610093565b8063095ea7b31461009857806318160ddd146100d857806323b872dd146100f25780633644e51514610128575b600080fd5b6100c4600480360360408110156100ae57600080fd5b506001600160a01b038135169060200135610229565b604080519115158252519081900360200190f35b6100e061028f565b60408051918252519081900360200190f35b6100c46004803603606081101561010857600080fd5b506001600160a01b03813581169160208101359091169060400135610295565b6100e06104a0565b6100e06004803603602081101561014657600080fd5b50356001600160a01b03166104af565b6100e06004803603602081101561016c57600080fd5b50356001600160a01b03166104c1565b6100c46004803603604081101561019257600080fd5b506001600160a01b0381351690602001356104d3565b6101f9600480360360e08110156101be57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610612565b005b6100e06004803603604081101561021157600080fd5b506001600160a01b038135811691602001351661086a565b3360008181526001602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60035481565b6000811561044b576001600160a01b03841660009081526020819052604090205482811015610304576040805162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614610449576001600160a01b038516600090815260016020908152604080832033845290915290205460001981146103c8578381101561039f576040805162461bcd60e51b815260206004820152601860248201527f45524332303a20616c6c6f77616e636520746f6f206c6f770000000000000000604482015290519081900360640190fd5b6001600160a01b0386166000908152600160209081526040808320338452909152902084820390555b6001600160a01b03851661041c576040805162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b604482015290519081900360640190fd5b506001600160a01b0380861660009081526020819052604080822086850390559186168152208054840190555b505b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35060019392505050565b60006104aa610887565b905090565b60006020819052908152604090205481565b60026020526000908152604090205481565b600081156105c9573360009081526020819052604090205482811015610539576040805162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b604482015290519081900360640190fd5b336001600160a01b038516146105c7576001600160a01b03841661059d576040805162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b604482015290519081900360640190fd5b3360009081526020819052604080822085840390556001600160a01b038616825290208054840190555b505b6040805183815290516001600160a01b0385169133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b6001600160a01b03871661066d576040805162461bcd60e51b815260206004820152601860248201527f45524332303a204f776e65722063616e6e6f7420626520300000000000000000604482015290519081900360640190fd5b8342106106b2576040805162461bcd60e51b815260206004820152600e60248201526d115490cc8c0e88115e1c1a5c995960921b604482015290519081900360640190fd5b6001600160a01b038088166000818152600260209081526040918290208054600181810190925583517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981850152808501869052958c166060870152608086018b905260a086015260c08086018a90528351808703909101815260e09095019092528351930192909220909190610748906108e7565b85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561079f573d6000803e3d6000fd5b505050602060405103516001600160a01b031614610804576040805162461bcd60e51b815260206004820152601860248201527f45524332303a20496e76616c6964205369676e61747572650000000000000000604482015290519081900360640190fd5b6001600160a01b038088166000818152600160209081526040808320948b1680845294825291829020899055815189815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a350505050505050565b600160209081526000928352604080842090915290825290205481565b6000467f000000000000000000000000000000000000000000000000000000000000000081146108bf576108ba81610983565b6108e1565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b600060405180604001604052806002815260200161190160f01b81525061090c610887565b836040516020018084805190602001908083835b6020831061093f5780518252601f199092019160209182019101610920565b51815160209384036101000a600019018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209392505050565b604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218602080830191909152818301939093523060608083019190915282518083039091018152608090910190915280519101209056fea26469706673582212201e99dc77c50a556f86295f4009c7f97903dfee8613a75136a796d097186915e164736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c806370a082311161006657806370a08231146101305780637ecebe0014610156578063a9059cbb1461017c578063d505accf146101a8578063dd62ed3e146101fb57610093565b8063095ea7b31461009857806318160ddd146100d857806323b872dd146100f25780633644e51514610128575b600080fd5b6100c4600480360360408110156100ae57600080fd5b506001600160a01b038135169060200135610229565b604080519115158252519081900360200190f35b6100e061028f565b60408051918252519081900360200190f35b6100c46004803603606081101561010857600080fd5b506001600160a01b03813581169160208101359091169060400135610295565b6100e06104a0565b6100e06004803603602081101561014657600080fd5b50356001600160a01b03166104af565b6100e06004803603602081101561016c57600080fd5b50356001600160a01b03166104c1565b6100c46004803603604081101561019257600080fd5b506001600160a01b0381351690602001356104d3565b6101f9600480360360e08110156101be57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610612565b005b6100e06004803603604081101561021157600080fd5b506001600160a01b038135811691602001351661086a565b3360008181526001602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b60035481565b6000811561044b576001600160a01b03841660009081526020819052604090205482811015610304576040805162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614610449576001600160a01b038516600090815260016020908152604080832033845290915290205460001981146103c8578381101561039f576040805162461bcd60e51b815260206004820152601860248201527f45524332303a20616c6c6f77616e636520746f6f206c6f770000000000000000604482015290519081900360640190fd5b6001600160a01b0386166000908152600160209081526040808320338452909152902084820390555b6001600160a01b03851661041c576040805162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b604482015290519081900360640190fd5b506001600160a01b0380861660009081526020819052604080822086850390559186168152208054840190555b505b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35060019392505050565b60006104aa610887565b905090565b60006020819052908152604090205481565b60026020526000908152604090205481565b600081156105c9573360009081526020819052604090205482811015610539576040805162461bcd60e51b815260206004820152601660248201527545524332303a2062616c616e636520746f6f206c6f7760501b604482015290519081900360640190fd5b336001600160a01b038516146105c7576001600160a01b03841661059d576040805162461bcd60e51b815260206004820152601660248201527545524332303a206e6f207a65726f206164647265737360501b604482015290519081900360640190fd5b3360009081526020819052604080822085840390556001600160a01b038616825290208054840190555b505b6040805183815290516001600160a01b0385169133917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a350600192915050565b6001600160a01b03871661066d576040805162461bcd60e51b815260206004820152601860248201527f45524332303a204f776e65722063616e6e6f7420626520300000000000000000604482015290519081900360640190fd5b8342106106b2576040805162461bcd60e51b815260206004820152600e60248201526d115490cc8c0e88115e1c1a5c995960921b604482015290519081900360640190fd5b6001600160a01b038088166000818152600260209081526040918290208054600181810190925583517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981850152808501869052958c166060870152608086018b905260a086015260c08086018a90528351808703909101815260e09095019092528351930192909220909190610748906108e7565b85858560405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561079f573d6000803e3d6000fd5b505050602060405103516001600160a01b031614610804576040805162461bcd60e51b815260206004820152601860248201527f45524332303a20496e76616c6964205369676e61747572650000000000000000604482015290519081900360640190fd5b6001600160a01b038088166000818152600160209081526040808320948b1680845294825291829020899055815189815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a350505050505050565b600160209081526000928352604080842090915290825290205481565b6000467f000000000000000000000000000000000000000000000000000000000000000081146108bf576108ba81610983565b6108e1565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b600060405180604001604052806002815260200161190160f01b81525061090c610887565b836040516020018084805190602001908083835b6020831061093f5780518252601f199092019160209182019101610920565b51815160209384036101000a600019018019909216911617905292019485525083810192909252506040805180840383018152928101905281519101209392505050565b604080517f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a79469218602080830191909152818301939093523060608083019190915282518083039091018152608090910190915280519101209056fea26469706673582212201e99dc77c50a556f86295f4009c7f97903dfee8613a75136a796d097186915e164736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
