{
  "_format": "hh-sol-artifact-1",
  "contractName": "IdentityOracle",
  "sourceName": "solidity/contracts/IdentityOracle.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        }
      ],
      "name": "PairCannotBeSupported",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        }
      ],
      "name": "PairNotSupportedYet",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenB",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "addOrModifySupportForPair",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenB",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "addSupportForPairIfNeeded",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenB",
          "type": "address"
        }
      ],
      "name": "canSupportPair",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_tokenB",
          "type": "address"
        }
      ],
      "name": "isPairAlreadySupported",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_tokenIn",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_amountIn",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_tokenOut",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "name": "quote",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "_interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610ae1806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063ac9650d81161005b578063ac9650d8146100d6578063d08a8a19146100f6578063d0a26eb314610117578063dd7de37e1461012c57600080fd5b806301ffc9a714610082578063734273fd146100aa5780639363edd6146100aa575b600080fd5b610095610090366004610619565b61013f565b60405190151581526020015b60405180910390f35b6100956100b8366004610684565b73ffffffffffffffffffffffffffffffffffffffff90811691161490565b6100e96100e43660046106b7565b610224565b6040516100a1919061079a565b610109610104366004610863565b610319565b6040519081526020016100a1565b61012a6101253660046108d2565b6103af565b005b61012a61013a3660046108d2565b6103e1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f3d7499ff0000000000000000000000000000000000000000000000000000000014806101d257507fffffffff0000000000000000000000000000000000000000000000000000000082167fac9650d800000000000000000000000000000000000000000000000000000000145b8061021e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60608167ffffffffffffffff81111561023f5761023f610933565b60405190808252806020026020018201604052801561027257816020015b606081526020019060019003908161025d5790505b50905060005b82811015610312576102e23085858481811061029657610296610962565b90506020028101906102a89190610991565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ed92505050565b8282815181106102f4576102f4610962565b6020026020010181905250808061030a906109f6565b915050610278565b5092915050565b60008373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146103a5576040517f75fcccb700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8088166004830152851660248201526044015b60405180910390fd5b5092949350505050565b73ffffffffffffffffffffffffffffffffffffffff808516908416146103db576103db84848484610419565b50505050565b6103db84848484610419565b60606104128383604051806060016040528060278152602001610a856027913961049e565b9392505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146103db576040517f2eb4e23d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301528416602482015260440161039c565b606073ffffffffffffffffffffffffffffffffffffffff84163b610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161039c565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161056c9190610a55565b600060405180830381855af49150503d80600081146105a7576040519150601f19603f3d011682016040523d82523d6000602084013e6105ac565b606091505b50915091506105bc8282866105c6565b9695505050505050565b606083156105d5575081610412565b8251156105e55782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039c9190610a71565b60006020828403121561062b57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461041257600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461067f57600080fd5b919050565b6000806040838503121561069757600080fd5b6106a08361065b565b91506106ae6020840161065b565b90509250929050565b600080602083850312156106ca57600080fd5b823567ffffffffffffffff808211156106e257600080fd5b818501915085601f8301126106f657600080fd5b81358181111561070557600080fd5b8660208260051b850101111561071a57600080fd5b60209290920196919550909350505050565b60005b8381101561074757818101518382015260200161072f565b50506000910152565b6000815180845261076881602086016020860161072c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561080d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526107fb858351610750565b945092850192908501906001016107c1565b5092979650505050505050565b60008083601f84011261082c57600080fd5b50813567ffffffffffffffff81111561084457600080fd5b60208301915083602082850101111561085c57600080fd5b9250929050565b60008060008060006080868803121561087b57600080fd5b6108848661065b565b9450602086013593506108996040870161065b565b9250606086013567ffffffffffffffff8111156108b557600080fd5b6108c18882890161081a565b969995985093965092949392505050565b600080600080606085870312156108e857600080fd5b6108f18561065b565b93506108ff6020860161065b565b9250604085013567ffffffffffffffff81111561091b57600080fd5b6109278782880161081a565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126109c657600080fd5b83018035915067ffffffffffffffff8211156109e157600080fd5b60200191503681900382131561085c57600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a4e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b60008251610a6781846020870161072c565b9190910192915050565b602081526000610412602083018461075056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122035740df8b0694609b2d649006469b15e78013dba95a01d07834bc135a42d911664736f6c63430008100033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c8063ac9650d81161005b578063ac9650d8146100d6578063d08a8a19146100f6578063d0a26eb314610117578063dd7de37e1461012c57600080fd5b806301ffc9a714610082578063734273fd146100aa5780639363edd6146100aa575b600080fd5b610095610090366004610619565b61013f565b60405190151581526020015b60405180910390f35b6100956100b8366004610684565b73ffffffffffffffffffffffffffffffffffffffff90811691161490565b6100e96100e43660046106b7565b610224565b6040516100a1919061079a565b610109610104366004610863565b610319565b6040519081526020016100a1565b61012a6101253660046108d2565b6103af565b005b61012a61013a3660046108d2565b6103e1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f3d7499ff0000000000000000000000000000000000000000000000000000000014806101d257507fffffffff0000000000000000000000000000000000000000000000000000000082167fac9650d800000000000000000000000000000000000000000000000000000000145b8061021e57507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b60608167ffffffffffffffff81111561023f5761023f610933565b60405190808252806020026020018201604052801561027257816020015b606081526020019060019003908161025d5790505b50905060005b82811015610312576102e23085858481811061029657610296610962565b90506020028101906102a89190610991565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506103ed92505050565b8282815181106102f4576102f4610962565b6020026020010181905250808061030a906109f6565b915050610278565b5092915050565b60008373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146103a5576040517f75fcccb700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8088166004830152851660248201526044015b60405180910390fd5b5092949350505050565b73ffffffffffffffffffffffffffffffffffffffff808516908416146103db576103db84848484610419565b50505050565b6103db84848484610419565b60606104128383604051806060016040528060278152602001610a856027913961049e565b9392505050565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146103db576040517f2eb4e23d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff80861660048301528416602482015260440161039c565b606073ffffffffffffffffffffffffffffffffffffffff84163b610544576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e74726163740000000000000000000000000000000000000000000000000000606482015260840161039c565b6000808573ffffffffffffffffffffffffffffffffffffffff168560405161056c9190610a55565b600060405180830381855af49150503d80600081146105a7576040519150601f19603f3d011682016040523d82523d6000602084013e6105ac565b606091505b50915091506105bc8282866105c6565b9695505050505050565b606083156105d5575081610412565b8251156105e55782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161039c9190610a71565b60006020828403121561062b57600080fd5b81357fffffffff000000000000000000000000000000000000000000000000000000008116811461041257600080fd5b803573ffffffffffffffffffffffffffffffffffffffff8116811461067f57600080fd5b919050565b6000806040838503121561069757600080fd5b6106a08361065b565b91506106ae6020840161065b565b90509250929050565b600080602083850312156106ca57600080fd5b823567ffffffffffffffff808211156106e257600080fd5b818501915085601f8301126106f657600080fd5b81358181111561070557600080fd5b8660208260051b850101111561071a57600080fd5b60209290920196919550909350505050565b60005b8381101561074757818101518382015260200161072f565b50506000910152565b6000815180845261076881602086016020860161072c565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561080d577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08886030184526107fb858351610750565b945092850192908501906001016107c1565b5092979650505050505050565b60008083601f84011261082c57600080fd5b50813567ffffffffffffffff81111561084457600080fd5b60208301915083602082850101111561085c57600080fd5b9250929050565b60008060008060006080868803121561087b57600080fd5b6108848661065b565b9450602086013593506108996040870161065b565b9250606086013567ffffffffffffffff8111156108b557600080fd5b6108c18882890161081a565b969995985093965092949392505050565b600080600080606085870312156108e857600080fd5b6108f18561065b565b93506108ff6020860161065b565b9250604085013567ffffffffffffffff81111561091b57600080fd5b6109278782880161081a565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126109c657600080fd5b83018035915067ffffffffffffffff8211156109e157600080fd5b60200191503681900382131561085c57600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610a4e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b60008251610a6781846020870161072c565b9190910192915050565b602081526000610412602083018461075056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122035740df8b0694609b2d649006469b15e78013dba95a01d07834bc135a42d911664736f6c63430008100033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
