{
  "version": "v4.0.0",
  "name": "FullMathTest",
  "bytecode": "000340354103414c01000205021bd3ebaef653160016010c0d36871702160016013717031602160336170416021603314c0416040d36170416031604020100030801407fd340d735c316020c300d7b1600160100001704170316040c2f4c04160316022d0216021604330c7b16001601160287170516051603334c0416040d361704160316053617030c1602361602381706160216062d1702160316062d17030c16063616062d0d351706160316041606373917030f1602370e3a170716070e16021607373637170716070e16021607373637170716070e16021607373637170716070e16021607373637170716070e16021607373637170716070e16021607373637170716031607370201000203014028d30dcd6a6a16010c300d7b16000c2f4c020c0216000d1340903b314c0616001340703b16012d4a0616000d1340703b16010001170216020d1340e03b310e7b160202",
  "codeHash": "4e6bd23542804a31c9fdc85b4a0065857c11fcd0b7a40a7ce2c66558001e2040",
  "fieldsSig": {
    "names": [],
    "types": [],
    "isMutable": []
  },
  "eventsSig": [],
  "functions": [
    {
      "name": "fullMul",
      "paramNames": [
        "x",
        "y"
      ],
      "paramTypes": [
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": [
        "U256",
        "U256"
      ]
    },
    {
      "name": "mulDiv",
      "paramNames": [
        "a",
        "b",
        "denominator"
      ],
      "paramTypes": [
        "U256",
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false,
        true
      ],
      "returnTypes": [
        "U256"
      ]
    },
    {
      "name": "fraction",
      "paramNames": [
        "numerator",
        "denominator"
      ],
      "paramTypes": [
        "U256",
        "U256"
      ],
      "paramIsMutable": [
        false,
        false
      ],
      "returnTypes": [
        "U256"
      ]
    }
  ],
  "constants": [
    {
      "name": "Resolution",
      "value": {
        "type": "U256",
        "value": "112"
      }
    }
  ],
  "enums": [
    {
      "name": "ErrorCodes",
      "fields": [
        {
          "name": "FullDivOverflow",
          "value": {
            "type": "U256",
            "value": "0"
          }
        },
        {
          "name": "DivByZero",
          "value": {
            "type": "U256",
            "value": "1"
          }
        },
        {
          "name": "FractionOverflow",
          "value": {
            "type": "U256",
            "value": "2"
          }
        },
        {
          "name": "PeriodNotElapsed",
          "value": {
            "type": "U256",
            "value": "3"
          }
        },
        {
          "name": "InvalidToken",
          "value": {
            "type": "U256",
            "value": "4"
          }
        }
      ]
    }
  ]
}