{
  "_format": "hh-sol-artifact-1",
  "contractName": "ExampleOracleSimple",
  "sourceName": "contracts/soma/SomaSwap/examples/ExampleOracleSimple.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "factory",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenA",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenB",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "PERIOD",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "blockTimestampLast",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amountIn",
          "type": "uint256"
        }
      ],
      "name": "consult",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "amountOut",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "price0Average",
      "outputs": [
        {
          "internalType": "uint224",
          "name": "_x",
          "type": "uint224"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "price0CumulativeLast",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "price1Average",
      "outputs": [
        {
          "internalType": "uint224",
          "name": "_x",
          "type": "uint224"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "price1CumulativeLast",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token0",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token1",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "update",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60e06040523480156200001157600080fd5b506040516200163a3803806200163a8339810160408190526200003491620005fe565b60006200004e8484846200034260201b620004771760201c565b9050806001600160a01b03166080816001600160a01b031681525050806001600160a01b0316630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000a9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000cf919062000648565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b031663d21220a76040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000127573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014d919062000648565b6001600160a01b031660c0816001600160a01b031681525050806001600160a01b0316635909c0d56040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001cb91906200066d565b600081905550806001600160a01b0316635a3d54936040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000210573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200023691906200066d565b600181905550600080826001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156200027e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a491906200069f565b6002805463ffffffff191663ffffffff9290921691909117905590925090506001600160701b03821615801590620002e457506001600160701b03811615155b620003365760405162461bcd60e51b815260206004820181905260248201527f4578616d706c654f7261636c6553696d706c653a204e4f5f524553455256455360448201526064015b60405180910390fd5b505050505050620006f5565b6000808062000352858562000479565b915091506200046f866001600160a01b0316632dd310006040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000399573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003bf919062000648565b876001600160a01b031663257671f56040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003fe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200042491906200066d565b6040516001600160601b0319606087811b8216602084015286901b166034820152604801604051602081830303815290604052805190602001206200057460201b620005a11760201c565b9695505050505050565b600080826001600160a01b0316846001600160a01b031603620004eb5760405162461bcd60e51b8152602060048201526024808201527f536f6d61537761704c6962726172793a204944454e544943414c5f41444452456044820152635353455360e01b60648201526084016200032d565b826001600160a01b0316846001600160a01b0316106200050d57828462000510565b83835b90925090506001600160a01b0382166200056d5760405162461bcd60e51b815260206004820152601d60248201527f536f6d61537761704c6962726172793a205a45524f5f4144445245535300000060448201526064016200032d565b9250929050565b604080517fff0000000000000000000000000000000000000000000000000000000000000060208083019190915260609590951b6001600160601b031916602182015260358101929092526055808301939093528051808303909301835260759091019052805191012090565b80516001600160a01b0381168114620005f957600080fd5b919050565b6000806000606084860312156200061457600080fd5b6200061f84620005e1565b92506200062f60208501620005e1565b91506200063f60408501620005e1565b90509250925092565b6000602082840312156200065b57600080fd5b6200066682620005e1565b9392505050565b6000602082840312156200068057600080fd5b5051919050565b80516001600160701b0381168114620005f957600080fd5b600080600060608486031215620006b557600080fd5b620006c08462000687565b9250620006d06020850162000687565b9150604084015163ffffffff81168114620006ea57600080fd5b809150509250925092565b60805160a05160c051610f086200073260003960008181610196015261023301526000818160a801526101bc015260006103050152610f086000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a2e6204511610066578063a2e6204514610145578063a6bb45391461014f578063b4d1d79514610162578063c5700a021461016c578063d21220a71461019157600080fd5b80630dfe1681146100a35780633ddac953146100e75780635909c0d5146101085780635a3d5493146101115780635e6aaf2c1461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100fa6100f5366004610d78565b6101b8565b6040519081526020016100de565b6100fa60005481565b6100fa60015481565b60045461012d906001600160e01b031681565b6040516001600160e01b0390911681526020016100de565b61014d6102fb565b005b60035461012d906001600160e01b031681565b6100fa6201518081565b60025461017c9063ffffffff1681565b60405163ffffffff90911681526020016100de565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036102315760408051602081019091526003546001600160e01b031681526102219061021a90846105fb565b5160701c90565b6001600160901b031690506102f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316146102c25760405162461bcd60e51b815260206004820152602260248201527f4578616d706c654f7261636c6553696d706c653a20494e56414c49445f544f4b60448201526122a760f11b60648201526084015b60405180910390fd5b60408051602081019091526004546001600160e01b031681526102e99061021a90846105fb565b6001600160901b031690505b92915050565b60008060006103297f0000000000000000000000000000000000000000000000000000000000000000610699565b60025492955090935091506000906103479063ffffffff1683610dba565b9050620151808163ffffffff1610156103b25760405162461bcd60e51b815260206004820152602760248201527f4578616d706c654f7261636c6553696d706c653a20504552494f445f4e4f545f6044820152661153105414d15160ca1b60648201526084016102b9565b60405180602001604052808263ffffffff16600054876103d29190610dde565b6103dc9190610e07565b6001600160e01b039081169091529051600380546001600160e01b031916919092161790556040805160208101909152600154819063ffffffff8416906104239087610dde565b61042d9190610e07565b6001600160e01b039081169091529051600480546001600160e01b03191691909216179055506000929092556001556002805463ffffffff191663ffffffff909216919091179055565b60008060006104868585610890565b91509150610595866001600160a01b0316632dd310006040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ef9190610e1b565b876001600160a01b031663257671f56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561052d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105519190610e38565b6040516bffffffffffffffffffffffff19606087811b8216602084015286901b166034820152604801604051602081830303815290604052805190602001206105a1565b925050505b9392505050565b604080516001600160f81b031960208083019190915260609590951b6bffffffffffffffffffffffff1916602182015260358101929092526055808301939093528051808303909301835260759091019052805191012090565b6040805160208101909152600081526000821580610638575083516001600160e01b03168361062a8183610e51565b92506106369083610e07565b145b6106845760405162461bcd60e51b815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f770000000000000060448201526064016102b9565b60408051602081019091529081529392505050565b60008060006106a6610985565b9050836001600160a01b0316635909c0d56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070a9190610e38565b9250836001600160a01b0316635a3d54936040518163ffffffff1660e01b8152600401602060405180830381865afa15801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076e9190610e38565b91506000806000866001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156107b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190610e84565b9250925092508363ffffffff168163ffffffff16146108865760006107fc8286610dba565b90508063ffffffff16610821846001600160701b0316866001600160701b031661099b565b5161083591906001600160e01b0316610e51565b61083f9088610ed4565b96508063ffffffff16610864856001600160701b0316856001600160701b031661099b565b5161087891906001600160e01b0316610e51565b6108829087610ed4565b9550505b5050509193909250565b600080826001600160a01b0316846001600160a01b0316036109005760405162461bcd60e51b8152602060048201526024808201527f536f6d61537761704c6962726172793a204944454e544943414c5f41444452456044820152635353455360e01b60648201526084016102b9565b826001600160a01b0316846001600160a01b031610610920578284610923565b83835b90925090506001600160a01b03821661097e5760405162461bcd60e51b815260206004820152601d60248201527f536f6d61537761704c6962726172793a205a45524f5f4144445245535300000060448201526064016102b9565b9250929050565b600061099664010000000042610ee7565b905090565b60408051602081019091526000815260008211610a095760405162461bcd60e51b815260206004820152602660248201527f4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206260448201526579207a65726f60d01b60648201526084016102b9565b82600003610a2657506040805160208101909152600081526102f5565b6001600160901b038311610abd576000610a4483607086901b610e07565b90506001600160e01b03811115610a9d5760405162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f77000060448201526064016102b9565b6040518060200160405280826001600160e01b03168152509150506102f5565b6000610a4484600160701b856000806000610ad88686610b94565b9150915060008480610aec57610aec610df1565b868809905082811115610b0757610b04600183610dde565b91505b610b118184610dde565b925081600003610b2f57610b258584610e07565b935050505061059a565b848210610b7e5760405162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f5700000000000060448201526064016102b9565b610b89838387610bd6565b979650505050505050565b600080806000198486099050610baa8486610e51565b9250610bb68382610dde565b915082811015610bce57610bcb600183610dde565b91505b509250929050565b600080610be283610d47565b83169050610bf08184610e07565b9250610bfc8186610e07565b945080610c0882610d47565b610c129190610e07565b610c1d906001610ed4565b610c279085610e51565b610c319086610ed4565b94506001610c3f8185610e51565b610c4a906002610dde565b610c549082610e51565b9050610c608185610e51565b610c6b906002610dde565b610c759082610e51565b9050610c818185610e51565b610c8c906002610dde565b610c969082610e51565b9050610ca28185610e51565b610cad906002610dde565b610cb79082610e51565b9050610cc38185610e51565b610cce906002610dde565b610cd89082610e51565b9050610ce48185610e51565b610cef906002610dde565b610cf99082610e51565b9050610d058185610e51565b610d10906002610dde565b610d1a9082610e51565b9050610d268185610e51565b610d31906002610dde565b610d3b9082610e51565b90506105958187610e51565b6000610d5582600019610dde565b6102f5906001610ed4565b6001600160a01b0381168114610d7557600080fd5b50565b60008060408385031215610d8b57600080fd5b8235610d9681610d60565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b63ffffffff828116828216039080821115610dd757610dd7610da4565b5092915050565b818103818111156102f5576102f5610da4565b634e487b7160e01b600052601260045260246000fd5b600082610e1657610e16610df1565b500490565b600060208284031215610e2d57600080fd5b815161059a81610d60565b600060208284031215610e4a57600080fd5b5051919050565b80820281158282048414176102f5576102f5610da4565b80516001600160701b0381168114610e7f57600080fd5b919050565b600080600060608486031215610e9957600080fd5b610ea284610e68565b9250610eb060208501610e68565b9150604084015163ffffffff81168114610ec957600080fd5b809150509250925092565b808201808211156102f5576102f5610da4565b600082610ef657610ef6610df1565b50069056fea164736f6c6343000812000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a2e6204511610066578063a2e6204514610145578063a6bb45391461014f578063b4d1d79514610162578063c5700a021461016c578063d21220a71461019157600080fd5b80630dfe1681146100a35780633ddac953146100e75780635909c0d5146101085780635a3d5493146101115780635e6aaf2c1461011a575b600080fd5b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100fa6100f5366004610d78565b6101b8565b6040519081526020016100de565b6100fa60005481565b6100fa60015481565b60045461012d906001600160e01b031681565b6040516001600160e01b0390911681526020016100de565b61014d6102fb565b005b60035461012d906001600160e01b031681565b6100fa6201518081565b60025461017c9063ffffffff1681565b60405163ffffffff90911681526020016100de565b6100ca7f000000000000000000000000000000000000000000000000000000000000000081565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316036102315760408051602081019091526003546001600160e01b031681526102219061021a90846105fb565b5160701c90565b6001600160901b031690506102f5565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316146102c25760405162461bcd60e51b815260206004820152602260248201527f4578616d706c654f7261636c6553696d706c653a20494e56414c49445f544f4b60448201526122a760f11b60648201526084015b60405180910390fd5b60408051602081019091526004546001600160e01b031681526102e99061021a90846105fb565b6001600160901b031690505b92915050565b60008060006103297f0000000000000000000000000000000000000000000000000000000000000000610699565b60025492955090935091506000906103479063ffffffff1683610dba565b9050620151808163ffffffff1610156103b25760405162461bcd60e51b815260206004820152602760248201527f4578616d706c654f7261636c6553696d706c653a20504552494f445f4e4f545f6044820152661153105414d15160ca1b60648201526084016102b9565b60405180602001604052808263ffffffff16600054876103d29190610dde565b6103dc9190610e07565b6001600160e01b039081169091529051600380546001600160e01b031916919092161790556040805160208101909152600154819063ffffffff8416906104239087610dde565b61042d9190610e07565b6001600160e01b039081169091529051600480546001600160e01b03191691909216179055506000929092556001556002805463ffffffff191663ffffffff909216919091179055565b60008060006104868585610890565b91509150610595866001600160a01b0316632dd310006040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104cb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104ef9190610e1b565b876001600160a01b031663257671f56040518163ffffffff1660e01b8152600401602060405180830381865afa15801561052d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105519190610e38565b6040516bffffffffffffffffffffffff19606087811b8216602084015286901b166034820152604801604051602081830303815290604052805190602001206105a1565b925050505b9392505050565b604080516001600160f81b031960208083019190915260609590951b6bffffffffffffffffffffffff1916602182015260358101929092526055808301939093528051808303909301835260759091019052805191012090565b6040805160208101909152600081526000821580610638575083516001600160e01b03168361062a8183610e51565b92506106369083610e07565b145b6106845760405162461bcd60e51b815260206004820152601960248201527f4669786564506f696e743a3a6d756c3a206f766572666c6f770000000000000060448201526064016102b9565b60408051602081019091529081529392505050565b60008060006106a6610985565b9050836001600160a01b0316635909c0d56040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061070a9190610e38565b9250836001600160a01b0316635a3d54936040518163ffffffff1660e01b8152600401602060405180830381865afa15801561074a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061076e9190610e38565b91506000806000866001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156107b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107d79190610e84565b9250925092508363ffffffff168163ffffffff16146108865760006107fc8286610dba565b90508063ffffffff16610821846001600160701b0316866001600160701b031661099b565b5161083591906001600160e01b0316610e51565b61083f9088610ed4565b96508063ffffffff16610864856001600160701b0316856001600160701b031661099b565b5161087891906001600160e01b0316610e51565b6108829087610ed4565b9550505b5050509193909250565b600080826001600160a01b0316846001600160a01b0316036109005760405162461bcd60e51b8152602060048201526024808201527f536f6d61537761704c6962726172793a204944454e544943414c5f41444452456044820152635353455360e01b60648201526084016102b9565b826001600160a01b0316846001600160a01b031610610920578284610923565b83835b90925090506001600160a01b03821661097e5760405162461bcd60e51b815260206004820152601d60248201527f536f6d61537761704c6962726172793a205a45524f5f4144445245535300000060448201526064016102b9565b9250929050565b600061099664010000000042610ee7565b905090565b60408051602081019091526000815260008211610a095760405162461bcd60e51b815260206004820152602660248201527f4669786564506f696e743a3a6672616374696f6e3a206469766973696f6e206260448201526579207a65726f60d01b60648201526084016102b9565b82600003610a2657506040805160208101909152600081526102f5565b6001600160901b038311610abd576000610a4483607086901b610e07565b90506001600160e01b03811115610a9d5760405162461bcd60e51b815260206004820152601e60248201527f4669786564506f696e743a3a6672616374696f6e3a206f766572666c6f77000060448201526064016102b9565b6040518060200160405280826001600160e01b03168152509150506102f5565b6000610a4484600160701b856000806000610ad88686610b94565b9150915060008480610aec57610aec610df1565b868809905082811115610b0757610b04600183610dde565b91505b610b118184610dde565b925081600003610b2f57610b258584610e07565b935050505061059a565b848210610b7e5760405162461bcd60e51b815260206004820152601a60248201527f46756c6c4d6174683a2046554c4c4449565f4f564552464c4f5700000000000060448201526064016102b9565b610b89838387610bd6565b979650505050505050565b600080806000198486099050610baa8486610e51565b9250610bb68382610dde565b915082811015610bce57610bcb600183610dde565b91505b509250929050565b600080610be283610d47565b83169050610bf08184610e07565b9250610bfc8186610e07565b945080610c0882610d47565b610c129190610e07565b610c1d906001610ed4565b610c279085610e51565b610c319086610ed4565b94506001610c3f8185610e51565b610c4a906002610dde565b610c549082610e51565b9050610c608185610e51565b610c6b906002610dde565b610c759082610e51565b9050610c818185610e51565b610c8c906002610dde565b610c969082610e51565b9050610ca28185610e51565b610cad906002610dde565b610cb79082610e51565b9050610cc38185610e51565b610cce906002610dde565b610cd89082610e51565b9050610ce48185610e51565b610cef906002610dde565b610cf99082610e51565b9050610d058185610e51565b610d10906002610dde565b610d1a9082610e51565b9050610d268185610e51565b610d31906002610dde565b610d3b9082610e51565b90506105958187610e51565b6000610d5582600019610dde565b6102f5906001610ed4565b6001600160a01b0381168114610d7557600080fd5b50565b60008060408385031215610d8b57600080fd5b8235610d9681610d60565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b63ffffffff828116828216039080821115610dd757610dd7610da4565b5092915050565b818103818111156102f5576102f5610da4565b634e487b7160e01b600052601260045260246000fd5b600082610e1657610e16610df1565b500490565b600060208284031215610e2d57600080fd5b815161059a81610d60565b600060208284031215610e4a57600080fd5b5051919050565b80820281158282048414176102f5576102f5610da4565b80516001600160701b0381168114610e7f57600080fd5b919050565b600080600060608486031215610e9957600080fd5b610ea284610e68565b9250610eb060208501610e68565b9150604084015163ffffffff81168114610ec957600080fd5b809150509250925092565b808201808211156102f5576102f5610da4565b600082610ef657610ef6610df1565b50069056fea164736f6c6343000812000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
