{
  "contractName": "CEGPOF",
  "abi": [
    {
      "inputs": [],
      "name": "MAX_CYCLE_SIZE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_EVENT_SCHEDULE_SIZE",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ONE_POINT_ZERO",
      "outputs": [
        {
          "internalType": "int256",
          "name": "",
          "type": "int256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PRECISION",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EndOfMonthConvention",
          "name": "eomc",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "startTime",
          "type": "uint256"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "i",
              "type": "uint256"
            },
            {
              "internalType": "enum P",
              "name": "p",
              "type": "uint8"
            },
            {
              "internalType": "enum S",
              "name": "s",
              "type": "uint8"
            },
            {
              "internalType": "bool",
              "name": "isSet",
              "type": "bool"
            }
          ],
          "internalType": "struct IPS",
          "name": "cycle",
          "type": "tuple"
        }
      ],
      "name": "adjustEndOfMonthConvention",
      "outputs": [
        {
          "internalType": "enum EndOfMonthConvention",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "bdc",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "computeEventTimeForEvent",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_event",
          "type": "bytes32"
        }
      ],
      "name": "decodeEvent",
      "outputs": [
        {
          "internalType": "enum EventType",
          "name": "",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "scheduleTime",
          "type": "uint256"
        }
      ],
      "name": "encodeEvent",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum EventType",
          "name": "eventType",
          "type": "uint8"
        }
      ],
      "name": "getEpochOffset",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftCalcTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "timestamp",
          "type": "uint256"
        },
        {
          "internalType": "enum BusinessDayConvention",
          "name": "convention",
          "type": "uint8"
        },
        {
          "internalType": "enum Calendar",
          "name": "calendar",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "maturityDate",
          "type": "uint256"
        }
      ],
      "name": "shiftEventTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610994806100206000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c8063aaf5eb6811610071578063aaf5eb6814610133578063c40c5a981461013b578063e05a66e014610143578063e726d68014610156578063edc0465f1461013b578063f5586e0514610169576100a9565b8063179331f3146100ae5780631a2e165d146100d75780636f37e55b146100f757806372540003146100ff578063811322fb14610120575b600080fd5b6100c16100bc3660046107a3565b61017c565b6040516100ce91906108b7565b60405180910390f35b6100ea6100e536600461075d565b61024c565b6040516100ce91906108ae565b6100ea610273565b61011261010d366004610745565b61027f565b6040516100ce9291906108cb565b6100ea61012e36600461084c565b6102a8565b6100ea6102bc565b6100ea6102c1565b6100ea61015136600461086b565b6102c6565b6100ea610164366004610899565b6102e4565b6100ea610177366004610899565b610437565b6000600184600181111561018c57fe5b14156102085761019b836104ab565b6101a4846104cd565b1480156101f357506002826020015160058111156101be57fe5b14806101d957506003826020015160058111156101d757fe5b145b806101f357506004826020015160058111156101f157fe5b145b1561020057506001610245565b506000610245565b600084600181111561021657fe5b141561022457506000610245565b60405162461bcd60e51b815260040161023c906108e3565b60405180910390fd5b9392505050565b6000806102588661027f565b915050610267818686866102e4565b9150505b949350505050565b670de0b6b3a764000081565b6000808060f884901c601c81111561029357fe5b92505067ffffffffffffffff83169050915091565b600081601c8111156102b657fe5b92915050565b601281565b607881565b60008160f884601c8111156102d757fe5b60ff16901b179392505050565b6000818514156102f557508361026b565b600184600881111561030357fe5b148061031a5750600384600881111561031857fe5b145b156103305761032985846104dc565b905061026b565b600284600881111561033e57fe5b14806103555750600484600881111561035357fe5b145b1561039957600061036686856104dc565b905061037186610538565b61037a82610538565b141561038757905061026b565b610391868561054f565b91505061026b565b60058460088111156103a757fe5b14806103be575060078460088111156103bc57fe5b145b156103cd57610329858461054f565b60068460088111156103db57fe5b14806103f2575060088460088111156103f057fe5b145b1561042e576000610403868561054f565b905061040e86610538565b61041782610538565b141561042457905061026b565b61039186856104dc565b50929392505050565b6000600384600881111561044757fe5b148061045e5750600484600881111561045c57fe5b145b806104745750600784600881111561047257fe5b145b8061048a5750600884600881111561048857fe5b145b1561049657508361026b565b6104a2858585856102e4565b95945050505050565b600080806104be62015180855b0461059d565b509150915061026b8282610633565b600061026b62015180836104b8565b600060018260018111156104ec57fe5b1415610531576104fb836106b9565b600614156105155761050e8360026106cc565b90506102b6565b61051e836106b9565b600714156105315761050e8360016106cc565b5090919050565b600061054762015180836104b8565b509392505050565b6000600182600181111561055f57fe5b14156105315761056e836106b9565b600614156105815761050e8360016106e1565b61058a836106b9565b600714156105315761050e8360026106e1565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f84605002816105f457fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806106445750816003145b8061064f5750816005145b8061065a5750816007145b806106655750816008145b80610670575081600a145b8061067b575081600c145b156106885750601f6102b6565b816002146106985750601e6102b6565b6106a1836106f6565b6106ac57601c6106af565b601d5b60ff169392505050565b6007620151809091046003010660010190565b6201518081028201828110156102b657600080fd5b6201518081028203828111156102b657600080fd5b60006004820615801561070b57506064820615155b806102b657505061019090061590565b803580151581146102b657600080fd5b8035600981106102b657600080fd5b80356102b68161094e565b600060208284031215610756578081fd5b5035919050565b60008060008060808587031215610772578283fd5b84359350610783866020870161072b565b925060408501356107938161094e565b9396929550929360600135925050565b600080600083850360c08112156107b8578384fd5b84356107c38161094e565b9350602085013592506080603f19820112156107dd578182fd5b506040516080810181811067ffffffffffffffff821117156107fd578283fd5b60409081528501358152606085013560068110610818578283fd5b602082015261082a866080870161073a565b604082015261083c8660a0870161071b565b6060820152809150509250925092565b60006020828403121561085d578081fd5b8135601d8110610245578182fd5b6000806040838503121561087d578182fd5b8235601d811061088b578283fd5b946020939093013593505050565b60008060008060808587031215610772578384fd5b90815260200190565b60208101600283106108c557fe5b91905290565b60408101601d84106108d957fe5b9281526020015290565b60208082526045908201527f456e644f664d6f6e7468436f6e76656e74696f6e2e61646a757374456e644f6660408201527f4d6f6e7468436f6e76656e74696f6e3a204154545249425554455f4e4f545f4660608201526427aaa7221760d91b608082015260a00190565b6002811061095b57600080fd5b5056fea26469706673582212208a5b1b0d3c54eb73ec34a5928e046bad0ad47ee66d3ac49d3196ea24ad10213564736f6c634300060b0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c8063aaf5eb6811610071578063aaf5eb6814610133578063c40c5a981461013b578063e05a66e014610143578063e726d68014610156578063edc0465f1461013b578063f5586e0514610169576100a9565b8063179331f3146100ae5780631a2e165d146100d75780636f37e55b146100f757806372540003146100ff578063811322fb14610120575b600080fd5b6100c16100bc3660046107a3565b61017c565b6040516100ce91906108b7565b60405180910390f35b6100ea6100e536600461075d565b61024c565b6040516100ce91906108ae565b6100ea610273565b61011261010d366004610745565b61027f565b6040516100ce9291906108cb565b6100ea61012e36600461084c565b6102a8565b6100ea6102bc565b6100ea6102c1565b6100ea61015136600461086b565b6102c6565b6100ea610164366004610899565b6102e4565b6100ea610177366004610899565b610437565b6000600184600181111561018c57fe5b14156102085761019b836104ab565b6101a4846104cd565b1480156101f357506002826020015160058111156101be57fe5b14806101d957506003826020015160058111156101d757fe5b145b806101f357506004826020015160058111156101f157fe5b145b1561020057506001610245565b506000610245565b600084600181111561021657fe5b141561022457506000610245565b60405162461bcd60e51b815260040161023c906108e3565b60405180910390fd5b9392505050565b6000806102588661027f565b915050610267818686866102e4565b9150505b949350505050565b670de0b6b3a764000081565b6000808060f884901c601c81111561029357fe5b92505067ffffffffffffffff83169050915091565b600081601c8111156102b657fe5b92915050565b601281565b607881565b60008160f884601c8111156102d757fe5b60ff16901b179392505050565b6000818514156102f557508361026b565b600184600881111561030357fe5b148061031a5750600384600881111561031857fe5b145b156103305761032985846104dc565b905061026b565b600284600881111561033e57fe5b14806103555750600484600881111561035357fe5b145b1561039957600061036686856104dc565b905061037186610538565b61037a82610538565b141561038757905061026b565b610391868561054f565b91505061026b565b60058460088111156103a757fe5b14806103be575060078460088111156103bc57fe5b145b156103cd57610329858461054f565b60068460088111156103db57fe5b14806103f2575060088460088111156103f057fe5b145b1561042e576000610403868561054f565b905061040e86610538565b61041782610538565b141561042457905061026b565b61039186856104dc565b50929392505050565b6000600384600881111561044757fe5b148061045e5750600484600881111561045c57fe5b145b806104745750600784600881111561047257fe5b145b8061048a5750600884600881111561048857fe5b145b1561049657508361026b565b6104a2858585856102e4565b95945050505050565b600080806104be62015180855b0461059d565b509150915061026b8282610633565b600061026b62015180836104b8565b600060018260018111156104ec57fe5b1415610531576104fb836106b9565b600614156105155761050e8360026106cc565b90506102b6565b61051e836106b9565b600714156105315761050e8360016106cc565b5090919050565b600061054762015180836104b8565b509392505050565b6000600182600181111561055f57fe5b14156105315761056e836106b9565b600614156105815761050e8360016106e1565b61058a836106b9565b600714156105315761050e8360026106e1565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f84605002816105f457fe5b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b600081600114806106445750816003145b8061064f5750816005145b8061065a5750816007145b806106655750816008145b80610670575081600a145b8061067b575081600c145b156106885750601f6102b6565b816002146106985750601e6102b6565b6106a1836106f6565b6106ac57601c6106af565b601d5b60ff169392505050565b6007620151809091046003010660010190565b6201518081028201828110156102b657600080fd5b6201518081028203828111156102b657600080fd5b60006004820615801561070b57506064820615155b806102b657505061019090061590565b803580151581146102b657600080fd5b8035600981106102b657600080fd5b80356102b68161094e565b600060208284031215610756578081fd5b5035919050565b60008060008060808587031215610772578283fd5b84359350610783866020870161072b565b925060408501356107938161094e565b9396929550929360600135925050565b600080600083850360c08112156107b8578384fd5b84356107c38161094e565b9350602085013592506080603f19820112156107dd578182fd5b506040516080810181811067ffffffffffffffff821117156107fd578283fd5b60409081528501358152606085013560068110610818578283fd5b602082015261082a866080870161073a565b604082015261083c8660a0870161071b565b6060820152809150509250925092565b60006020828403121561085d578081fd5b8135601d8110610245578182fd5b6000806040838503121561087d578182fd5b8235601d811061088b578283fd5b946020939093013593505050565b60008060008060808587031215610772578384fd5b90815260200190565b60208101600283106108c557fe5b91905290565b60408101601d84106108d957fe5b9281526020015290565b60208082526045908201527f456e644f664d6f6e7468436f6e76656e74696f6e2e61646a757374456e644f6660408201527f4d6f6e7468436f6e76656e74696f6e3a204154545249425554455f4e4f545f4660608201526427aaa7221760d91b608082015260a00190565b6002811061095b57600080fd5b5056fea26469706673582212208a5b1b0d3c54eb73ec34a5928e046bad0ad47ee66d3ac49d3196ea24ad10213564736f6c634300060b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
