{
  "contractName": "LTVDecisionEngine",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "signer",
          "type": "address"
        },
        {
          "name": "hash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "name": "v",
              "type": "uint8"
            },
            {
              "name": "r",
              "type": "bytes32"
            },
            {
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "signature",
          "type": "tuple"
        }
      ],
      "name": "isValidSignature",
      "outputs": [
        {
          "name": "valid",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MAX_PRICE_TTL_IN_SECONDS",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "PRECISION",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "contractRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "name": "kernelVersion",
              "type": "address"
            },
            {
              "name": "issuanceVersion",
              "type": "address"
            },
            {
              "name": "principalAmount",
              "type": "uint256"
            },
            {
              "name": "principalToken",
              "type": "address"
            },
            {
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "name": "collateralToken",
              "type": "address"
            },
            {
              "name": "debtor",
              "type": "address"
            },
            {
              "name": "debtorFee",
              "type": "uint256"
            },
            {
              "name": "creditor",
              "type": "address"
            },
            {
              "name": "creditorFee",
              "type": "uint256"
            },
            {
              "name": "relayer",
              "type": "address"
            },
            {
              "name": "relayerFee",
              "type": "uint256"
            },
            {
              "name": "underwriter",
              "type": "address"
            },
            {
              "name": "underwriterFee",
              "type": "uint256"
            },
            {
              "name": "underwriterRiskRating",
              "type": "uint256"
            },
            {
              "name": "termsContract",
              "type": "address"
            },
            {
              "name": "termsContractParameters",
              "type": "bytes32"
            },
            {
              "name": "expirationTimestampInSec",
              "type": "uint256"
            },
            {
              "name": "salt",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "debtorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "creditorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "underwriterSignature",
              "type": "tuple"
            }
          ],
          "name": "order",
          "type": "tuple"
        }
      ],
      "name": "unpackDebtOrder",
      "outputs": [
        {
          "name": "orderAddresses",
          "type": "address[6]"
        },
        {
          "name": "orderValues",
          "type": "uint256[8]"
        },
        {
          "name": "orderBytes32",
          "type": "bytes32[1]"
        },
        {
          "name": "signaturesV",
          "type": "uint8[3]"
        },
        {
          "name": "signaturesR",
          "type": "bytes32[3]"
        },
        {
          "name": "signaturesS",
          "type": "bytes32[3]"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "_contractRegistry",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "name": "creditor",
              "type": "address"
            },
            {
              "name": "priceFeedOperator",
              "type": "address"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "name": "maxLTV",
                      "type": "uint256"
                    }
                  ],
                  "name": "values",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "name": "signature",
                  "type": "tuple"
                }
              ],
              "name": "creditorCommitment",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "name": "timestamp",
                  "type": "uint256"
                },
                {
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "name": "signature",
                  "type": "tuple"
                }
              ],
              "name": "principalPrice",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "name": "timestamp",
                  "type": "uint256"
                },
                {
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "name": "signature",
                  "type": "tuple"
                }
              ],
              "name": "collateralPrice",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "kernelVersion",
                  "type": "address"
                },
                {
                  "name": "issuanceVersion",
                  "type": "address"
                },
                {
                  "name": "principalAmount",
                  "type": "uint256"
                },
                {
                  "name": "principalToken",
                  "type": "address"
                },
                {
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "name": "debtor",
                  "type": "address"
                },
                {
                  "name": "debtorFee",
                  "type": "uint256"
                },
                {
                  "name": "creditor",
                  "type": "address"
                },
                {
                  "name": "creditorFee",
                  "type": "uint256"
                },
                {
                  "name": "relayer",
                  "type": "address"
                },
                {
                  "name": "relayerFee",
                  "type": "uint256"
                },
                {
                  "name": "underwriter",
                  "type": "address"
                },
                {
                  "name": "underwriterFee",
                  "type": "uint256"
                },
                {
                  "name": "underwriterRiskRating",
                  "type": "uint256"
                },
                {
                  "name": "termsContract",
                  "type": "address"
                },
                {
                  "name": "termsContractParameters",
                  "type": "bytes32"
                },
                {
                  "name": "expirationTimestampInSec",
                  "type": "uint256"
                },
                {
                  "name": "salt",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "name": "debtorSignature",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "name": "creditorSignature",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "name": "underwriterSignature",
                  "type": "tuple"
                }
              ],
              "name": "order",
              "type": "tuple"
            }
          ],
          "name": "params",
          "type": "tuple"
        },
        {
          "name": "commitmentHash",
          "type": "bytes32"
        }
      ],
      "name": "evaluateConsent",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "name": "creditor",
              "type": "address"
            },
            {
              "name": "priceFeedOperator",
              "type": "address"
            },
            {
              "components": [
                {
                  "components": [
                    {
                      "name": "maxLTV",
                      "type": "uint256"
                    }
                  ],
                  "name": "values",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "name": "signature",
                  "type": "tuple"
                }
              ],
              "name": "creditorCommitment",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "name": "timestamp",
                  "type": "uint256"
                },
                {
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "name": "signature",
                  "type": "tuple"
                }
              ],
              "name": "principalPrice",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "value",
                  "type": "uint256"
                },
                {
                  "name": "timestamp",
                  "type": "uint256"
                },
                {
                  "name": "tokenAddress",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "name": "signature",
                  "type": "tuple"
                }
              ],
              "name": "collateralPrice",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "kernelVersion",
                  "type": "address"
                },
                {
                  "name": "issuanceVersion",
                  "type": "address"
                },
                {
                  "name": "principalAmount",
                  "type": "uint256"
                },
                {
                  "name": "principalToken",
                  "type": "address"
                },
                {
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "name": "collateralToken",
                  "type": "address"
                },
                {
                  "name": "debtor",
                  "type": "address"
                },
                {
                  "name": "debtorFee",
                  "type": "uint256"
                },
                {
                  "name": "creditor",
                  "type": "address"
                },
                {
                  "name": "creditorFee",
                  "type": "uint256"
                },
                {
                  "name": "relayer",
                  "type": "address"
                },
                {
                  "name": "relayerFee",
                  "type": "uint256"
                },
                {
                  "name": "underwriter",
                  "type": "address"
                },
                {
                  "name": "underwriterFee",
                  "type": "uint256"
                },
                {
                  "name": "underwriterRiskRating",
                  "type": "uint256"
                },
                {
                  "name": "termsContract",
                  "type": "address"
                },
                {
                  "name": "termsContractParameters",
                  "type": "bytes32"
                },
                {
                  "name": "expirationTimestampInSec",
                  "type": "uint256"
                },
                {
                  "name": "salt",
                  "type": "uint256"
                },
                {
                  "components": [
                    {
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "name": "debtorSignature",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "name": "creditorSignature",
                  "type": "tuple"
                },
                {
                  "components": [
                    {
                      "name": "v",
                      "type": "uint8"
                    },
                    {
                      "name": "r",
                      "type": "bytes32"
                    },
                    {
                      "name": "s",
                      "type": "bytes32"
                    }
                  ],
                  "name": "underwriterSignature",
                  "type": "tuple"
                }
              ],
              "name": "order",
              "type": "tuple"
            }
          ],
          "name": "params",
          "type": "tuple"
        }
      ],
      "name": "evaluateDecision",
      "outputs": [
        {
          "name": "_success",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "components": [
            {
              "name": "maxLTV",
              "type": "uint256"
            }
          ],
          "name": "commitmentValues",
          "type": "tuple"
        },
        {
          "components": [
            {
              "name": "kernelVersion",
              "type": "address"
            },
            {
              "name": "issuanceVersion",
              "type": "address"
            },
            {
              "name": "principalAmount",
              "type": "uint256"
            },
            {
              "name": "principalToken",
              "type": "address"
            },
            {
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "name": "collateralToken",
              "type": "address"
            },
            {
              "name": "debtor",
              "type": "address"
            },
            {
              "name": "debtorFee",
              "type": "uint256"
            },
            {
              "name": "creditor",
              "type": "address"
            },
            {
              "name": "creditorFee",
              "type": "uint256"
            },
            {
              "name": "relayer",
              "type": "address"
            },
            {
              "name": "relayerFee",
              "type": "uint256"
            },
            {
              "name": "underwriter",
              "type": "address"
            },
            {
              "name": "underwriterFee",
              "type": "uint256"
            },
            {
              "name": "underwriterRiskRating",
              "type": "uint256"
            },
            {
              "name": "termsContract",
              "type": "address"
            },
            {
              "name": "termsContractParameters",
              "type": "bytes32"
            },
            {
              "name": "expirationTimestampInSec",
              "type": "uint256"
            },
            {
              "name": "salt",
              "type": "uint256"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "debtorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "creditorSignature",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "name": "v",
                  "type": "uint8"
                },
                {
                  "name": "r",
                  "type": "bytes32"
                },
                {
                  "name": "s",
                  "type": "bytes32"
                }
              ],
              "name": "underwriterSignature",
              "type": "tuple"
            }
          ],
          "name": "order",
          "type": "tuple"
        }
      ],
      "name": "hashCreditorCommitmentForOrder",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "termsContract",
          "type": "address"
        },
        {
          "name": "termsContractParameters",
          "type": "bytes32"
        }
      ],
      "name": "getTermsContractCommitmentHash",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "termsContract",
          "type": "address"
        },
        {
          "name": "termsContractParameters",
          "type": "bytes32"
        }
      ],
      "name": "unpackSimpleInterestParameters",
      "outputs": [
        {
          "components": [
            {
              "name": "principalTokenIndex",
              "type": "uint256"
            },
            {
              "name": "principalAmount",
              "type": "uint256"
            },
            {
              "name": "interestRate",
              "type": "uint256"
            },
            {
              "name": "amortizationUnitType",
              "type": "uint256"
            },
            {
              "name": "termLengthInAmortizationUnits",
              "type": "uint256"
            }
          ],
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "termsContractParameters",
          "type": "bytes32"
        }
      ],
      "name": "unpackCollateralParameters",
      "outputs": [
        {
          "components": [
            {
              "name": "collateralTokenIndex",
              "type": "uint256"
            },
            {
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "name": "gracePeriodInDays",
              "type": "uint256"
            }
          ],
          "name": "",
          "type": "tuple"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051602080620022d0833981018060405262000033919081019062000090565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050620000dc565b6000620000888251620000bc565b905092915050565b600060208284031215620000a357600080fd5b6000620000b3848285016200007a565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6121e480620000ec6000396000f3006080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630257dbc9146100b45780630a89d47c146100f1578063578911ac1461012e5780637c3ea9fc1461016b578063879ffab014610196578063aaf5eb68146101d3578063abf410e5146101fe578063b120f0b414610229578063cf99685c14610266578063e301885c146102a3578063e7083d24146102e5575b600080fd5b3480156100c057600080fd5b506100db60048036036100d691908101906119e7565b610322565b6040516100e89190611f55565b60405180910390f35b3480156100fd57600080fd5b5061011860048036036101139190810190611ac4565b6103b7565b6040516101259190611f55565b60405180910390f35b34801561013a57600080fd5b5061015560048036036101509190810190611a23565b61059b565b6040516101629190611f3a565b60405180910390f35b34801561017757600080fd5b506101806106dd565b60405161018d9190612006565b60405180910390f35b3480156101a257600080fd5b506101bd60048036036101b89190810190611b2b565b6106e3565b6040516101ca9190611f3a565b60405180910390f35b3480156101df57600080fd5b506101e86107c9565b6040516101f59190612006565b60405180910390f35b34801561020a57600080fd5b506102136107ce565b6040516102209190611fb5565b60405180910390f35b34801561023557600080fd5b50610250600480360361024b9190810190611b55565b6107f3565b60405161025d9190611f3a565b60405180910390f35b34801561027257600080fd5b5061028d60048036036102889190810190611a72565b61083b565b60405161029a9190611fd0565b60405180910390f35b3480156102af57600080fd5b506102ca60048036036102c59190810190611b01565b6109dc565b6040516102dc96959493929190611ed4565b60405180910390f35b3480156102f157600080fd5b5061030c600480360361030791908101906119e7565b610cd7565b6040516103199190611feb565b60405180910390f35b600061032c610ff7565b610334611027565b61033e8585610cd7565b91506103498461083b565b905081600001518260200151836040015184606001518560800151856000015186604001516040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390209250505092915050565b6000806103ce836101e00151846102000151610322565b905082610100015183600001518460200151856101e00151866060015187610240015188604001518961012001518a61022001518c600001518a604051808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140187815260200186815260200185815260200184815260200183815260200182600019166000191681526020019b505050505050505050505050604051809103902091505092915050565b6000806040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250846040518083805190602001908083835b60208310151561060a57805182526020820191506020810190506020830392506105e5565b6001836020036101000a038019825116818451168082178552505050505050905001826000191660001916815260200192505050604051809103902090508473ffffffffffffffffffffffffffffffffffffffff166001828560000151866020015187604001516040516000815260200160405260405161068e9493929190611f70565b60206040516020810390808403906000865af11580156106b2573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16149150509392505050565b61025881565b60006106ed611049565b6106f5611049565b60006106ff61108e565b600080600088606001519650886080015195508860400151600001516000015194508860a0015193508560000151925061073d846102200151610dd2565b1561074b57600097506107bd565b60008460800151148061075e5750600083145b1561076c57600097506107bd565b6107888760000151876000015186604001518760800151610dde565b91506107b46107a260026004610e4290919063ffffffff16565b600a0a86610e5b90919063ffffffff16565b90508082111597505b50505050505050919050565b600481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061080c83600001518385604001516020015161059b565b151561081b5760009050610835565b610832836020015184606001518560800151610e93565b90505b92915050565b610843611027565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663869f05116040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156108ce57600080fd5b505af11580156108e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109069190810190611a9b565b93508373ffffffffffffffffffffffffffffffffffffffff1663ca062647876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161095d9190611f55565b606060405180830381600087803b15801561097757600080fd5b505af115801561098b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109af9190810190611b93565b92509250925060606040519081016040528084815260200183815260200182815250945050505050919050565b6109e4611211565b6109ec611234565b6109f4611258565b6109fc61127b565b610a0461129e565b610a0c61129e565b60c060405190810160405280886000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018860c0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200188610180015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001886101e0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200188610140015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525061010060405190810160405280896101c001518152602001896102400151815260200189604001518152602001896101a001518152602001896101600151815260200189610120015181526020018960e0015181526020018961022001518152506020604051908101604052808a610200015160001916600019168152506060604051908101604052808b61026001516000015160ff1660ff1681526020018b61028001516000015160ff1660ff1681526020018b6102a001516000015160ff1660ff168152506060604051908101604052808c610260015160200151600019166000191681526020018c610280015160200151600019166000191681526020018c6102a001516020015160001916600019168152506060604051908101604052808d610260015160400151600019166000191681526020018d610280015160400151600019166000191681526020018d6102a0015160400151600019166000191681525095509550955095509550955091939550919395565b610cdf610ff7565b6000806000806000808895508573ffffffffffffffffffffffffffffffffffffffff1663ed8907d7896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610d409190611f55565b60a060405180830381600087803b158015610d5a57600080fd5b505af1158015610d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d929190810190611be2565b9450945094509450945060a06040519081016040528086815260200185815260200184815260200183815260200182815250965050505050505092915050565b60004282109050919050565b6000806000610e0c6004600a0a610dfe878a610e5b90919063ffffffff16565b610e5b90919063ffffffff16565b9150610e218487610e5b90919063ffffffff16565b9050610e368183610fe190919063ffffffff16565b92505050949350505050565b6000828211151515610e5057fe5b818303905092915050565b600080831415610e6e5760009050610e8d565b8183029050818382811515610e7f57fe5b04141515610e8957fe5b8090505b92915050565b6000806000806000610258420393508387602001511080610eb75750838660200151105b15610ec55760009450610fd6565b866000015187604001518860200151604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405180910390209250856000015186604001518760200151604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405180910390209150610fb28884896060015161059b565b9050801515610fc45760009450610fd6565b610fd38883886060015161059b565b94505b505050509392505050565b60008183811515610fee57fe5b04905092915050565b60a06040519081016040528060008152602001600081526020016000815260200160008152602001600081525090565b6060604051908101604052806000815260200160008152602001600081525090565b60c0604051908101604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016110886112c1565b81525090565b61038060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000801916815260200160008152602001600081526020016111f16112c1565b81526020016111fe6112c1565b815260200161120b6112c1565b81525090565b60c060405190810160405280600690602082028038833980820191505090505090565b61010060405190810160405280600890602082028038833980820191505090505090565b602060405190810160405280600190602082028038833980820191505090505090565b606060405190810160405280600390602082028038833980820191505090505090565b606060405190810160405280600390602082028038833980820191505090505090565b606060405190810160405280600060ff16815260200160008019168152602001600080191681525090565b60006112f88235612145565b905092915050565b600061130c8235612165565b905092915050565b6000611320825161216f565b905092915050565b60006020828403121561133a57600080fd5b6113446020612021565b90506000611354848285016119ab565b60008301525092915050565b60006020828403121561137257600080fd5b61137c6020612021565b9050600061138c848285016119ab565b60008301525092915050565b6000608082840312156113aa57600080fd5b6113b46040612021565b905060006113c484828501611328565b60008301525060206113d8848285016117d8565b60208301525092915050565b600061038082840312156113f757600080fd5b6114026102c0612021565b90506000611412848285016112ec565b6000830152506020611426848285016112ec565b602083015250604061143a848285016119ab565b604083015250606061144e848285016112ec565b6060830152506080611462848285016119ab565b60808301525060a0611476848285016112ec565b60a08301525060c061148a848285016112ec565b60c08301525060e061149e848285016119ab565b60e0830152506101006114b3848285016112ec565b610100830152506101206114c9848285016119ab565b610120830152506101406114df848285016112ec565b610140830152506101606114f5848285016119ab565b6101608301525061018061150b848285016112ec565b610180830152506101a0611521848285016119ab565b6101a0830152506101c0611537848285016119ab565b6101c0830152506101e061154d848285016112ec565b6101e08301525061020061156384828501611300565b61020083015250610220611579848285016119ab565b6102208301525061024061158f848285016119ab565b610240830152506102606115a5848285016117d8565b610260830152506102c06115bb848285016117d8565b610280830152506103206115d1848285016117d8565b6102a08301525092915050565b600061038082840312156115f157600080fd5b6115fc6102c0612021565b9050600061160c848285016112ec565b6000830152506020611620848285016112ec565b6020830152506040611634848285016119ab565b6040830152506060611648848285016112ec565b606083015250608061165c848285016119ab565b60808301525060a0611670848285016112ec565b60a08301525060c0611684848285016112ec565b60c08301525060e0611698848285016119ab565b60e0830152506101006116ad848285016112ec565b610100830152506101206116c3848285016119ab565b610120830152506101406116d9848285016112ec565b610140830152506101606116ef848285016119ab565b61016083015250610180611705848285016112ec565b610180830152506101a061171b848285016119ab565b6101a0830152506101c0611731848285016119ab565b6101c0830152506101e0611747848285016112ec565b6101e08301525061020061175d84828501611300565b61020083015250610220611773848285016119ab565b61022083015250610240611789848285016119ab565b6102408301525061026061179f848285016117d8565b610260830152506102c06117b5848285016117d8565b610280830152506103206117cb848285016117d8565b6102a08301525092915050565b6000606082840312156117ea57600080fd5b6117f46060612021565b90506000611804848285016119d3565b600083015250602061181884828501611300565b602083015250604061182c84828501611300565b60408301525092915050565b60006060828403121561184a57600080fd5b6118546060612021565b90506000611864848285016119d3565b600083015250602061187884828501611300565b602083015250604061188c84828501611300565b60408301525092915050565b60006105c082840312156118ab57600080fd5b6118b560c0612021565b905060006118c5848285016112ec565b60008301525060206118d9848285016112ec565b60208301525060406118ed84828501611398565b60408301525060c061190184828501611937565b60608301525061018061191684828501611937565b60808301525061024061192b848285016113e4565b60a08301525092915050565b600060c0828403121561194957600080fd5b6119536080612021565b90506000611963848285016119ab565b6000830152506020611977848285016119ab565b602083015250604061198b848285016112ec565b604083015250606061199f848285016117d8565b60608301525092915050565b60006119b78235612181565b905092915050565b60006119cb8251612181565b905092915050565b60006119df823561218b565b905092915050565b600080604083850312156119fa57600080fd5b6000611a08858286016112ec565b9250506020611a1985828601611300565b9150509250929050565b600080600060a08486031215611a3857600080fd5b6000611a46868287016112ec565b9350506020611a5786828701611300565b9250506040611a6886828701611838565b9150509250925092565b600060208284031215611a8457600080fd5b6000611a9284828501611300565b91505092915050565b600060208284031215611aad57600080fd5b6000611abb84828501611314565b91505092915050565b6000806103a08385031215611ad857600080fd5b6000611ae685828601611360565b9250506020611af7858286016115de565b9150509250929050565b60006103808284031215611b1457600080fd5b6000611b22848285016115de565b91505092915050565b60006105c08284031215611b3e57600080fd5b6000611b4c84828501611898565b91505092915050565b6000806105e08385031215611b6957600080fd5b6000611b7785828601611898565b9250506105c0611b8985828601611300565b9150509250929050565b600080600060608486031215611ba857600080fd5b6000611bb6868287016119bf565b9350506020611bc7868287016119bf565b9250506040611bd8868287016119bf565b9150509250925092565b600080600080600060a08688031215611bfa57600080fd5b6000611c08888289016119bf565b9550506020611c19888289016119bf565b9450506040611c2a888289016119bf565b9350506060611c3b888289016119bf565b9250506080611c4c888289016119bf565b9150509295509295909350565b611c62816120f8565b82525050565b611c7181612080565b611c7a8261204e565b60005b82811015611cac57611c90858351611c59565b611c99826120b7565b9150602085019450600181019050611c7d565b5050505050565b611cbc8161208b565b611cc582612058565b60005b82811015611cf757611cdb858351611dee565b611ce4826120c4565b9150602085019450600181019050611cc8565b5050505050565b611d0781612096565b611d1082612062565b60005b82811015611d4257611d26858351611dee565b611d2f826120d1565b9150602085019450600181019050611d13565b5050505050565b611d52816120a1565b611d5b8261206c565b60005b82811015611d8d57611d71858351611eb6565b611d7a826120de565b9150602085019450600181019050611d5e565b5050505050565b611d9d816120ac565b611da682612076565b60005b82811015611dd857611dbc858351611ec5565b611dc5826120eb565b9150602085019450600181019050611da9565b5050505050565b611de881612118565b82525050565b611df781612124565b82525050565b611e0681612198565b82525050565b606082016000820151611e226000850182611eb6565b506020820151611e356020850182611eb6565b506040820151611e486040850182611eb6565b50505050565b60a082016000820151611e646000850182611eb6565b506020820151611e776020850182611eb6565b506040820151611e8a6040850182611eb6565b506060820151611e9d6060850182611eb6565b506080820151611eb06080850182611eb6565b50505050565b611ebf8161212e565b82525050565b611ece81612138565b82525050565b600061030082019050611eea6000830189611c68565b611ef760c0830188611d49565b611f056101c0830187611cb3565b611f136101e0830186611d94565b611f21610240830185611cfe565b611f2f6102a0830184611cfe565b979650505050505050565b6000602082019050611f4f6000830184611ddf565b92915050565b6000602082019050611f6a6000830184611dee565b92915050565b6000608082019050611f856000830187611dee565b611f926020830186611ec5565b611f9f6040830185611dee565b611fac6060830184611dee565b95945050505050565b6000602082019050611fca6000830184611dfd565b92915050565b6000606082019050611fe56000830184611e0c565b92915050565b600060a0820190506120006000830184611e4e565b92915050565b600060208201905061201b6000830184611eb6565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561204457600080fd5b8060405250919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600060069050919050565b600060019050919050565b600060039050919050565b600060089050919050565b600060039050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061217a826120f8565b9050919050565b6000819050919050565b600060ff82169050919050565b60006121a3826120f8565b90509190505600a265627a7a723058209ab90b1797520625d453f95f523a66c8949610aa0cbe5b26ccc607f12c7511416c6578706572696d656e74616cf50037",
  "deployedBytecode": "0x6080604052600436106100af576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630257dbc9146100b45780630a89d47c146100f1578063578911ac1461012e5780637c3ea9fc1461016b578063879ffab014610196578063aaf5eb68146101d3578063abf410e5146101fe578063b120f0b414610229578063cf99685c14610266578063e301885c146102a3578063e7083d24146102e5575b600080fd5b3480156100c057600080fd5b506100db60048036036100d691908101906119e7565b610322565b6040516100e89190611f55565b60405180910390f35b3480156100fd57600080fd5b5061011860048036036101139190810190611ac4565b6103b7565b6040516101259190611f55565b60405180910390f35b34801561013a57600080fd5b5061015560048036036101509190810190611a23565b61059b565b6040516101629190611f3a565b60405180910390f35b34801561017757600080fd5b506101806106dd565b60405161018d9190612006565b60405180910390f35b3480156101a257600080fd5b506101bd60048036036101b89190810190611b2b565b6106e3565b6040516101ca9190611f3a565b60405180910390f35b3480156101df57600080fd5b506101e86107c9565b6040516101f59190612006565b60405180910390f35b34801561020a57600080fd5b506102136107ce565b6040516102209190611fb5565b60405180910390f35b34801561023557600080fd5b50610250600480360361024b9190810190611b55565b6107f3565b60405161025d9190611f3a565b60405180910390f35b34801561027257600080fd5b5061028d60048036036102889190810190611a72565b61083b565b60405161029a9190611fd0565b60405180910390f35b3480156102af57600080fd5b506102ca60048036036102c59190810190611b01565b6109dc565b6040516102dc96959493929190611ed4565b60405180910390f35b3480156102f157600080fd5b5061030c600480360361030791908101906119e7565b610cd7565b6040516103199190611feb565b60405180910390f35b600061032c610ff7565b610334611027565b61033e8585610cd7565b91506103498461083b565b905081600001518260200151836040015184606001518560800151856000015186604001516040518088815260200187815260200186815260200185815260200184815260200183815260200182815260200197505050505050505060405180910390209250505092915050565b6000806103ce836101e00151846102000151610322565b905082610100015183600001518460200151856101e00151866060015187610240015188604001518961012001518a61022001518c600001518a604051808c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140187815260200186815260200185815260200184815260200183815260200182600019166000191681526020019b505050505050505050505050604051809103902091505092915050565b6000806040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250846040518083805190602001908083835b60208310151561060a57805182526020820191506020810190506020830392506105e5565b6001836020036101000a038019825116818451168082178552505050505050905001826000191660001916815260200192505050604051809103902090508473ffffffffffffffffffffffffffffffffffffffff166001828560000151866020015187604001516040516000815260200160405260405161068e9493929190611f70565b60206040516020810390808403906000865af11580156106b2573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16149150509392505050565b61025881565b60006106ed611049565b6106f5611049565b60006106ff61108e565b600080600088606001519650886080015195508860400151600001516000015194508860a0015193508560000151925061073d846102200151610dd2565b1561074b57600097506107bd565b60008460800151148061075e5750600083145b1561076c57600097506107bd565b6107888760000151876000015186604001518760800151610dde565b91506107b46107a260026004610e4290919063ffffffff16565b600a0a86610e5b90919063ffffffff16565b90508082111597505b50505050505050919050565b600481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061080c83600001518385604001516020015161059b565b151561081b5760009050610835565b610832836020015184606001518560800151610e93565b90505b92915050565b610843611027565b6000806000806000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663869f05116040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156108ce57600080fd5b505af11580156108e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109069190810190611a9b565b93508373ffffffffffffffffffffffffffffffffffffffff1663ca062647876040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040161095d9190611f55565b606060405180830381600087803b15801561097757600080fd5b505af115801561098b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506109af9190810190611b93565b92509250925060606040519081016040528084815260200183815260200182815250945050505050919050565b6109e4611211565b6109ec611234565b6109f4611258565b6109fc61127b565b610a0461129e565b610a0c61129e565b60c060405190810160405280886000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018860c0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200188610180015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001886101e0015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001886060015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200188610140015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525061010060405190810160405280896101c001518152602001896102400151815260200189604001518152602001896101a001518152602001896101600151815260200189610120015181526020018960e0015181526020018961022001518152506020604051908101604052808a610200015160001916600019168152506060604051908101604052808b61026001516000015160ff1660ff1681526020018b61028001516000015160ff1660ff1681526020018b6102a001516000015160ff1660ff168152506060604051908101604052808c610260015160200151600019166000191681526020018c610280015160200151600019166000191681526020018c6102a001516020015160001916600019168152506060604051908101604052808d610260015160400151600019166000191681526020018d610280015160400151600019166000191681526020018d6102a0015160400151600019166000191681525095509550955095509550955091939550919395565b610cdf610ff7565b6000806000806000808895508573ffffffffffffffffffffffffffffffffffffffff1663ed8907d7896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401610d409190611f55565b60a060405180830381600087803b158015610d5a57600080fd5b505af1158015610d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d929190810190611be2565b9450945094509450945060a06040519081016040528086815260200185815260200184815260200183815260200182815250965050505050505092915050565b60004282109050919050565b6000806000610e0c6004600a0a610dfe878a610e5b90919063ffffffff16565b610e5b90919063ffffffff16565b9150610e218487610e5b90919063ffffffff16565b9050610e368183610fe190919063ffffffff16565b92505050949350505050565b6000828211151515610e5057fe5b818303905092915050565b600080831415610e6e5760009050610e8d565b8183029050818382811515610e7f57fe5b04141515610e8957fe5b8090505b92915050565b6000806000806000610258420393508387602001511080610eb75750838660200151105b15610ec55760009450610fd6565b866000015187604001518860200151604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405180910390209250856000015186604001518760200151604051808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405180910390209150610fb28884896060015161059b565b9050801515610fc45760009450610fd6565b610fd38883886060015161059b565b94505b505050509392505050565b60008183811515610fee57fe5b04905092915050565b60a06040519081016040528060008152602001600081526020016000815260200160008152602001600081525090565b6060604051908101604052806000815260200160008152602001600081525090565b60c0604051908101604052806000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016110886112c1565b81525090565b61038060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000801916815260200160008152602001600081526020016111f16112c1565b81526020016111fe6112c1565b815260200161120b6112c1565b81525090565b60c060405190810160405280600690602082028038833980820191505090505090565b61010060405190810160405280600890602082028038833980820191505090505090565b602060405190810160405280600190602082028038833980820191505090505090565b606060405190810160405280600390602082028038833980820191505090505090565b606060405190810160405280600390602082028038833980820191505090505090565b606060405190810160405280600060ff16815260200160008019168152602001600080191681525090565b60006112f88235612145565b905092915050565b600061130c8235612165565b905092915050565b6000611320825161216f565b905092915050565b60006020828403121561133a57600080fd5b6113446020612021565b90506000611354848285016119ab565b60008301525092915050565b60006020828403121561137257600080fd5b61137c6020612021565b9050600061138c848285016119ab565b60008301525092915050565b6000608082840312156113aa57600080fd5b6113b46040612021565b905060006113c484828501611328565b60008301525060206113d8848285016117d8565b60208301525092915050565b600061038082840312156113f757600080fd5b6114026102c0612021565b90506000611412848285016112ec565b6000830152506020611426848285016112ec565b602083015250604061143a848285016119ab565b604083015250606061144e848285016112ec565b6060830152506080611462848285016119ab565b60808301525060a0611476848285016112ec565b60a08301525060c061148a848285016112ec565b60c08301525060e061149e848285016119ab565b60e0830152506101006114b3848285016112ec565b610100830152506101206114c9848285016119ab565b610120830152506101406114df848285016112ec565b610140830152506101606114f5848285016119ab565b6101608301525061018061150b848285016112ec565b610180830152506101a0611521848285016119ab565b6101a0830152506101c0611537848285016119ab565b6101c0830152506101e061154d848285016112ec565b6101e08301525061020061156384828501611300565b61020083015250610220611579848285016119ab565b6102208301525061024061158f848285016119ab565b610240830152506102606115a5848285016117d8565b610260830152506102c06115bb848285016117d8565b610280830152506103206115d1848285016117d8565b6102a08301525092915050565b600061038082840312156115f157600080fd5b6115fc6102c0612021565b9050600061160c848285016112ec565b6000830152506020611620848285016112ec565b6020830152506040611634848285016119ab565b6040830152506060611648848285016112ec565b606083015250608061165c848285016119ab565b60808301525060a0611670848285016112ec565b60a08301525060c0611684848285016112ec565b60c08301525060e0611698848285016119ab565b60e0830152506101006116ad848285016112ec565b610100830152506101206116c3848285016119ab565b610120830152506101406116d9848285016112ec565b610140830152506101606116ef848285016119ab565b61016083015250610180611705848285016112ec565b610180830152506101a061171b848285016119ab565b6101a0830152506101c0611731848285016119ab565b6101c0830152506101e0611747848285016112ec565b6101e08301525061020061175d84828501611300565b61020083015250610220611773848285016119ab565b61022083015250610240611789848285016119ab565b6102408301525061026061179f848285016117d8565b610260830152506102c06117b5848285016117d8565b610280830152506103206117cb848285016117d8565b6102a08301525092915050565b6000606082840312156117ea57600080fd5b6117f46060612021565b90506000611804848285016119d3565b600083015250602061181884828501611300565b602083015250604061182c84828501611300565b60408301525092915050565b60006060828403121561184a57600080fd5b6118546060612021565b90506000611864848285016119d3565b600083015250602061187884828501611300565b602083015250604061188c84828501611300565b60408301525092915050565b60006105c082840312156118ab57600080fd5b6118b560c0612021565b905060006118c5848285016112ec565b60008301525060206118d9848285016112ec565b60208301525060406118ed84828501611398565b60408301525060c061190184828501611937565b60608301525061018061191684828501611937565b60808301525061024061192b848285016113e4565b60a08301525092915050565b600060c0828403121561194957600080fd5b6119536080612021565b90506000611963848285016119ab565b6000830152506020611977848285016119ab565b602083015250604061198b848285016112ec565b604083015250606061199f848285016117d8565b60608301525092915050565b60006119b78235612181565b905092915050565b60006119cb8251612181565b905092915050565b60006119df823561218b565b905092915050565b600080604083850312156119fa57600080fd5b6000611a08858286016112ec565b9250506020611a1985828601611300565b9150509250929050565b600080600060a08486031215611a3857600080fd5b6000611a46868287016112ec565b9350506020611a5786828701611300565b9250506040611a6886828701611838565b9150509250925092565b600060208284031215611a8457600080fd5b6000611a9284828501611300565b91505092915050565b600060208284031215611aad57600080fd5b6000611abb84828501611314565b91505092915050565b6000806103a08385031215611ad857600080fd5b6000611ae685828601611360565b9250506020611af7858286016115de565b9150509250929050565b60006103808284031215611b1457600080fd5b6000611b22848285016115de565b91505092915050565b60006105c08284031215611b3e57600080fd5b6000611b4c84828501611898565b91505092915050565b6000806105e08385031215611b6957600080fd5b6000611b7785828601611898565b9250506105c0611b8985828601611300565b9150509250929050565b600080600060608486031215611ba857600080fd5b6000611bb6868287016119bf565b9350506020611bc7868287016119bf565b9250506040611bd8868287016119bf565b9150509250925092565b600080600080600060a08688031215611bfa57600080fd5b6000611c08888289016119bf565b9550506020611c19888289016119bf565b9450506040611c2a888289016119bf565b9350506060611c3b888289016119bf565b9250506080611c4c888289016119bf565b9150509295509295909350565b611c62816120f8565b82525050565b611c7181612080565b611c7a8261204e565b60005b82811015611cac57611c90858351611c59565b611c99826120b7565b9150602085019450600181019050611c7d565b5050505050565b611cbc8161208b565b611cc582612058565b60005b82811015611cf757611cdb858351611dee565b611ce4826120c4565b9150602085019450600181019050611cc8565b5050505050565b611d0781612096565b611d1082612062565b60005b82811015611d4257611d26858351611dee565b611d2f826120d1565b9150602085019450600181019050611d13565b5050505050565b611d52816120a1565b611d5b8261206c565b60005b82811015611d8d57611d71858351611eb6565b611d7a826120de565b9150602085019450600181019050611d5e565b5050505050565b611d9d816120ac565b611da682612076565b60005b82811015611dd857611dbc858351611ec5565b611dc5826120eb565b9150602085019450600181019050611da9565b5050505050565b611de881612118565b82525050565b611df781612124565b82525050565b611e0681612198565b82525050565b606082016000820151611e226000850182611eb6565b506020820151611e356020850182611eb6565b506040820151611e486040850182611eb6565b50505050565b60a082016000820151611e646000850182611eb6565b506020820151611e776020850182611eb6565b506040820151611e8a6040850182611eb6565b506060820151611e9d6060850182611eb6565b506080820151611eb06080850182611eb6565b50505050565b611ebf8161212e565b82525050565b611ece81612138565b82525050565b600061030082019050611eea6000830189611c68565b611ef760c0830188611d49565b611f056101c0830187611cb3565b611f136101e0830186611d94565b611f21610240830185611cfe565b611f2f6102a0830184611cfe565b979650505050505050565b6000602082019050611f4f6000830184611ddf565b92915050565b6000602082019050611f6a6000830184611dee565b92915050565b6000608082019050611f856000830187611dee565b611f926020830186611ec5565b611f9f6040830185611dee565b611fac6060830184611dee565b95945050505050565b6000602082019050611fca6000830184611dfd565b92915050565b6000606082019050611fe56000830184611e0c565b92915050565b600060a0820190506120006000830184611e4e565b92915050565b600060208201905061201b6000830184611eb6565b92915050565b6000604051905081810181811067ffffffffffffffff8211171561204457600080fd5b8060405250919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b6000819050919050565b600060069050919050565b600060019050919050565b600060039050919050565b600060089050919050565b600060039050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b6000602082019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60008115159050919050565b6000819050919050565b6000819050919050565b600060ff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061217a826120f8565b9050919050565b6000819050919050565b600060ff82169050919050565b60006121a3826120f8565b90509190505600a265627a7a723058209ab90b1797520625d453f95f523a66c8949610aa0cbe5b26ccc607f12c7511416c6578706572696d656e74616cf50037",
  "sourceMap": "526:6278:0:-;;;788:141;8:9:-1;5:2;;;30:1;27;20:12;5:2;788:141:0;;;;;;;;;;;;;;;;;;;;;;904:17;859:16;;:63;;;;;;;;;;;;;;;;;;788:141;526:6278;;5:122:-1;;83:39;114:6;108:13;83:39;;;74:48;;68:59;;;;;134:263;;249:2;237:9;228:7;224:23;220:32;217:2;;;265:1;262;255:12;217:2;300:1;317:64;373:7;364:6;353:9;349:22;317:64;;;307:74;;279:108;211:186;;;;;404:128;;484:42;477:5;473:54;462:65;;456:76;;;;526:6278:0;;;;;;;",
  "deployedSourceMap": "526:6278:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3098:781;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3098:781:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2443:652;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2443:652:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;228:268:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;228:268:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;680:51:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;680:51:0;;;;;;;;;;;;;;;;;;;;1609:831;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1609:831:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;642:34;;8:9:-1;5:2;;;30:1;27;20:12;5:2;642:34:0;;;;;;;;;;;;;;;;;;;;735:49;;8:9:-1;5:2;;;30:1;27;20:12;5:2;735:49:0;;;;;;;;;;;;;;;;;;;;932:578;;8:9:-1;5:2;;;30:1;27;20:12;5:2;932:578:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4711:541;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4711:541:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;757:906:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;757:906:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3882:826:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3882:826:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3098:781;3222:7;3235:56;;:::i;:::-;3372:48;;:::i;:::-;3297:70;3328:13;3343:23;3297:30;:70::i;:::-;3235:132;;3426:51;3453:23;3426:26;:51::i;:::-;3372:105;;3542:24;:44;;;3591:24;:40;;;3636:24;:37;;;3678:24;:45;;;3728:24;:54;;;3787:20;:41;;;3833:20;:38;;;3489:386;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3482:393;;3098:781;;;;;;:::o;2443:652::-;2570:7;2584:35;2625:82;2656:5;:19;;;2677:5;:29;;;2625:30;:82::i;:::-;2584:123;;2752:5;:14;;;2771:5;:19;;;2795:5;:21;;;2821:5;:19;;;2845:5;:20;;;2870:5;:10;;;2885:5;:21;;;2911:5;:17;;;2933:5;:30;;;2992:16;:23;;;3060:27;2719:372;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2712:379;;2443:652;;;;;:::o;228:268:14:-;346:10;363:20;396:6;;;;;;;;;;;;;;;;;;404:4;386:23;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;386:23:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;363:46;;486:6;420:72;;:62;430:12;444:9;:11;;;457:9;:11;;;470:9;:11;;;420:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;420:62:14;;;;;;;;:72;;;413:79;;228:268;;;;;;:::o;680:51:0:-;728:3;680:51;:::o;1609:831::-;1680:13;1700:55;;:::i;:::-;1783:56;;:::i;:::-;1869:11;1926:35;;:::i;:::-;1981:20;2191:8;2335:24;1758:6;:21;;;1700:79;;1842:6;:22;;;1783:81;;1883:6;:25;;;:32;;;:39;;;1869:53;;1964:6;:12;;;1926:50;;2004:20;:26;;;1981:49;;2039:41;2049:5;:30;;;2039:9;:41::i;:::-;2035:69;;;2094:5;2087:12;;;;2035:69;2138:1;2112:5;:22;;;:27;:51;;;;2162:1;2143:15;:20;2112:51;2108:79;;;2177:5;2170:12;;;;2108:79;2202:128;2217:19;:25;;;2247:20;:26;;;2278:5;:21;;;2304:5;:22;;;2202:10;:128::i;:::-;2191:139;;2362:36;2380:16;2394:1;675;2380:13;;:16;;;;:::i;:::-;2373:2;:24;2362:6;:10;;:36;;;;:::i;:::-;2335:63;;2417:19;2410:3;:26;;2403:33;;1609:831;;;;;;;;;;;:::o;642:34::-;675:1;642:34;:::o;735:49::-;;;;;;;;;;;;;:::o;932:578::-;1019:4;1107:99;1128:6;:15;;;1148:14;1167:6;:25;;;:35;;;1107:16;:99::i;:::-;1106:100;1102:200;;;1292:5;1285:12;;;;1102:200;1400:102;1418:6;:24;;;1448:6;:21;;;1475:6;:22;;;1400:12;:102::i;:::-;1388:118;;932:578;;;;;:::o;4711:541::-;4808:20;;:::i;:::-;4835:38;4944:20;4966:16;4984:17;4900:16;;;;;;;;;;;:31;;;:33;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4900:33:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4900:33:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4900:33:0;;;;;;;;;4835:99;;5008:14;:50;;;5059:23;5008:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5008:75:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5008:75:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;5008:75:0;;;;;;;;;4939:144;;;;;;5095:153;;;;;;;;;5143:20;5095:153;;;;5186:16;5095:153;;;;5226:17;5095:153;;;5088:160;;4711:541;;;;;;;:::o;757:906:13:-;843:25;;:::i;:::-;879:19;;:::i;:::-;909:23;;:::i;:::-;943:20;;:::i;:::-;974:22;;:::i;:::-;1007;;:::i;:::-;1039:620;;;;;;;;;1052:5;:19;;;1039:620;;;;;;;;1073:5;:12;;;1039:620;;;;;;;;1087:5;:17;;;1039:620;;;;;;;;1106:5;:19;;;1039:620;;;;;;;;1127:5;:20;;;1039:620;;;;;;;;1149:5;:13;;;1039:620;;;;;;;;;;;;;;;;1178:5;:27;;;1039:620;;;;1207:5;:10;;;1039:620;;;;1219:5;:21;;;1039:620;;;;1242:5;:20;;;1039:620;;;;1264:5;:16;;;1039:620;;;;1282:5;:17;;;1039:620;;;;1301:5;:15;;;1039:620;;;;1318:5;:30;;;1039:620;;;;;;;;;;;;1355:5;:29;;;1039:620;;;;;;;;;;;;;;;;;;1400:5;:21;;;:23;;;1039:620;;;;;;;;1425:5;:23;;;:25;;;1039:620;;;;;;;;1452:5;:26;;;:28;;;1039:620;;;;;;;;;;;;;;;;1487:5;:21;;;:23;;;1039:620;;;;;;;;;;1512:5;:23;;;:25;;;1039:620;;;;;;;;;;1539:5;:26;;;:28;;;1039:620;;;;;;;;;;;;;;;;;;1574:5;:21;;;:23;;;1039:620;;;;;;;;;;1599:5;:23;;;:25;;;1039:620;;;;;;;;;;1626:5;:26;;;:28;;;1039:620;;;;;;;;;;;;;;;;;;;;;757:906;;;;;;;:::o;3882:826:0:-;4008:24;;:::i;:::-;4121:64;4249:19;4270:15;4287:12;4301:20;4323:29;4225:13;4121:118;;4359:27;:53;;;4413:23;4359:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4359:78:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4359:78:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;4359:78:0;;;;;;;;;4244:193;;;;;;;;;;4449:255;;;;;;;;;4500:19;4449:255;;;;4541:15;4449:255;;;;4575:12;4449:255;;;;4614:20;4449:255;;;;4670:29;4449:255;;;4442:262;;3882:826;;;;;;;;;;:::o;6655:147::-;6730:12;6783:15;6756:24;:42;6749:49;;6655:147;;;:::o;6280:372::-;6438:4;6449:19;6536:20;6471:61;675:1;6516:2;:15;6471:40;6495:15;6471:19;:23;;:40;;;;:::i;:::-;:44;;:61;;;;:::i;:::-;6449:83;;6559:42;6584:16;6559:20;:24;;:42;;;;:::i;:::-;6536:65;;6613:35;6632:15;6613:14;:18;;:35;;;;:::i;:::-;6606:42;;6280:372;;;;;;;;:::o;1060:116:15:-;1120:7;1148:2;1142;:8;;1135:16;;;;;;1169:2;1164;:7;1157:14;;1060:116;;;;:::o;203:380::-;263:9;495:1;489:2;:7;485:36;;;513:1;506:8;;;;485:36;536:2;531;:7;527:11;;561:2;555;551:1;:6;;;;;;;;:12;544:20;;;;;;577:1;570:8;;203:380;;;;;:::o;5255:1022:0:-;5429:4;5440:22;5640:26;5773:27;5910:24;728:3;5465:15;:42;5440:67;;5543:17;5516:14;:24;;;:44;:96;;;;5595:17;5567:15;:25;;;:45;5516:96;5512:124;;;5626:5;5619:12;;;;5512:124;5683:14;:20;;;5708:14;:27;;;5740:14;:24;;;5669:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5640:128;;5817:15;:21;;;5843:15;:28;;;5876:15;:25;;;5803:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5773:132;;5937:94;5958:17;5980:18;6003:14;:24;;;5937:16;:94::i;:::-;5910:121;;6123:19;6122:20;6118:48;;;6156:5;6149:12;;;;6118:48;6177:96;6198:17;6220:19;6244:15;:25;;;6177:16;:96::i;:::-;6170:103;;5255:1022;;;;;;;;;;:::o;665:283:15:-;725:7;941:2;936;:7;;;;;;;;929:14;;665:283;;;;:::o;526:6278:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;526:6278:0;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;526:6278:0;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;526:6278:0;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;526:6278:0;;;;:::o;:::-;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;526:6278:0;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;;57:66;;;;;130:118;;197:46;235:6;222:20;197:46;;;188:55;;182:66;;;;;255:184;;364:70;426:6;420:13;364:70;;;355:79;;349:90;;;;;499:328;;617:4;605:9;600:3;596:19;592:30;589:2;;;635:1;632;625:12;589:2;653:20;668:4;653:20;;;644:29;;725:1;756:49;801:3;792:6;781:9;777:22;756:49;;;750:3;743:5;739:15;732:74;683:134;583:244;;;;;887:332;;1009:4;997:9;992:3;988:19;984:30;981:2;;;1027:1;1024;1017:12;981:2;1045:20;1060:4;1045:20;;;1036:29;;1117:1;1148:49;1193:3;1184:6;1173:9;1169:22;1148:49;;;1142:3;1135:5;1131:15;1124:74;1075:134;975:244;;;;;1281:536;;1401:4;1389:9;1384:3;1380:19;1376:30;1373:2;;;1419:1;1416;1409:12;1373:2;1437:20;1452:4;1437:20;;;1428:29;;1509:1;1540:78;1614:3;1605:6;1594:9;1590:22;1540:78;;;1534:3;1527:5;1523:15;1516:103;1467:163;1685:2;1718:77;1791:3;1782:6;1771:9;1767:22;1718:77;;;1711:4;1704:5;1700:16;1693:103;1640:167;1367:450;;;;;1860:3675;;1972:5;1960:9;1955:3;1951:19;1947:31;1944:2;;;1991:1;1988;1981:12;1944:2;2009:21;2024:5;2009:21;;;2000:30;;2089:1;2120:49;2165:3;2156:6;2145:9;2141:22;2120:49;;;2114:3;2107:5;2103:15;2096:74;2040:141;2242:2;2275:49;2320:3;2311:6;2300:9;2296:22;2275:49;;;2268:4;2261:5;2257:16;2250:75;2191:145;2397:2;2430:49;2475:3;2466:6;2455:9;2451:22;2430:49;;;2423:4;2416:5;2412:16;2405:75;2346:145;2551:2;2584:49;2629:3;2620:6;2609:9;2605:22;2584:49;;;2577:4;2570:5;2566:16;2559:75;2501:144;2707:3;2741:49;2786:3;2777:6;2766:9;2762:22;2741:49;;;2734:4;2727:5;2723:16;2716:75;2655:147;2863:3;2897:49;2942:3;2933:6;2922:9;2918:22;2897:49;;;2890:4;2883:5;2879:16;2872:75;2812:146;3010:3;3044:49;3089:3;3080:6;3069:9;3065:22;3044:49;;;3037:4;3030:5;3026:16;3019:75;2968:137;3160:3;3194:49;3239:3;3230:6;3219:9;3215:22;3194:49;;;3187:4;3180:5;3176:16;3169:75;3115:140;3309:3;3344:49;3389:3;3380:6;3369:9;3365:22;3344:49;;;3336:5;3329;3325:17;3318:76;3265:140;3462:3;3497:49;3542:3;3533:6;3522:9;3518:22;3497:49;;;3489:5;3482;3478:17;3471:76;3415:143;3611:3;3646:49;3691:3;3682:6;3671:9;3667:22;3646:49;;;3638:5;3631;3627:17;3620:76;3568:139;3763:3;3798:49;3843:3;3834:6;3823:9;3819:22;3798:49;;;3790:5;3783;3779:17;3772:76;3717:142;3916:3;3951:49;3996:3;3987:6;3976:9;3972:22;3951:49;;;3943:5;3936;3932:17;3925:76;3869:143;4072:3;4107:49;4152:3;4143:6;4132:9;4128:22;4107:49;;;4099:5;4092;4088:17;4081:76;4022:146;4235:3;4270:49;4315:3;4306:6;4295:9;4291:22;4270:49;;;4262:5;4255;4251:17;4244:76;4178:153;4390:3;4425:49;4470:3;4461:6;4450:9;4446:22;4425:49;;;4417:5;4410;4406:17;4399:76;4341:145;4555:3;4590:49;4635:3;4626:6;4615:9;4611:22;4590:49;;;4582:5;4575;4571:17;4564:76;4496:155;4721:3;4756:49;4801:3;4792:6;4781:9;4777:22;4756:49;;;4748:5;4741;4737:17;4730:76;4661:156;4867:3;4902:49;4947:3;4938:6;4927:9;4923:22;4902:49;;;4894:5;4887;4883:17;4876:76;4827:136;5024:3;5059:77;5132:3;5123:6;5112:9;5108:22;5059:77;;;5051:5;5044;5040:17;5033:104;4973:175;5211:3;5246:77;5319:3;5310:6;5299:9;5295:22;5246:77;;;5238:5;5231;5227:17;5220:104;5158:177;5401:3;5436:77;5509:3;5500:6;5489:9;5485:22;5436:77;;;5428:5;5421;5417:17;5410:104;5345:180;1938:3597;;;;;5578:3679;;5694:5;5682:9;5677:3;5673:19;5669:31;5666:2;;;5713:1;5710;5703:12;5666:2;5731:21;5746:5;5731:21;;;5722:30;;5811:1;5842:49;5887:3;5878:6;5867:9;5863:22;5842:49;;;5836:3;5829:5;5825:15;5818:74;5762:141;5964:2;5997:49;6042:3;6033:6;6022:9;6018:22;5997:49;;;5990:4;5983:5;5979:16;5972:75;5913:145;6119:2;6152:49;6197:3;6188:6;6177:9;6173:22;6152:49;;;6145:4;6138:5;6134:16;6127:75;6068:145;6273:2;6306:49;6351:3;6342:6;6331:9;6327:22;6306:49;;;6299:4;6292:5;6288:16;6281:75;6223:144;6429:3;6463:49;6508:3;6499:6;6488:9;6484:22;6463:49;;;6456:4;6449:5;6445:16;6438:75;6377:147;6585:3;6619:49;6664:3;6655:6;6644:9;6640:22;6619:49;;;6612:4;6605:5;6601:16;6594:75;6534:146;6732:3;6766:49;6811:3;6802:6;6791:9;6787:22;6766:49;;;6759:4;6752:5;6748:16;6741:75;6690:137;6882:3;6916:49;6961:3;6952:6;6941:9;6937:22;6916:49;;;6909:4;6902:5;6898:16;6891:75;6837:140;7031:3;7066:49;7111:3;7102:6;7091:9;7087:22;7066:49;;;7058:5;7051;7047:17;7040:76;6987:140;7184:3;7219:49;7264:3;7255:6;7244:9;7240:22;7219:49;;;7211:5;7204;7200:17;7193:76;7137:143;7333:3;7368:49;7413:3;7404:6;7393:9;7389:22;7368:49;;;7360:5;7353;7349:17;7342:76;7290:139;7485:3;7520:49;7565:3;7556:6;7545:9;7541:22;7520:49;;;7512:5;7505;7501:17;7494:76;7439:142;7638:3;7673:49;7718:3;7709:6;7698:9;7694:22;7673:49;;;7665:5;7658;7654:17;7647:76;7591:143;7794:3;7829:49;7874:3;7865:6;7854:9;7850:22;7829:49;;;7821:5;7814;7810:17;7803:76;7744:146;7957:3;7992:49;8037:3;8028:6;8017:9;8013:22;7992:49;;;7984:5;7977;7973:17;7966:76;7900:153;8112:3;8147:49;8192:3;8183:6;8172:9;8168:22;8147:49;;;8139:5;8132;8128:17;8121:76;8063:145;8277:3;8312:49;8357:3;8348:6;8337:9;8333:22;8312:49;;;8304:5;8297;8293:17;8286:76;8218:155;8443:3;8478:49;8523:3;8514:6;8503:9;8499:22;8478:49;;;8470:5;8463;8459:17;8452:76;8383:156;8589:3;8624:49;8669:3;8660:6;8649:9;8645:22;8624:49;;;8616:5;8609;8605:17;8598:76;8549:136;8746:3;8781:77;8854:3;8845:6;8834:9;8830:22;8781:77;;;8773:5;8766;8762:17;8755:104;8695:175;8933:3;8968:77;9041:3;9032:6;9021:9;9017:22;8968:77;;;8960:5;8953;8949:17;8942:104;8880:177;9123:3;9158:77;9231:3;9222:6;9211:9;9207:22;9158:77;;;9150:5;9143;9139:17;9132:104;9067:180;5660:3597;;;;;9310:602;;9427:4;9415:9;9410:3;9406:19;9402:30;9399:2;;;9445:1;9442;9435:12;9399:2;9463:20;9478:4;9463:20;;;9454:29;;9530:1;9561:47;9604:3;9595:6;9584:9;9580:22;9561:47;;;9555:3;9548:5;9544:15;9537:72;9493:127;9667:2;9700:49;9745:3;9736:6;9725:9;9721:22;9700:49;;;9693:4;9686:5;9682:16;9675:75;9630:131;9808:2;9841:49;9886:3;9877:6;9866:9;9862:22;9841:49;;;9834:4;9827:5;9823:16;9816:75;9771:131;9393:519;;;;;9965:606;;10086:4;10074:9;10069:3;10065:19;10061:30;10058:2;;;10104:1;10101;10094:12;10058:2;10122:20;10137:4;10122:20;;;10113:29;;10189:1;10220:47;10263:3;10254:6;10243:9;10239:22;10220:47;;;10214:3;10207:5;10203:15;10196:72;10152:127;10326:2;10359:49;10404:3;10395:6;10384:9;10380:22;10359:49;;;10352:4;10345:5;10341:16;10334:75;10289:131;10467:2;10500:49;10545:3;10536:6;10525:9;10521:22;10500:49;;;10493:4;10486:5;10482:16;10475:75;10430:131;10052:519;;;;;10621:1187;;10733:5;10721:9;10716:3;10712:19;10708:31;10705:2;;;10752:1;10749;10742:12;10705:2;10770:20;10785:4;10770:20;;;10761:29;;10844:1;10875:49;10920:3;10911:6;10900:9;10896:22;10875:49;;;10869:3;10862:5;10858:15;10851:74;10800:136;10999:2;11032:49;11077:3;11068:6;11057:9;11053:22;11032:49;;;11025:4;11018:5;11014:16;11007:75;10946:147;11157:2;11190:80;11266:3;11257:6;11246:9;11242:22;11190:80;;;11183:4;11176:5;11172:16;11165:106;11103:179;11342:3;11376:67;11439:3;11430:6;11419:9;11415:22;11376:67;;;11369:4;11362:5;11358:16;11351:93;11292:163;11516:3;11550:67;11613:3;11604:6;11593:9;11589:22;11550:67;;;11543:4;11536:5;11532:16;11525:93;11465:164;11680:3;11714:72;11782:3;11773:6;11762:9;11758:22;11714:72;;;11707:4;11700:5;11696:16;11689:98;11639:159;10699:1109;;;;;11857:794;;11964:4;11952:9;11947:3;11943:19;11939:30;11936:2;;;11982:1;11979;11972:12;11936:2;12000:20;12015:4;12000:20;;;11991:29;;12071:1;12102:49;12147:3;12138:6;12127:9;12123:22;12102:49;;;12096:3;12089:5;12085:15;12078:74;12030:133;12218:2;12251:49;12296:3;12287:6;12276:9;12272:22;12251:49;;;12244:4;12237:5;12233:16;12226:75;12173:139;12370:2;12403:49;12448:3;12439:6;12428:9;12424:22;12403:49;;;12396:4;12389:5;12385:16;12378:75;12322:142;12519:2;12552:77;12625:3;12616:6;12605:9;12601:22;12552:77;;;12545:4;12538:5;12534:16;12527:103;12474:167;11930:721;;;;;12658:118;;12725:46;12763:6;12750:20;12725:46;;;12716:55;;12710:66;;;;;12783:122;;12861:39;12892:6;12886:13;12861:39;;;12852:48;;12846:59;;;;;12912:114;;12977:44;13013:6;13000:20;12977:44;;;12968:53;;12962:64;;;;;13033:366;;;13154:2;13142:9;13133:7;13129:23;13125:32;13122:2;;;13170:1;13167;13160:12;13122:2;13205:1;13222:53;13267:7;13258:6;13247:9;13243:22;13222:53;;;13212:63;;13184:97;13312:2;13330:53;13375:7;13366:6;13355:9;13351:22;13330:53;;;13320:63;;13291:98;13116:283;;;;;;13406:556;;;;13576:3;13564:9;13555:7;13551:23;13547:33;13544:2;;;13593:1;13590;13583:12;13544:2;13628:1;13645:53;13690:7;13681:6;13670:9;13666:22;13645:53;;;13635:63;;13607:97;13735:2;13753:53;13798:7;13789:6;13778:9;13774:22;13753:53;;;13743:63;;13714:98;13843:2;13861:85;13938:7;13929:6;13918:9;13914:22;13861:85;;;13851:95;;13822:130;13538:424;;;;;;13969:241;;14073:2;14061:9;14052:7;14048:23;14044:32;14041:2;;;14089:1;14086;14079:12;14041:2;14124:1;14141:53;14186:7;14177:6;14166:9;14162:22;14141:53;;;14131:63;;14103:97;14035:175;;;;;14217:325;;14363:2;14351:9;14342:7;14338:23;14334:32;14331:2;;;14379:1;14376;14369:12;14331:2;14414:1;14431:95;14518:7;14509:6;14498:9;14494:22;14431:95;;;14421:105;;14393:139;14325:217;;;;;14549:487;;;14730:3;14718:9;14709:7;14705:23;14701:33;14698:2;;;14747:1;14744;14737:12;14698:2;14782:1;14799:86;14877:7;14868:6;14857:9;14853:22;14799:86;;;14789:96;;14761:130;14922:2;14940:80;15012:7;15003:6;14992:9;14988:22;14940:80;;;14930:90;;14901:125;14692:344;;;;;;15043:296;;15174:3;15162:9;15153:7;15149:23;15145:33;15142:2;;;15191:1;15188;15181:12;15142:2;15226:1;15243:80;15315:7;15306:6;15295:9;15291:22;15243:80;;;15233:90;;15205:124;15136:203;;;;;15346:289;;15473:4;15461:9;15452:7;15448:23;15444:34;15441:2;;;15491:1;15488;15481:12;15441:2;15526:1;15543:76;15611:7;15602:6;15591:9;15587:22;15543:76;;;15533:86;;15505:120;15435:200;;;;;15642:416;;;15786:4;15774:9;15765:7;15761:23;15757:34;15754:2;;;15804:1;15801;15794:12;15754:2;15839:1;15856:76;15924:7;15915:6;15904:9;15900:22;15856:76;;;15846:86;;15818:120;15969:4;15989:53;16034:7;16025:6;16014:9;16010:22;15989:53;;;15979:63;;15948:100;15748:310;;;;;;16065:535;;;;16214:2;16202:9;16193:7;16189:23;16185:32;16182:2;;;16230:1;16227;16220:12;16182:2;16265:1;16282:64;16338:7;16329:6;16318:9;16314:22;16282:64;;;16272:74;;16244:108;16383:2;16401:64;16457:7;16448:6;16437:9;16433:22;16401:64;;;16391:74;;16362:109;16502:2;16520:64;16576:7;16567:6;16556:9;16552:22;16520:64;;;16510:74;;16481:109;16176:424;;;;;;16607:809;;;;;;16790:3;16778:9;16769:7;16765:23;16761:33;16758:2;;;16807:1;16804;16797:12;16758:2;16842:1;16859:64;16915:7;16906:6;16895:9;16891:22;16859:64;;;16849:74;;16821:108;16960:2;16978:64;17034:7;17025:6;17014:9;17010:22;16978:64;;;16968:74;;16939:109;17079:2;17097:64;17153:7;17144:6;17133:9;17129:22;17097:64;;;17087:74;;17058:109;17198:2;17216:64;17272:7;17263:6;17252:9;17248:22;17216:64;;;17206:74;;17177:109;17317:3;17336:64;17392:7;17383:6;17372:9;17368:22;17336:64;;;17326:74;;17296:110;16752:664;;;;;;;;;17423:110;17496:31;17521:5;17496:31;;;17491:3;17484:44;17478:55;;;17573:521;17696:52;17742:5;17696:52;;;17794:54;17842:5;17794:54;;;17869:1;17854:228;17879:6;17876:1;17873:13;17854:228;;;17919:53;17968:3;17959:6;17953:13;17919:53;;;17989:58;18040:6;17989:58;;;17979:68;;18070:4;18065:3;18061:14;18054:21;;17901:1;17898;17894:9;17889:14;;17854:228;;;17858:14;17675:419;;;;;18135:521;18258:52;18304:5;18258:52;;;18356:54;18404:5;18356:54;;;18431:1;18416:228;18441:6;18438:1;18435:13;18416:228;;;18481:53;18530:3;18521:6;18515:13;18481:53;;;18551:58;18602:6;18551:58;;;18541:68;;18632:4;18627:3;18623:14;18616:21;;18463:1;18460;18456:9;18451:14;;18416:228;;;18420:14;18237:419;;;;;18697:521;18820:52;18866:5;18820:52;;;18918:54;18966:5;18918:54;;;18993:1;18978:228;19003:6;19000:1;18997:13;18978:228;;;19043:53;19092:3;19083:6;19077:13;19043:53;;;19113:58;19164:6;19113:58;;;19103:68;;19194:4;19189:3;19185:14;19178:21;;19025:1;19022;19018:9;19013:14;;18978:228;;;18982:14;18799:419;;;;;19259:521;19382:52;19428:5;19382:52;;;19480:54;19528:5;19480:54;;;19555:1;19540:228;19565:6;19562:1;19559:13;19540:228;;;19605:53;19654:3;19645:6;19639:13;19605:53;;;19675:58;19726:6;19675:58;;;19665:68;;19756:4;19751:3;19747:14;19740:21;;19587:1;19584;19580:9;19575:14;;19540:228;;;19544:14;19361:419;;;;;19817:507;19936:50;19980:5;19936:50;;;20032:52;20078:5;20032:52;;;20105:1;20090:222;20115:6;20112:1;20109:13;20090:222;;;20155:49;20200:3;20191:6;20185:13;20155:49;;;20221:56;20270:6;20221:56;;;20211:66;;20300:4;20295:3;20291:14;20284:21;;20137:1;20134;20130:9;20125:14;;20090:222;;;20094:14;19915:409;;;;;20332:101;20399:28;20421:5;20399:28;;;20394:3;20387:41;20381:52;;;20440:110;20513:31;20538:5;20513:31;;;20508:3;20501:44;20495:55;;;20557:182;20663:70;20727:5;20663:70;;;20658:3;20651:83;20645:94;;;20857:725;21014:4;21009:3;21005:14;21116:3;21109:5;21105:15;21099:22;21133:61;21189:3;21184;21180:13;21167:11;21133:61;;;21034:172;21294:4;21287:5;21283:16;21277:23;21312:62;21368:4;21363:3;21359:14;21346:11;21312:62;;;21216:170;21475:4;21468:5;21464:16;21458:23;21493:62;21549:4;21544:3;21540:14;21527:11;21493:62;;;21396:171;20987:595;;;;21708:1103;21873:4;21868:3;21864:14;21974:3;21967:5;21963:15;21957:22;21991:61;22047:3;22042;22038:13;22025:11;21991:61;;;21893:171;22151:4;22144:5;22140:16;22134:23;22169:62;22225:4;22220:3;22216:14;22203:11;22169:62;;;22074:169;22327:4;22320:5;22316:16;22310:23;22345:62;22401:4;22396:3;22392:14;22379:11;22345:62;;;22253:166;22511:4;22504:5;22500:16;22494:23;22529:62;22585:4;22580:3;22576:14;22563:11;22529:62;;;22429:174;22704:4;22697:5;22693:16;22687:23;22722:62;22778:4;22773:3;22769:14;22756:11;22722:62;;;22613:183;21846:965;;;;22818:110;22891:31;22916:5;22891:31;;;22886:3;22879:44;22873:55;;;22935:104;23004:29;23027:5;23004:29;;;22999:3;22992:42;22986:53;;;23046:1248;;23566:3;23555:9;23551:19;23543:27;;23581:107;23685:1;23674:9;23670:17;23661:6;23581:107;;;23699:109;23803:3;23792:9;23788:19;23779:6;23699:109;;;23819;23923:3;23912:9;23908:19;23899:6;23819:109;;;23939:105;24039:3;24028:9;24024:19;24015:6;23939:105;;;24055:109;24159:3;24148:9;24144:19;24135:6;24055:109;;;24175;24279:3;24268:9;24264:19;24255:6;24175:109;;;23537:757;;;;;;;;;;24301:181;;24403:2;24392:9;24388:18;24380:26;;24417:55;24469:1;24458:9;24454:17;24445:6;24417:55;;;24374:108;;;;;24489:193;;24597:2;24586:9;24582:18;24574:26;;24611:61;24669:1;24658:9;24654:17;24645:6;24611:61;;;24568:114;;;;;24689:489;;24877:3;24866:9;24862:19;24854:27;;24892:61;24950:1;24939:9;24935:17;24926:6;24892:61;;;24964:58;25018:2;25007:9;25003:18;24994:6;24964:58;;;25033:62;25091:2;25080:9;25076:18;25067:6;25033:62;;;25106;25164:2;25153:9;25149:18;25140:6;25106:62;;;24848:330;;;;;;;;25185:259;;25326:2;25315:9;25311:18;25303:26;;25340:94;25431:1;25420:9;25416:17;25407:6;25340:94;;;25297:147;;;;;25451:341;;25633:2;25622:9;25618:18;25610:26;;25647:135;25779:1;25768:9;25764:17;25755:6;25647:135;;;25604:188;;;;;25799:358;;25989:3;25978:9;25974:19;25966:27;;26004:143;26144:1;26133:9;26129:17;26120:6;26004:143;;;25960:197;;;;;26164:193;;26272:2;26261:9;26257:18;26249:26;;26286:61;26344:1;26333:9;26329:17;26320:6;26286:61;;;26243:114;;;;;26364:256;;26426:2;26420:9;26410:19;;26464:4;26456:6;26452:17;26563:6;26551:10;26548:22;26527:18;26515:10;26512:34;26509:62;26506:2;;;26584:1;26581;26574:12;26506:2;26604:10;26600:2;26593:22;26404:216;;;;;26629:108;;26724:6;26713:17;;26705:32;;;;26748:108;;26843:6;26832:17;;26824:32;;;;26867:108;;26962:6;26951:17;;26943:32;;;;26986:108;;27081:6;27070:17;;27062:32;;;;27105:106;;27198:6;27187:17;;27179:32;;;;27220:96;;27308:3;27298:13;;27292:24;;;;27323:96;;27411:3;27401:13;;27395:24;;;;27426:96;;27514:3;27504:13;;27498:24;;;;27529:96;;27617:3;27607:13;;27601:24;;;;27632:94;;27718:3;27708:13;;27702:24;;;;27734:120;;27843:4;27835:6;27831:17;27820:28;;27813:41;;;;27863:120;;27972:4;27964:6;27960:17;27949:28;;27942:41;;;;27992:120;;28101:4;28093:6;28089:17;28078:28;;28071:41;;;;28121:120;;28230:4;28222:6;28218:17;28207:28;;28200:41;;;;28250:118;;28357:4;28349:6;28345:17;28334:28;;28327:41;;;;28376:128;;28456:42;28449:5;28445:54;28434:65;;28428:76;;;;28511:92;;28591:5;28584:13;28577:21;28566:32;;28560:43;;;;28610:79;;28679:5;28668:16;;28662:27;;;;28696:79;;28765:5;28754:16;;28748:27;;;;28782:88;;28860:4;28853:5;28849:16;28838:27;;28832:38;;;;28877:128;;28957:42;28950:5;28946:54;28935:65;;28929:76;;;;29012:79;;29081:5;29070:16;;29064:27;;;;29098:136;;29198:31;29223:5;29198:31;;;29187:42;;29181:53;;;;29241:79;;29310:5;29299:16;;29293:27;;;;29327:88;;29405:4;29398:5;29394:16;29383:27;;29377:38;;;;29422:148;;29534:31;29559:5;29534:31;;;29521:44;;29515:55;;;",
  "source": "pragma solidity ^0.4.24;\npragma experimental ABIEncoderV2;\n\n// External dependencies\nimport \"zeppelin-solidity/contracts/math/SafeMath.sol\";\n\n// Libraries\nimport \"./libraries/LTVDecisionEngineTypes.sol\";\nimport \"../../shared/libraries/SignaturesLibrary.sol\";\nimport \"../../shared/libraries/OrderLibrary.sol\";\n\n// Interfaces\nimport \"../../shared/interfaces/ContractRegistryInterface.sol\";\nimport \"../../shared/interfaces/CollateralizerInterface.sol\";\nimport \"../../shared/interfaces/SimpleInterestTermsContractInterface.sol\";\n\ncontract LTVDecisionEngine is LTVDecisionEngineTypes, SignaturesLibrary, OrderLibrary\n{\n\tusing SafeMath for uint;\n\n\tuint public constant PRECISION = 4;\n\n\tuint public constant MAX_PRICE_TTL_IN_SECONDS = 600;\n\n\tContractRegistryInterface public contractRegistry;\n\n\tfunction LTVDecisionEngine(address _contractRegistry) public {\n        contractRegistry = ContractRegistryInterface(_contractRegistry);\n    }\n\n\tfunction evaluateConsent(Params params, bytes32 commitmentHash)\n\t\tpublic view returns (bool)\n\t{\n\t\t// Checks that the given creditor values were signed by the creditor.\n\t\tif (!isValidSignature(\n\t\t\tparams.creditor,\n\t\t\tcommitmentHash,\n\t\t\tparams.creditorCommitment.signature\n\t\t)) {\n\t\t\t// We return early if the creditor values were not signed correctly.\n\t\t\treturn false;\n\t\t}\n\n\t\t// Checks that the given price feed data was signed by the price feed operator.\n\t\treturn (\n\t\t\tverifyPrices(\n\t\t\t\tparams.priceFeedOperator,\n\t\t\t\tparams.principalPrice,\n\t\t\t\tparams.collateralPrice\n\t\t\t)\n\t\t);\n\t}\n\n\t// Returns true if the creditor-initiated order has not expired, and the LTV is below the max.\n\tfunction evaluateDecision(Params memory params)\n\t\tpublic view returns (bool _success)\n\t{\n\t\tLTVDecisionEngineTypes.Price memory principalTokenPrice = params.principalPrice;\n\t\tLTVDecisionEngineTypes.Price memory collateralTokenPrice = params.collateralPrice;\n\n\t\tuint maxLTV = params.creditorCommitment.values.maxLTV;\n\t\tOrderLibrary.DebtOrder memory order = params.order;\n\n\t\tuint collateralValue = collateralTokenPrice.value;\n\n\t\tif (isExpired(order.expirationTimestampInSec)) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (order.collateralAmount == 0 || collateralValue == 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\tuint ltv = computeLTV(\n\t\t\tprincipalTokenPrice.value,\n\t\t\tcollateralTokenPrice.value,\n\t\t\torder.principalAmount,\n\t\t\torder.collateralAmount\n\t\t);\n\n\t\tuint maxLTVWithPrecision = maxLTV.mul(10 ** (PRECISION.sub(2)));\n\n\t\treturn ltv <= maxLTVWithPrecision;\n\t}\n\n\tfunction hashCreditorCommitmentForOrder(CommitmentValues commitmentValues, OrderLibrary.DebtOrder order)\n\tpublic view returns (bytes32)\n\t{\n\t\tbytes32 termsContractCommitmentHash =\n\t\t\tgetTermsContractCommitmentHash(order.termsContract, order.termsContractParameters);\n\n\t\treturn keccak256(\n\t\t\t// order values\n\t\t\torder.creditor,\n\t\t\torder.kernelVersion,\n\t\t\torder.issuanceVersion,\n\t\t\torder.termsContract,\n\t\t\torder.principalToken,\n\t\t\torder.salt,\n\t\t\torder.principalAmount,\n\t\t\torder.creditorFee,\n\t\t\torder.expirationTimestampInSec,\n\t\t\t// commitment values\n\t\t\tcommitmentValues.maxLTV,\n\t\t\t// hashed terms contract commitments\n\t\t\ttermsContractCommitmentHash\n\t\t);\n\t}\n\n\tfunction getTermsContractCommitmentHash(\n\t\taddress termsContract,\n\t\tbytes32 termsContractParameters\n\t) public view returns (bytes32) {\n\t\tSimpleInterestParameters memory simpleInterestParameters =\n\t\t\tunpackSimpleInterestParameters(termsContract, termsContractParameters);\n\n\t\tCollateralParameters memory collateralParameters =\n\t\t\tunpackCollateralParameters(termsContractParameters);\n\n\t\treturn keccak256(\n\t\t\t// unpacked termsContractParameters\n\t\t\tsimpleInterestParameters.principalTokenIndex,\n\t\t\tsimpleInterestParameters.principalAmount,\n\t\t\tsimpleInterestParameters.interestRate,\n\t\t\tsimpleInterestParameters.amortizationUnitType,\n\t\t\tsimpleInterestParameters.termLengthInAmortizationUnits,\n\t\t\tcollateralParameters.collateralTokenIndex,\n\t\t\tcollateralParameters.gracePeriodInDays\n\t\t);\n\t}\n\n\tfunction unpackSimpleInterestParameters(\n\t\taddress termsContract,\n\t\tbytes32 termsContractParameters\n\t)\n\t\tpublic pure returns (SimpleInterestParameters)\n\t{\n\t\t// use simple interest terms contract interface to unpack simple interest terms\n\t\tSimpleInterestTermsContractInterface simpleInterestTermsContract = SimpleInterestTermsContractInterface(termsContract);\n\n\t\tvar (principalTokenIndex, principalAmount, interestRate, amortizationUnitType, termLengthInAmortizationUnits) =\n\t\t\tsimpleInterestTermsContract.unpackParametersFromBytes(termsContractParameters);\n\n\t\treturn SimpleInterestParameters({\n\t\t\tprincipalTokenIndex: principalTokenIndex,\n\t\t\tprincipalAmount: principalAmount,\n\t\t\tinterestRate: interestRate,\n\t\t\tamortizationUnitType: amortizationUnitType,\n\t\t\ttermLengthInAmortizationUnits: termLengthInAmortizationUnits\n\t\t});\n\t}\n\n\tfunction unpackCollateralParameters(\n\t\tbytes32 termsContractParameters\n\t)\n\t\tpublic view returns (CollateralParameters)\n\t{\n\t\tCollateralizerInterface collateralizer = CollateralizerInterface(contractRegistry.collateralizer());\n\n\t\tvar (collateralTokenIndex, collateralAmount, gracePeriodInDays) =\n\t\t\tcollateralizer.unpackCollateralParametersFromBytes(termsContractParameters);\n\n\t\treturn CollateralParameters({\n\t\t\tcollateralTokenIndex: collateralTokenIndex,\n\t\t\tcollateralAmount: collateralAmount,\n\t\t\tgracePeriodInDays: gracePeriodInDays\n\t\t});\n\t}\n\n\tfunction verifyPrices(\n\t\taddress priceFeedOperator,\n\t\tLTVDecisionEngineTypes.Price principalPrice,\n\t\tLTVDecisionEngineTypes.Price collateralPrice\n\t)\n\t\tinternal view returns (bool)\n\t{\n\t\tuint minPriceTimestamp = block.timestamp - MAX_PRICE_TTL_IN_SECONDS;\n\n\t\tif (principalPrice.timestamp < minPriceTimestamp ||\n\t\t\tcollateralPrice.timestamp < minPriceTimestamp) {\n\t\t\treturn false;\n\t\t}\n\n\t\tbytes32 principalPriceHash = keccak256(\n\t\t\tprincipalPrice.value,\n\t\t\tprincipalPrice.tokenAddress,\n\t\t\tprincipalPrice.timestamp\n\t\t);\n\n\t\tbytes32 collateralPriceHash = keccak256(\n\t\t\tcollateralPrice.value,\n\t\t\tcollateralPrice.tokenAddress,\n\t\t\tcollateralPrice.timestamp\n\t\t);\n\n\t\tbool principalPriceValid = isValidSignature(\n\t\t\tpriceFeedOperator,\n\t\t\tprincipalPriceHash,\n\t\t\tprincipalPrice.signature\n\t\t);\n\n\t\t// We return early if the principal price information was not signed correctly.\n\t\tif (!principalPriceValid) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn isValidSignature(\n\t\t\tpriceFeedOperator,\n\t\t\tcollateralPriceHash,\n\t\t\tcollateralPrice.signature\n\t\t);\n\t}\n\n\tfunction computeLTV(\n\t\tuint principalTokenPrice,\n\t\tuint collateralTokenPrice,\n\t\tuint principalAmount,\n\t\tuint collateralAmount\n\t)\n\t\tinternal constant returns (uint)\n\t{\n\t\tuint principalValue = principalTokenPrice.mul(principalAmount).mul(10 ** PRECISION);\n\t\tuint collateralValue = collateralTokenPrice.mul(collateralAmount);\n\n\t\treturn principalValue.div(collateralValue);\n\t}\n\n\tfunction isExpired(uint expirationTimestampInSec)\n\t\tinternal view returns (bool expired)\n\t{\n\t\treturn expirationTimestampInSec < block.timestamp;\n\t}\n}\n",
  "sourcePath": "/Users/graemeboy/Dharma/experimental/contracts/src/CreditorDrivenLoans/DecisionEngines/LTVDecisionEngine.sol",
  "ast": {
    "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/CreditorDrivenLoans/DecisionEngines/LTVDecisionEngine.sol",
    "exportedSymbols": {
      "LTVDecisionEngine": [
        437
      ]
    },
    "id": 438,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:0"
      },
      {
        "id": 2,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "25:33:0"
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "zeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 1305,
        "src": "85:55:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/CreditorDrivenLoans/DecisionEngines/libraries/LTVDecisionEngineTypes.sol",
        "file": "./libraries/LTVDecisionEngineTypes.sol",
        "id": 4,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 492,
        "src": "155:48:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/libraries/SignaturesLibrary.sol",
        "file": "../../shared/libraries/SignaturesLibrary.sol",
        "id": 5,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 1211,
        "src": "204:54:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/libraries/OrderLibrary.sol",
        "file": "../../shared/libraries/OrderLibrary.sol",
        "id": 6,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 1166,
        "src": "259:49:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/interfaces/ContractRegistryInterface.sol",
        "file": "../../shared/interfaces/ContractRegistryInterface.sol",
        "id": 7,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 798,
        "src": "324:63:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/interfaces/CollateralizerInterface.sol",
        "file": "../../shared/interfaces/CollateralizerInterface.sol",
        "id": 8,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 746,
        "src": "388:61:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/interfaces/SimpleInterestTermsContractInterface.sol",
        "file": "../../shared/interfaces/SimpleInterestTermsContractInterface.sol",
        "id": 9,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 966,
        "src": "450:74:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10,
              "name": "LTVDecisionEngineTypes",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 491,
              "src": "556:22:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_LTVDecisionEngineTypes_$491",
                "typeString": "contract LTVDecisionEngineTypes"
              }
            },
            "id": 11,
            "nodeType": "InheritanceSpecifier",
            "src": "556:22:0"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12,
              "name": "SignaturesLibrary",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1210,
              "src": "580:17:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignaturesLibrary_$1210",
                "typeString": "contract SignaturesLibrary"
              }
            },
            "id": 13,
            "nodeType": "InheritanceSpecifier",
            "src": "580:17:0"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 14,
              "name": "OrderLibrary",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1165,
              "src": "599:12:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OrderLibrary_$1165",
                "typeString": "contract OrderLibrary"
              }
            },
            "id": 15,
            "nodeType": "InheritanceSpecifier",
            "src": "599:12:0"
          }
        ],
        "contractDependencies": [
          491,
          1165,
          1210
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 437,
        "linearizedBaseContracts": [
          437,
          1165,
          1210,
          491
        ],
        "name": "LTVDecisionEngine",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 18,
            "libraryName": {
              "contractScope": null,
              "id": 16,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1304,
              "src": "621:8:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$1304",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "615:24:0",
            "typeName": {
              "id": 17,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "634:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 21,
            "name": "PRECISION",
            "nodeType": "VariableDeclaration",
            "scope": 437,
            "src": "642:34:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 19,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "642:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 20,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "675:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 24,
            "name": "MAX_PRICE_TTL_IN_SECONDS",
            "nodeType": "VariableDeclaration",
            "scope": 437,
            "src": "680:51:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 22,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "680:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "363030",
              "id": 23,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "728:3:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_600_by_1",
                "typeString": "int_const 600"
              },
              "value": "600"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 26,
            "name": "contractRegistry",
            "nodeType": "VariableDeclaration",
            "scope": 437,
            "src": "735:49:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ContractRegistryInterface_$797",
              "typeString": "contract ContractRegistryInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 25,
              "name": "ContractRegistryInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 797,
              "src": "735:25:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContractRegistryInterface_$797",
                "typeString": "contract ContractRegistryInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 37,
              "nodeType": "Block",
              "src": "849:80:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 35,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 31,
                      "name": "contractRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26,
                      "src": "859:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ContractRegistryInterface_$797",
                        "typeString": "contract ContractRegistryInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33,
                          "name": "_contractRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "904:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 32,
                        "name": "ContractRegistryInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 797,
                        "src": "878:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ContractRegistryInterface_$797_$",
                          "typeString": "type(contract ContractRegistryInterface)"
                        }
                      },
                      "id": 34,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "878:44:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ContractRegistryInterface_$797",
                        "typeString": "contract ContractRegistryInterface"
                      }
                    },
                    "src": "859:63:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ContractRegistryInterface_$797",
                      "typeString": "contract ContractRegistryInterface"
                    }
                  },
                  "id": 36,
                  "nodeType": "ExpressionStatement",
                  "src": "859:63:0"
                }
              ]
            },
            "documentation": null,
            "id": 38,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "LTVDecisionEngine",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 29,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 28,
                  "name": "_contractRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 38,
                  "src": "815:25:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "815:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "814:27:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 30,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "849:0:0"
            },
            "scope": 437,
            "src": "788:141:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 70,
              "nodeType": "Block",
              "src": "1026:484:0",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 55,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1106:100:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 48,
                            "name": "params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40,
                            "src": "1128:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                              "typeString": "struct LTVDecisionEngineTypes.Params memory"
                            }
                          },
                          "id": 49,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "creditor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 444,
                          "src": "1128:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 50,
                          "name": "commitmentHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42,
                          "src": "1148:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 51,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40,
                              "src": "1167:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                                "typeString": "struct LTVDecisionEngineTypes.Params memory"
                              }
                            },
                            "id": 52,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "creditorCommitment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 448,
                            "src": "1167:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CreditorCommitment_$469_memory",
                              "typeString": "struct LTVDecisionEngineTypes.CreditorCommitment memory"
                            }
                          },
                          "id": 53,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "signature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 468,
                          "src": "1167:35:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ECDSASignature_$1178_memory",
                            "typeString": "struct SignaturesLibrary.ECDSASignature memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_struct$_ECDSASignature_$1178_memory",
                            "typeString": "struct SignaturesLibrary.ECDSASignature memory"
                          }
                        ],
                        "id": 47,
                        "name": "isValidSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1209,
                        "src": "1107:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes32_$_t_struct$_ECDSASignature_$1178_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (address,bytes32,struct SignaturesLibrary.ECDSASignature memory) pure returns (bool)"
                        }
                      },
                      "id": 54,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1107:99:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 59,
                  "nodeType": "IfStatement",
                  "src": "1102:200:0",
                  "trueBody": {
                    "id": 58,
                    "nodeType": "Block",
                    "src": "1208:94:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 56,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1292:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 46,
                        "id": 57,
                        "nodeType": "Return",
                        "src": "1285:12:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 61,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40,
                              "src": "1418:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                                "typeString": "struct LTVDecisionEngineTypes.Params memory"
                              }
                            },
                            "id": 62,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "priceFeedOperator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 446,
                            "src": "1418:24:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 63,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40,
                              "src": "1448:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                                "typeString": "struct LTVDecisionEngineTypes.Params memory"
                              }
                            },
                            "id": 64,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "principalPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 450,
                            "src": "1448:21:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Price_$464_memory",
                              "typeString": "struct LTVDecisionEngineTypes.Price memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 65,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40,
                              "src": "1475:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                                "typeString": "struct LTVDecisionEngineTypes.Params memory"
                              }
                            },
                            "id": 66,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "collateralPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 452,
                            "src": "1475:22:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Price_$464_memory",
                              "typeString": "struct LTVDecisionEngineTypes.Price memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_struct$_Price_$464_memory",
                              "typeString": "struct LTVDecisionEngineTypes.Price memory"
                            },
                            {
                              "typeIdentifier": "t_struct$_Price_$464_memory",
                              "typeString": "struct LTVDecisionEngineTypes.Price memory"
                            }
                          ],
                          "id": 60,
                          "name": "verifyPrices",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 385,
                          "src": "1400:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_struct$_Price_$464_memory_ptr_$_t_struct$_Price_$464_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,struct LTVDecisionEngineTypes.Price memory,struct LTVDecisionEngineTypes.Price memory) view returns (bool)"
                          }
                        },
                        "id": 67,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1400:102:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 68,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1395:111:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 46,
                  "id": 69,
                  "nodeType": "Return",
                  "src": "1388:118:0"
                }
              ]
            },
            "documentation": null,
            "id": 71,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "evaluateConsent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 43,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40,
                  "name": "params",
                  "nodeType": "VariableDeclaration",
                  "scope": 71,
                  "src": "957:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.Params"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 39,
                    "name": "Params",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 455,
                    "src": "957:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Params_$455_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.Params"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42,
                  "name": "commitmentHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 71,
                  "src": "972:22:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 41,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "972:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "956:39:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 46,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 71,
                  "src": "1019:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 44,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1019:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1018:6:0"
            },
            "scope": 437,
            "src": "932:578:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 161,
              "nodeType": "Block",
              "src": "1696:744:0",
              "statements": [
                {
                  "assignments": [
                    81
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 81,
                      "name": "principalTokenPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "1700:55:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 80,
                        "name": "LTVDecisionEngineTypes.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 464,
                        "src": "1700:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$464_storage_ptr",
                          "typeString": "struct LTVDecisionEngineTypes.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 84,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 82,
                      "name": "params",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 73,
                      "src": "1758:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.Params memory"
                      }
                    },
                    "id": 83,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "principalPrice",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 450,
                    "src": "1758:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$464_memory",
                      "typeString": "struct LTVDecisionEngineTypes.Price memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1700:79:0"
                },
                {
                  "assignments": [
                    88
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 88,
                      "name": "collateralTokenPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "1783:56:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 87,
                        "name": "LTVDecisionEngineTypes.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 464,
                        "src": "1783:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$464_storage_ptr",
                          "typeString": "struct LTVDecisionEngineTypes.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 91,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 89,
                      "name": "params",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 73,
                      "src": "1842:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.Params memory"
                      }
                    },
                    "id": 90,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "collateralPrice",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 452,
                    "src": "1842:22:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$464_memory",
                      "typeString": "struct LTVDecisionEngineTypes.Price memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1783:81:0"
                },
                {
                  "assignments": [
                    93
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 93,
                      "name": "maxLTV",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "1869:11:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 92,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1869:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 98,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 94,
                          "name": "params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 73,
                          "src": "1883:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Params memory"
                          }
                        },
                        "id": 95,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditorCommitment",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 448,
                        "src": "1883:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CreditorCommitment_$469_memory",
                          "typeString": "struct LTVDecisionEngineTypes.CreditorCommitment memory"
                        }
                      },
                      "id": 96,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 466,
                      "src": "1883:32:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CommitmentValues_$472_memory",
                        "typeString": "struct LTVDecisionEngineTypes.CommitmentValues memory"
                      }
                    },
                    "id": 97,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "maxLTV",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 471,
                    "src": "1883:39:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1869:53:0"
                },
                {
                  "assignments": [
                    102
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 102,
                      "name": "order",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "1926:35:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                        "typeString": "struct OrderLibrary.DebtOrder"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 101,
                        "name": "OrderLibrary.DebtOrder",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1069,
                        "src": "1926:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DebtOrder_$1069_storage_ptr",
                          "typeString": "struct OrderLibrary.DebtOrder"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 105,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 103,
                      "name": "params",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 73,
                      "src": "1964:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.Params memory"
                      }
                    },
                    "id": 104,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "order",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 454,
                    "src": "1964:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DebtOrder_$1069_memory",
                      "typeString": "struct OrderLibrary.DebtOrder memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1926:50:0"
                },
                {
                  "assignments": [
                    107
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 107,
                      "name": "collateralValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "1981:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 106,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1981:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 110,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 108,
                      "name": "collateralTokenPrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 88,
                      "src": "2004:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.Price memory"
                      }
                    },
                    "id": 109,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 457,
                    "src": "2004:26:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1981:49:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 112,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 102,
                          "src": "2049:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 113,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "expirationTimestampInSec",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1060,
                        "src": "2049:30:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 111,
                      "name": "isExpired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 436,
                      "src": "2039:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256) view returns (bool)"
                      }
                    },
                    "id": 114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2039:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 118,
                  "nodeType": "IfStatement",
                  "src": "2035:69:0",
                  "trueBody": {
                    "id": 117,
                    "nodeType": "Block",
                    "src": "2082:22:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2094:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 77,
                        "id": 116,
                        "nodeType": "Return",
                        "src": "2087:12:0"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 119,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 102,
                          "src": "2112:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 120,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "collateralAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1034,
                        "src": "2112:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 121,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2138:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "2112:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 125,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 123,
                        "name": "collateralValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 107,
                        "src": "2143:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2162:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "2143:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2112:51:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 130,
                  "nodeType": "IfStatement",
                  "src": "2108:79:0",
                  "trueBody": {
                    "id": 129,
                    "nodeType": "Block",
                    "src": "2165:22:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2177:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 77,
                        "id": 128,
                        "nodeType": "Return",
                        "src": "2170:12:0"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    132
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 132,
                      "name": "ltv",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "2191:8:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 131,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2191:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 143,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 134,
                          "name": "principalTokenPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 81,
                          "src": "2217:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 135,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 457,
                        "src": "2217:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 136,
                          "name": "collateralTokenPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 88,
                          "src": "2247:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 137,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 457,
                        "src": "2247:26:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 138,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 102,
                          "src": "2278:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 139,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "principalAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1030,
                        "src": "2278:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 140,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 102,
                          "src": "2304:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 141,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "collateralAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1034,
                        "src": "2304:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 133,
                      "name": "computeLTV",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 423,
                      "src": "2202:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256)"
                      }
                    },
                    "id": 142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2202:128:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2191:139:0"
                },
                {
                  "assignments": [
                    145
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 145,
                      "name": "maxLTVWithPrecision",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "2335:24:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 144,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2335:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 156,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 154,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "3130",
                          "id": 148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2373:2:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2394:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 149,
                                  "name": "PRECISION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21,
                                  "src": "2380:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1279,
                                "src": "2380:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2380:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 153,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2379:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2373:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 146,
                        "name": "maxLTV",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 93,
                        "src": "2362:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 147,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1245,
                      "src": "2362:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 155,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2362:36:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2335:63:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 157,
                      "name": "ltv",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 132,
                      "src": "2410:3:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 158,
                      "name": "maxLTVWithPrecision",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 145,
                      "src": "2417:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2410:26:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 77,
                  "id": 160,
                  "nodeType": "Return",
                  "src": "2403:33:0"
                }
              ]
            },
            "documentation": null,
            "id": 162,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "evaluateDecision",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 74,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 73,
                  "name": "params",
                  "nodeType": "VariableDeclaration",
                  "scope": 162,
                  "src": "1635:20:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.Params"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 72,
                    "name": "Params",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 455,
                    "src": "1635:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Params_$455_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.Params"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1634:22:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 77,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 76,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 162,
                  "src": "1680:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 75,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1680:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1679:15:0"
            },
            "scope": 437,
            "src": "1609:831:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 204,
              "nodeType": "Block",
              "src": "2580:515:0",
              "statements": [
                {
                  "assignments": [
                    172
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 172,
                      "name": "termsContractCommitmentHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 205,
                      "src": "2584:35:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 171,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2584:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 179,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 174,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2656:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 175,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "termsContract",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1056,
                        "src": "2656:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 176,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2677:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 177,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "termsContractParameters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1058,
                        "src": "2677:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 173,
                      "name": "getTermsContractCommitmentHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 245,
                      "src": "2625:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (address,bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2625:82:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2584:123:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 181,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2752:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 182,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1042,
                        "src": "2752:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 183,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2771:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 184,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "kernelVersion",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1026,
                        "src": "2771:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 185,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2795:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 186,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "issuanceVersion",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1028,
                        "src": "2795:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 187,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2821:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 188,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "termsContract",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1056,
                        "src": "2821:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 189,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2845:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 190,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "principalToken",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1032,
                        "src": "2845:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 191,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2870:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 192,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "salt",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1062,
                        "src": "2870:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 193,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2885:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 194,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "principalAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1030,
                        "src": "2885:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 195,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2911:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 196,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditorFee",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1044,
                        "src": "2911:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 197,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2933:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 198,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "expirationTimestampInSec",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1060,
                        "src": "2933:30:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 199,
                          "name": "commitmentValues",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 164,
                          "src": "2992:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CommitmentValues_$472_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.CommitmentValues memory"
                          }
                        },
                        "id": 200,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "maxLTV",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 471,
                        "src": "2992:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 201,
                        "name": "termsContractCommitmentHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 172,
                        "src": "3060:27:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 180,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1313,
                      "src": "2719:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2719:372:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 170,
                  "id": 203,
                  "nodeType": "Return",
                  "src": "2712:379:0"
                }
              ]
            },
            "documentation": null,
            "id": 205,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hashCreditorCommitmentForOrder",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 167,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 164,
                  "name": "commitmentValues",
                  "nodeType": "VariableDeclaration",
                  "scope": 205,
                  "src": "2483:33:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CommitmentValues_$472_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.CommitmentValues"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 163,
                    "name": "CommitmentValues",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 472,
                    "src": "2483:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CommitmentValues_$472_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.CommitmentValues"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 166,
                  "name": "order",
                  "nodeType": "VariableDeclaration",
                  "scope": 205,
                  "src": "2518:28:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                    "typeString": "struct OrderLibrary.DebtOrder"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 165,
                    "name": "OrderLibrary.DebtOrder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1069,
                    "src": "2518:22:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DebtOrder_$1069_storage_ptr",
                      "typeString": "struct OrderLibrary.DebtOrder"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2482:65:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 170,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 169,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 205,
                  "src": "2570:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 168,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2570:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2569:9:0"
            },
            "scope": 437,
            "src": "2443:652:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 244,
              "nodeType": "Block",
              "src": "3231:648:0",
              "statements": [
                {
                  "assignments": [
                    215
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 215,
                      "name": "simpleInterestParameters",
                      "nodeType": "VariableDeclaration",
                      "scope": 245,
                      "src": "3235:56:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 214,
                        "name": "SimpleInterestParameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 483,
                        "src": "3235:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_storage_ptr",
                          "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 220,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 217,
                        "name": "termsContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 207,
                        "src": "3328:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 218,
                        "name": "termsContractParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 209,
                        "src": "3343:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 216,
                      "name": "unpackSimpleInterestParameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 279,
                      "src": "3297:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes32_$returns$_t_struct$_SimpleInterestParameters_$483_memory_ptr_$",
                        "typeString": "function (address,bytes32) pure returns (struct LTVDecisionEngineTypes.SimpleInterestParameters memory)"
                      }
                    },
                    "id": 219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3297:70:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3235:132:0"
                },
                {
                  "assignments": [
                    222
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 222,
                      "name": "collateralParameters",
                      "nodeType": "VariableDeclaration",
                      "scope": 245,
                      "src": "3372:48:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CollateralParameters_$490_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.CollateralParameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 221,
                        "name": "CollateralParameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 490,
                        "src": "3372:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CollateralParameters_$490_storage_ptr",
                          "typeString": "struct LTVDecisionEngineTypes.CollateralParameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 226,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 224,
                        "name": "termsContractParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 209,
                        "src": "3453:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 223,
                      "name": "unpackCollateralParameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 309,
                      "src": "3426:26:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_CollateralParameters_$490_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct LTVDecisionEngineTypes.CollateralParameters memory)"
                      }
                    },
                    "id": 225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3426:51:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CollateralParameters_$490_memory_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.CollateralParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3372:105:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 228,
                          "name": "simpleInterestParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 215,
                          "src": "3542:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                          }
                        },
                        "id": 229,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "principalTokenIndex",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 474,
                        "src": "3542:44:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 230,
                          "name": "simpleInterestParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 215,
                          "src": "3591:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                          }
                        },
                        "id": 231,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "principalAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 476,
                        "src": "3591:40:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 232,
                          "name": "simpleInterestParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 215,
                          "src": "3636:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                          }
                        },
                        "id": 233,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "interestRate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 478,
                        "src": "3636:37:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 234,
                          "name": "simpleInterestParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 215,
                          "src": "3678:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                          }
                        },
                        "id": 235,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amortizationUnitType",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 480,
                        "src": "3678:45:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 236,
                          "name": "simpleInterestParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 215,
                          "src": "3728:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                          }
                        },
                        "id": 237,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "termLengthInAmortizationUnits",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 482,
                        "src": "3728:54:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 238,
                          "name": "collateralParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 222,
                          "src": "3787:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CollateralParameters_$490_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.CollateralParameters memory"
                          }
                        },
                        "id": 239,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "collateralTokenIndex",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 485,
                        "src": "3787:41:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 240,
                          "name": "collateralParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 222,
                          "src": "3833:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CollateralParameters_$490_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.CollateralParameters memory"
                          }
                        },
                        "id": 241,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "gracePeriodInDays",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 489,
                        "src": "3833:38:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 227,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1313,
                      "src": "3489:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3489:386:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 213,
                  "id": 243,
                  "nodeType": "Return",
                  "src": "3482:393:0"
                }
              ]
            },
            "documentation": null,
            "id": 245,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTermsContractCommitmentHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 207,
                  "name": "termsContract",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3141:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 206,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3141:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 209,
                  "name": "termsContractParameters",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3166:31:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 208,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3166:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3137:63:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 213,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 212,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3222:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 211,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3222:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3221:9:0"
            },
            "scope": 437,
            "src": "3098:781:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 278,
              "nodeType": "Block",
              "src": "4035:673:0",
              "statements": [
                {
                  "assignments": [
                    255
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 255,
                      "name": "simpleInterestTermsContract",
                      "nodeType": "VariableDeclaration",
                      "scope": 279,
                      "src": "4121:64:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SimpleInterestTermsContractInterface_$965",
                        "typeString": "contract SimpleInterestTermsContractInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 254,
                        "name": "SimpleInterestTermsContractInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 965,
                        "src": "4121:36:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_SimpleInterestTermsContractInterface_$965",
                          "typeString": "contract SimpleInterestTermsContractInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 259,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 257,
                        "name": "termsContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 247,
                        "src": "4225:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 256,
                      "name": "SimpleInterestTermsContractInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 965,
                      "src": "4188:36:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_SimpleInterestTermsContractInterface_$965_$",
                        "typeString": "type(contract SimpleInterestTermsContractInterface)"
                      }
                    },
                    "id": 258,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4188:51:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SimpleInterestTermsContractInterface_$965",
                      "typeString": "contract SimpleInterestTermsContractInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4121:118:0"
                },
                {
                  "assignments": [
                    260,
                    261,
                    262,
                    263,
                    264
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 260,
                      "name": "principalTokenIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 279,
                      "src": "4249:19:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 261,
                      "name": "principalAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 279,
                      "src": "4270:15:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 262,
                      "name": "interestRate",
                      "nodeType": "VariableDeclaration",
                      "scope": 279,
                      "src": "4287:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 263,
                      "name": "amortizationUnitType",
                      "nodeType": "VariableDeclaration",
                      "scope": 279,
                      "src": "4301:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 264,
                      "name": "termLengthInAmortizationUnits",
                      "nodeType": "VariableDeclaration",
                      "scope": 279,
                      "src": "4323:29:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 269,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 267,
                        "name": "termsContractParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 249,
                        "src": "4413:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 265,
                        "name": "simpleInterestTermsContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 255,
                        "src": "4359:27:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_SimpleInterestTermsContractInterface_$965",
                          "typeString": "contract SimpleInterestTermsContractInterface"
                        }
                      },
                      "id": 266,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unpackParametersFromBytes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 964,
                      "src": "4359:53:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_bytes32_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (bytes32) pure external returns (uint256,uint256,uint256,uint256,uint256)"
                      }
                    },
                    "id": 268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4359:78:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4244:193:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 271,
                        "name": "principalTokenIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 260,
                        "src": "4500:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 272,
                        "name": "principalAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 261,
                        "src": "4541:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 273,
                        "name": "interestRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 262,
                        "src": "4575:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 274,
                        "name": "amortizationUnitType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 263,
                        "src": "4614:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 275,
                        "name": "termLengthInAmortizationUnits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 264,
                        "src": "4670:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": null,
                      "id": 270,
                      "name": "SimpleInterestParameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 483,
                      "src": "4449:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_SimpleInterestParameters_$483_storage_ptr_$",
                        "typeString": "type(struct LTVDecisionEngineTypes.SimpleInterestParameters storage pointer)"
                      }
                    },
                    "id": 276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "principalTokenIndex",
                      "principalAmount",
                      "interestRate",
                      "amortizationUnitType",
                      "termLengthInAmortizationUnits"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "4449:255:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory",
                      "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                    }
                  },
                  "functionReturnParameters": 253,
                  "id": 277,
                  "nodeType": "Return",
                  "src": "4442:262:0"
                }
              ]
            },
            "documentation": null,
            "id": 279,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "unpackSimpleInterestParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 250,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 247,
                  "name": "termsContract",
                  "nodeType": "VariableDeclaration",
                  "scope": 279,
                  "src": "3925:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 246,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3925:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 249,
                  "name": "termsContractParameters",
                  "nodeType": "VariableDeclaration",
                  "scope": 279,
                  "src": "3950:31:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 248,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3950:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3921:63:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 253,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 252,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 279,
                  "src": "4008:24:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 251,
                    "name": "SimpleInterestParameters",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 483,
                    "src": "4008:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4007:26:0"
            },
            "scope": 437,
            "src": "3882:826:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 308,
              "nodeType": "Block",
              "src": "4831:421:0",
              "statements": [
                {
                  "assignments": [
                    287
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 287,
                      "name": "collateralizer",
                      "nodeType": "VariableDeclaration",
                      "scope": 309,
                      "src": "4835:38:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CollateralizerInterface_$745",
                        "typeString": "contract CollateralizerInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 286,
                        "name": "CollateralizerInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 745,
                        "src": "4835:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CollateralizerInterface_$745",
                          "typeString": "contract CollateralizerInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 293,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 289,
                            "name": "contractRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26,
                            "src": "4900:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ContractRegistryInterface_$797",
                              "typeString": "contract ContractRegistryInterface"
                            }
                          },
                          "id": 290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "collateralizer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 754,
                          "src": "4900:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_CollateralizerInterface_$745_$",
                            "typeString": "function () view external returns (contract CollateralizerInterface)"
                          }
                        },
                        "id": 291,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4900:33:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CollateralizerInterface_$745",
                          "typeString": "contract CollateralizerInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_CollateralizerInterface_$745",
                          "typeString": "contract CollateralizerInterface"
                        }
                      ],
                      "id": 288,
                      "name": "CollateralizerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 745,
                      "src": "4876:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_CollateralizerInterface_$745_$",
                        "typeString": "type(contract CollateralizerInterface)"
                      }
                    },
                    "id": 292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4876:58:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CollateralizerInterface_$745",
                      "typeString": "contract CollateralizerInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4835:99:0"
                },
                {
                  "assignments": [
                    294,
                    295,
                    296
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 294,
                      "name": "collateralTokenIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 309,
                      "src": "4944:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 295,
                      "name": "collateralAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 309,
                      "src": "4966:16:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 296,
                      "name": "gracePeriodInDays",
                      "nodeType": "VariableDeclaration",
                      "scope": 309,
                      "src": "4984:17:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 301,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 299,
                        "name": "termsContractParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 281,
                        "src": "5059:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 297,
                        "name": "collateralizer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 287,
                        "src": "5008:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CollateralizerInterface_$745",
                          "typeString": "contract CollateralizerInterface"
                        }
                      },
                      "id": 298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unpackCollateralParametersFromBytes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 744,
                      "src": "5008:50:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_bytes32_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (bytes32) pure external returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 300,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5008:75:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4939:144:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 303,
                        "name": "collateralTokenIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 294,
                        "src": "5143:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 304,
                        "name": "collateralAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 295,
                        "src": "5186:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 305,
                        "name": "gracePeriodInDays",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 296,
                        "src": "5226:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": null,
                      "id": 302,
                      "name": "CollateralParameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 490,
                      "src": "5095:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_CollateralParameters_$490_storage_ptr_$",
                        "typeString": "type(struct LTVDecisionEngineTypes.CollateralParameters storage pointer)"
                      }
                    },
                    "id": 306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "collateralTokenIndex",
                      "collateralAmount",
                      "gracePeriodInDays"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "5095:153:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CollateralParameters_$490_memory",
                      "typeString": "struct LTVDecisionEngineTypes.CollateralParameters memory"
                    }
                  },
                  "functionReturnParameters": 285,
                  "id": 307,
                  "nodeType": "Return",
                  "src": "5088:160:0"
                }
              ]
            },
            "documentation": null,
            "id": 309,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "unpackCollateralParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 281,
                  "name": "termsContractParameters",
                  "nodeType": "VariableDeclaration",
                  "scope": 309,
                  "src": "4750:31:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 280,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4750:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4746:38:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 285,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 284,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 309,
                  "src": "4808:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CollateralParameters_$490_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.CollateralParameters"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 283,
                    "name": "CollateralParameters",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 490,
                    "src": "4808:20:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CollateralParameters_$490_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.CollateralParameters"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4807:22:0"
            },
            "scope": 437,
            "src": "4711:541:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 384,
              "nodeType": "Block",
              "src": "5436:841:0",
              "statements": [
                {
                  "assignments": [
                    321
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 321,
                      "name": "minPriceTimestamp",
                      "nodeType": "VariableDeclaration",
                      "scope": 385,
                      "src": "5440:22:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 320,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5440:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 326,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 322,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1309,
                        "src": "5465:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 323,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5465:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 324,
                      "name": "MAX_PRICE_TTL_IN_SECONDS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24,
                      "src": "5483:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5465:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5440:67:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 330,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 327,
                          "name": "principalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 313,
                          "src": "5516:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 328,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 459,
                        "src": "5516:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 329,
                        "name": "minPriceTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 321,
                        "src": "5543:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5516:44:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 334,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 331,
                          "name": "collateralPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 315,
                          "src": "5567:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 332,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 459,
                        "src": "5567:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 333,
                        "name": "minPriceTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 321,
                        "src": "5595:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5567:45:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "5516:96:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 339,
                  "nodeType": "IfStatement",
                  "src": "5512:124:0",
                  "trueBody": {
                    "id": 338,
                    "nodeType": "Block",
                    "src": "5614:22:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5626:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 319,
                        "id": 337,
                        "nodeType": "Return",
                        "src": "5619:12:0"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    341
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 341,
                      "name": "principalPriceHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 385,
                      "src": "5640:26:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 340,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5640:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 350,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 343,
                          "name": "principalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 313,
                          "src": "5683:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 344,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 457,
                        "src": "5683:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 345,
                          "name": "principalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 313,
                          "src": "5708:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 346,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tokenAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 461,
                        "src": "5708:27:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 347,
                          "name": "principalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 313,
                          "src": "5740:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 348,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 459,
                        "src": "5740:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 342,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1313,
                      "src": "5669:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5669:99:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5640:128:0"
                },
                {
                  "assignments": [
                    352
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 352,
                      "name": "collateralPriceHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 385,
                      "src": "5773:27:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 351,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5773:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 361,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 354,
                          "name": "collateralPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 315,
                          "src": "5817:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 355,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 457,
                        "src": "5817:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 356,
                          "name": "collateralPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 315,
                          "src": "5843:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 357,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tokenAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 461,
                        "src": "5843:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 358,
                          "name": "collateralPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 315,
                          "src": "5876:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 359,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 459,
                        "src": "5876:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 353,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1313,
                      "src": "5803:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5803:102:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5773:132:0"
                },
                {
                  "assignments": [
                    363
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 363,
                      "name": "principalPriceValid",
                      "nodeType": "VariableDeclaration",
                      "scope": 385,
                      "src": "5910:24:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 362,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5910:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 370,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 365,
                        "name": "priceFeedOperator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 311,
                        "src": "5958:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 366,
                        "name": "principalPriceHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 341,
                        "src": "5980:18:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 367,
                          "name": "principalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 313,
                          "src": "6003:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 368,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signature",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 463,
                        "src": "6003:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ECDSASignature_$1178_memory",
                          "typeString": "struct SignaturesLibrary.ECDSASignature memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_ECDSASignature_$1178_memory",
                          "typeString": "struct SignaturesLibrary.ECDSASignature memory"
                        }
                      ],
                      "id": 364,
                      "name": "isValidSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1209,
                      "src": "5937:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes32_$_t_struct$_ECDSASignature_$1178_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes32,struct SignaturesLibrary.ECDSASignature memory) pure returns (bool)"
                      }
                    },
                    "id": 369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5937:94:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5910:121:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "6122:20:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 371,
                      "name": "principalPriceValid",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 363,
                      "src": "6123:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 376,
                  "nodeType": "IfStatement",
                  "src": "6118:48:0",
                  "trueBody": {
                    "id": 375,
                    "nodeType": "Block",
                    "src": "6144:22:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6156:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 319,
                        "id": 374,
                        "nodeType": "Return",
                        "src": "6149:12:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 378,
                        "name": "priceFeedOperator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 311,
                        "src": "6198:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 379,
                        "name": "collateralPriceHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 352,
                        "src": "6220:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 380,
                          "name": "collateralPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 315,
                          "src": "6244:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 381,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signature",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 463,
                        "src": "6244:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ECDSASignature_$1178_memory",
                          "typeString": "struct SignaturesLibrary.ECDSASignature memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_ECDSASignature_$1178_memory",
                          "typeString": "struct SignaturesLibrary.ECDSASignature memory"
                        }
                      ],
                      "id": 377,
                      "name": "isValidSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1209,
                      "src": "6177:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes32_$_t_struct$_ECDSASignature_$1178_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes32,struct SignaturesLibrary.ECDSASignature memory) pure returns (bool)"
                      }
                    },
                    "id": 382,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6177:96:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 319,
                  "id": 383,
                  "nodeType": "Return",
                  "src": "6170:103:0"
                }
              ]
            },
            "documentation": null,
            "id": 385,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "verifyPrices",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 316,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 311,
                  "name": "priceFeedOperator",
                  "nodeType": "VariableDeclaration",
                  "scope": 385,
                  "src": "5280:25:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 310,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5280:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 313,
                  "name": "principalPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 385,
                  "src": "5309:43:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 312,
                    "name": "LTVDecisionEngineTypes.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 464,
                    "src": "5309:28:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$464_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 315,
                  "name": "collateralPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 385,
                  "src": "5356:44:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 314,
                    "name": "LTVDecisionEngineTypes.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 464,
                    "src": "5356:28:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$464_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5276:127:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 318,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 385,
                  "src": "5429:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 317,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5429:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5428:6:0"
            },
            "scope": 437,
            "src": "5255:1022:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 422,
              "nodeType": "Block",
              "src": "6445:207:0",
              "statements": [
                {
                  "assignments": [
                    399
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 399,
                      "name": "principalValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 423,
                      "src": "6449:19:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 398,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6449:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 409,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "3130",
                          "id": 405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6516:2:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 406,
                          "name": "PRECISION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21,
                          "src": "6522:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6516:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 402,
                            "name": "principalAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 391,
                            "src": "6495:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 400,
                            "name": "principalTokenPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 387,
                            "src": "6471:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1245,
                          "src": "6471:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6471:40:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1245,
                      "src": "6471:44:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 408,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6471:61:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6449:83:0"
                },
                {
                  "assignments": [
                    411
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 411,
                      "name": "collateralValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 423,
                      "src": "6536:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 410,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6536:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 416,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 414,
                        "name": "collateralAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 393,
                        "src": "6584:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 412,
                        "name": "collateralTokenPrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 389,
                        "src": "6559:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 413,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1245,
                      "src": "6559:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 415,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6559:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6536:65:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 419,
                        "name": "collateralValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 411,
                        "src": "6632:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 417,
                        "name": "principalValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 399,
                        "src": "6613:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 418,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1259,
                      "src": "6613:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6613:35:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 397,
                  "id": 421,
                  "nodeType": "Return",
                  "src": "6606:42:0"
                }
              ]
            },
            "documentation": null,
            "id": 423,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "computeLTV",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 394,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 387,
                  "name": "principalTokenPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 423,
                  "src": "6303:24:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 386,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6303:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 389,
                  "name": "collateralTokenPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 423,
                  "src": "6331:25:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 388,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6331:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 391,
                  "name": "principalAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 423,
                  "src": "6360:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 390,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6360:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 393,
                  "name": "collateralAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 423,
                  "src": "6384:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 392,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6384:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6299:109:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 396,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 423,
                  "src": "6438:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 395,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6438:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6437:6:0"
            },
            "scope": 437,
            "src": "6280:372:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 435,
              "nodeType": "Block",
              "src": "6745:57:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 430,
                      "name": "expirationTimestampInSec",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 425,
                      "src": "6756:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 431,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1309,
                        "src": "6783:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6783:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6756:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 429,
                  "id": 434,
                  "nodeType": "Return",
                  "src": "6749:49:0"
                }
              ]
            },
            "documentation": null,
            "id": 436,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isExpired",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 425,
                  "name": "expirationTimestampInSec",
                  "nodeType": "VariableDeclaration",
                  "scope": 436,
                  "src": "6674:29:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 424,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6674:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6673:31:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 429,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 428,
                  "name": "expired",
                  "nodeType": "VariableDeclaration",
                  "scope": 436,
                  "src": "6730:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 427,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6730:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6729:14:0"
            },
            "scope": 437,
            "src": "6655:147:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 438,
        "src": "526:6278:0"
      }
    ],
    "src": "0:6805:0"
  },
  "legacyAST": {
    "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/CreditorDrivenLoans/DecisionEngines/LTVDecisionEngine.sol",
    "exportedSymbols": {
      "LTVDecisionEngine": [
        437
      ]
    },
    "id": 438,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:0"
      },
      {
        "id": 2,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "25:33:0"
      },
      {
        "absolutePath": "zeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "zeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 1305,
        "src": "85:55:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/CreditorDrivenLoans/DecisionEngines/libraries/LTVDecisionEngineTypes.sol",
        "file": "./libraries/LTVDecisionEngineTypes.sol",
        "id": 4,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 492,
        "src": "155:48:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/libraries/SignaturesLibrary.sol",
        "file": "../../shared/libraries/SignaturesLibrary.sol",
        "id": 5,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 1211,
        "src": "204:54:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/libraries/OrderLibrary.sol",
        "file": "../../shared/libraries/OrderLibrary.sol",
        "id": 6,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 1166,
        "src": "259:49:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/interfaces/ContractRegistryInterface.sol",
        "file": "../../shared/interfaces/ContractRegistryInterface.sol",
        "id": 7,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 798,
        "src": "324:63:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/interfaces/CollateralizerInterface.sol",
        "file": "../../shared/interfaces/CollateralizerInterface.sol",
        "id": 8,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 746,
        "src": "388:61:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/graemeboy/Dharma/experimental/contracts/src/shared/interfaces/SimpleInterestTermsContractInterface.sol",
        "file": "../../shared/interfaces/SimpleInterestTermsContractInterface.sol",
        "id": 9,
        "nodeType": "ImportDirective",
        "scope": 438,
        "sourceUnit": 966,
        "src": "450:74:0",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 10,
              "name": "LTVDecisionEngineTypes",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 491,
              "src": "556:22:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_LTVDecisionEngineTypes_$491",
                "typeString": "contract LTVDecisionEngineTypes"
              }
            },
            "id": 11,
            "nodeType": "InheritanceSpecifier",
            "src": "556:22:0"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 12,
              "name": "SignaturesLibrary",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1210,
              "src": "580:17:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SignaturesLibrary_$1210",
                "typeString": "contract SignaturesLibrary"
              }
            },
            "id": 13,
            "nodeType": "InheritanceSpecifier",
            "src": "580:17:0"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 14,
              "name": "OrderLibrary",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1165,
              "src": "599:12:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_OrderLibrary_$1165",
                "typeString": "contract OrderLibrary"
              }
            },
            "id": 15,
            "nodeType": "InheritanceSpecifier",
            "src": "599:12:0"
          }
        ],
        "contractDependencies": [
          491,
          1165,
          1210
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 437,
        "linearizedBaseContracts": [
          437,
          1165,
          1210,
          491
        ],
        "name": "LTVDecisionEngine",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 18,
            "libraryName": {
              "contractScope": null,
              "id": 16,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1304,
              "src": "621:8:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$1304",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "615:24:0",
            "typeName": {
              "id": 17,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "634:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": true,
            "id": 21,
            "name": "PRECISION",
            "nodeType": "VariableDeclaration",
            "scope": 437,
            "src": "642:34:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 19,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "642:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "34",
              "id": 20,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "675:1:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_4_by_1",
                "typeString": "int_const 4"
              },
              "value": "4"
            },
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 24,
            "name": "MAX_PRICE_TTL_IN_SECONDS",
            "nodeType": "VariableDeclaration",
            "scope": 437,
            "src": "680:51:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 22,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "680:4:0",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "363030",
              "id": 23,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "728:3:0",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_600_by_1",
                "typeString": "int_const 600"
              },
              "value": "600"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 26,
            "name": "contractRegistry",
            "nodeType": "VariableDeclaration",
            "scope": 437,
            "src": "735:49:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_ContractRegistryInterface_$797",
              "typeString": "contract ContractRegistryInterface"
            },
            "typeName": {
              "contractScope": null,
              "id": 25,
              "name": "ContractRegistryInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 797,
              "src": "735:25:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ContractRegistryInterface_$797",
                "typeString": "contract ContractRegistryInterface"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 37,
              "nodeType": "Block",
              "src": "849:80:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 35,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 31,
                      "name": "contractRegistry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 26,
                      "src": "859:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ContractRegistryInterface_$797",
                        "typeString": "contract ContractRegistryInterface"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 33,
                          "name": "_contractRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "904:17:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 32,
                        "name": "ContractRegistryInterface",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 797,
                        "src": "878:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_ContractRegistryInterface_$797_$",
                          "typeString": "type(contract ContractRegistryInterface)"
                        }
                      },
                      "id": 34,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "878:44:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ContractRegistryInterface_$797",
                        "typeString": "contract ContractRegistryInterface"
                      }
                    },
                    "src": "859:63:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ContractRegistryInterface_$797",
                      "typeString": "contract ContractRegistryInterface"
                    }
                  },
                  "id": 36,
                  "nodeType": "ExpressionStatement",
                  "src": "859:63:0"
                }
              ]
            },
            "documentation": null,
            "id": 38,
            "implemented": true,
            "isConstructor": true,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "LTVDecisionEngine",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 29,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 28,
                  "name": "_contractRegistry",
                  "nodeType": "VariableDeclaration",
                  "scope": 38,
                  "src": "815:25:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 27,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "815:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "814:27:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 30,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "849:0:0"
            },
            "scope": 437,
            "src": "788:141:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 70,
              "nodeType": "Block",
              "src": "1026:484:0",
              "statements": [
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 55,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "1106:100:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 48,
                            "name": "params",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 40,
                            "src": "1128:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                              "typeString": "struct LTVDecisionEngineTypes.Params memory"
                            }
                          },
                          "id": 49,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "creditor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 444,
                          "src": "1128:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 50,
                          "name": "commitmentHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 42,
                          "src": "1148:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 51,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40,
                              "src": "1167:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                                "typeString": "struct LTVDecisionEngineTypes.Params memory"
                              }
                            },
                            "id": 52,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "creditorCommitment",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 448,
                            "src": "1167:25:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CreditorCommitment_$469_memory",
                              "typeString": "struct LTVDecisionEngineTypes.CreditorCommitment memory"
                            }
                          },
                          "id": 53,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "signature",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 468,
                          "src": "1167:35:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ECDSASignature_$1178_memory",
                            "typeString": "struct SignaturesLibrary.ECDSASignature memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_struct$_ECDSASignature_$1178_memory",
                            "typeString": "struct SignaturesLibrary.ECDSASignature memory"
                          }
                        ],
                        "id": 47,
                        "name": "isValidSignature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1209,
                        "src": "1107:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes32_$_t_struct$_ECDSASignature_$1178_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (address,bytes32,struct SignaturesLibrary.ECDSASignature memory) pure returns (bool)"
                        }
                      },
                      "id": 54,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1107:99:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 59,
                  "nodeType": "IfStatement",
                  "src": "1102:200:0",
                  "trueBody": {
                    "id": 58,
                    "nodeType": "Block",
                    "src": "1208:94:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 56,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1292:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 46,
                        "id": 57,
                        "nodeType": "Return",
                        "src": "1285:12:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 61,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40,
                              "src": "1418:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                                "typeString": "struct LTVDecisionEngineTypes.Params memory"
                              }
                            },
                            "id": 62,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "priceFeedOperator",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 446,
                            "src": "1418:24:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 63,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40,
                              "src": "1448:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                                "typeString": "struct LTVDecisionEngineTypes.Params memory"
                              }
                            },
                            "id": 64,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "principalPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 450,
                            "src": "1448:21:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Price_$464_memory",
                              "typeString": "struct LTVDecisionEngineTypes.Price memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 65,
                              "name": "params",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 40,
                              "src": "1475:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                                "typeString": "struct LTVDecisionEngineTypes.Params memory"
                              }
                            },
                            "id": 66,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "collateralPrice",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 452,
                            "src": "1475:22:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Price_$464_memory",
                              "typeString": "struct LTVDecisionEngineTypes.Price memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_struct$_Price_$464_memory",
                              "typeString": "struct LTVDecisionEngineTypes.Price memory"
                            },
                            {
                              "typeIdentifier": "t_struct$_Price_$464_memory",
                              "typeString": "struct LTVDecisionEngineTypes.Price memory"
                            }
                          ],
                          "id": 60,
                          "name": "verifyPrices",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 385,
                          "src": "1400:12:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_struct$_Price_$464_memory_ptr_$_t_struct$_Price_$464_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (address,struct LTVDecisionEngineTypes.Price memory,struct LTVDecisionEngineTypes.Price memory) view returns (bool)"
                          }
                        },
                        "id": 67,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1400:102:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 68,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1395:111:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 46,
                  "id": 69,
                  "nodeType": "Return",
                  "src": "1388:118:0"
                }
              ]
            },
            "documentation": null,
            "id": 71,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "evaluateConsent",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 43,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 40,
                  "name": "params",
                  "nodeType": "VariableDeclaration",
                  "scope": 71,
                  "src": "957:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.Params"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 39,
                    "name": "Params",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 455,
                    "src": "957:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Params_$455_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.Params"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 42,
                  "name": "commitmentHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 71,
                  "src": "972:22:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 41,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "972:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "956:39:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 46,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 71,
                  "src": "1019:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 44,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1019:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1018:6:0"
            },
            "scope": 437,
            "src": "932:578:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 161,
              "nodeType": "Block",
              "src": "1696:744:0",
              "statements": [
                {
                  "assignments": [
                    81
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 81,
                      "name": "principalTokenPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "1700:55:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 80,
                        "name": "LTVDecisionEngineTypes.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 464,
                        "src": "1700:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$464_storage_ptr",
                          "typeString": "struct LTVDecisionEngineTypes.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 84,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 82,
                      "name": "params",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 73,
                      "src": "1758:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.Params memory"
                      }
                    },
                    "id": 83,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "principalPrice",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 450,
                    "src": "1758:21:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$464_memory",
                      "typeString": "struct LTVDecisionEngineTypes.Price memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1700:79:0"
                },
                {
                  "assignments": [
                    88
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 88,
                      "name": "collateralTokenPrice",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "1783:56:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.Price"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 87,
                        "name": "LTVDecisionEngineTypes.Price",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 464,
                        "src": "1783:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Price_$464_storage_ptr",
                          "typeString": "struct LTVDecisionEngineTypes.Price"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 91,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 89,
                      "name": "params",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 73,
                      "src": "1842:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.Params memory"
                      }
                    },
                    "id": 90,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "collateralPrice",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 452,
                    "src": "1842:22:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$464_memory",
                      "typeString": "struct LTVDecisionEngineTypes.Price memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1783:81:0"
                },
                {
                  "assignments": [
                    93
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 93,
                      "name": "maxLTV",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "1869:11:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 92,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1869:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 98,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 94,
                          "name": "params",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 73,
                          "src": "1883:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Params memory"
                          }
                        },
                        "id": 95,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditorCommitment",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 448,
                        "src": "1883:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CreditorCommitment_$469_memory",
                          "typeString": "struct LTVDecisionEngineTypes.CreditorCommitment memory"
                        }
                      },
                      "id": 96,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "values",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 466,
                      "src": "1883:32:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CommitmentValues_$472_memory",
                        "typeString": "struct LTVDecisionEngineTypes.CommitmentValues memory"
                      }
                    },
                    "id": 97,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "maxLTV",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 471,
                    "src": "1883:39:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1869:53:0"
                },
                {
                  "assignments": [
                    102
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 102,
                      "name": "order",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "1926:35:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                        "typeString": "struct OrderLibrary.DebtOrder"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 101,
                        "name": "OrderLibrary.DebtOrder",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1069,
                        "src": "1926:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_DebtOrder_$1069_storage_ptr",
                          "typeString": "struct OrderLibrary.DebtOrder"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 105,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 103,
                      "name": "params",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 73,
                      "src": "1964:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.Params memory"
                      }
                    },
                    "id": 104,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "order",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 454,
                    "src": "1964:12:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DebtOrder_$1069_memory",
                      "typeString": "struct OrderLibrary.DebtOrder memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1926:50:0"
                },
                {
                  "assignments": [
                    107
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 107,
                      "name": "collateralValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "1981:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 106,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1981:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 110,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 108,
                      "name": "collateralTokenPrice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 88,
                      "src": "2004:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.Price memory"
                      }
                    },
                    "id": 109,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "value",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 457,
                    "src": "2004:26:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1981:49:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 112,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 102,
                          "src": "2049:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 113,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "expirationTimestampInSec",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1060,
                        "src": "2049:30:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 111,
                      "name": "isExpired",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 436,
                      "src": "2039:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256) view returns (bool)"
                      }
                    },
                    "id": 114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2039:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 118,
                  "nodeType": "IfStatement",
                  "src": "2035:69:0",
                  "trueBody": {
                    "id": 117,
                    "nodeType": "Block",
                    "src": "2082:22:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2094:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 77,
                        "id": 116,
                        "nodeType": "Return",
                        "src": "2087:12:0"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 122,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 119,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 102,
                          "src": "2112:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 120,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "collateralAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1034,
                        "src": "2112:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 121,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2138:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "2112:27:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 125,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 123,
                        "name": "collateralValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 107,
                        "src": "2143:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2162:1:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "src": "2143:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2112:51:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 130,
                  "nodeType": "IfStatement",
                  "src": "2108:79:0",
                  "trueBody": {
                    "id": 129,
                    "nodeType": "Block",
                    "src": "2165:22:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2177:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 77,
                        "id": 128,
                        "nodeType": "Return",
                        "src": "2170:12:0"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    132
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 132,
                      "name": "ltv",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "2191:8:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 131,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2191:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 143,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 134,
                          "name": "principalTokenPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 81,
                          "src": "2217:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 135,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 457,
                        "src": "2217:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 136,
                          "name": "collateralTokenPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 88,
                          "src": "2247:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 137,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 457,
                        "src": "2247:26:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 138,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 102,
                          "src": "2278:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 139,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "principalAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1030,
                        "src": "2278:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 140,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 102,
                          "src": "2304:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 141,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "collateralAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1034,
                        "src": "2304:22:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 133,
                      "name": "computeLTV",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 423,
                      "src": "2202:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256,uint256) view returns (uint256)"
                      }
                    },
                    "id": 142,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2202:128:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2191:139:0"
                },
                {
                  "assignments": [
                    145
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 145,
                      "name": "maxLTVWithPrecision",
                      "nodeType": "VariableDeclaration",
                      "scope": 162,
                      "src": "2335:24:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 144,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2335:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 156,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 154,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "3130",
                          "id": 148,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2373:2:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2394:1:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 149,
                                  "name": "PRECISION",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 21,
                                  "src": "2380:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 150,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 1279,
                                "src": "2380:13:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2380:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 153,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "2379:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2373:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 146,
                        "name": "maxLTV",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 93,
                        "src": "2362:6:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 147,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1245,
                      "src": "2362:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 155,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2362:36:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2335:63:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 159,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 157,
                      "name": "ltv",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 132,
                      "src": "2410:3:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 158,
                      "name": "maxLTVWithPrecision",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 145,
                      "src": "2417:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2410:26:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 77,
                  "id": 160,
                  "nodeType": "Return",
                  "src": "2403:33:0"
                }
              ]
            },
            "documentation": null,
            "id": 162,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "evaluateDecision",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 74,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 73,
                  "name": "params",
                  "nodeType": "VariableDeclaration",
                  "scope": 162,
                  "src": "1635:20:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Params_$455_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.Params"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 72,
                    "name": "Params",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 455,
                    "src": "1635:6:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Params_$455_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.Params"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1634:22:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 77,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 76,
                  "name": "_success",
                  "nodeType": "VariableDeclaration",
                  "scope": 162,
                  "src": "1680:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 75,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1680:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1679:15:0"
            },
            "scope": 437,
            "src": "1609:831:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 204,
              "nodeType": "Block",
              "src": "2580:515:0",
              "statements": [
                {
                  "assignments": [
                    172
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 172,
                      "name": "termsContractCommitmentHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 205,
                      "src": "2584:35:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 171,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2584:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 179,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 174,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2656:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 175,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "termsContract",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1056,
                        "src": "2656:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 176,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2677:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 177,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "termsContractParameters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1058,
                        "src": "2677:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 173,
                      "name": "getTermsContractCommitmentHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 245,
                      "src": "2625:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes32_$returns$_t_bytes32_$",
                        "typeString": "function (address,bytes32) view returns (bytes32)"
                      }
                    },
                    "id": 178,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2625:82:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2584:123:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 181,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2752:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 182,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1042,
                        "src": "2752:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 183,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2771:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 184,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "kernelVersion",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1026,
                        "src": "2771:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 185,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2795:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 186,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "issuanceVersion",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1028,
                        "src": "2795:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 187,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2821:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 188,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "termsContract",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1056,
                        "src": "2821:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 189,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2845:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 190,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "principalToken",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1032,
                        "src": "2845:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 191,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2870:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 192,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "salt",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1062,
                        "src": "2870:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 193,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2885:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 194,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "principalAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1030,
                        "src": "2885:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 195,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2911:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 196,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "creditorFee",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1044,
                        "src": "2911:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 197,
                          "name": "order",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 166,
                          "src": "2933:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                            "typeString": "struct OrderLibrary.DebtOrder memory"
                          }
                        },
                        "id": 198,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "expirationTimestampInSec",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1060,
                        "src": "2933:30:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 199,
                          "name": "commitmentValues",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 164,
                          "src": "2992:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CommitmentValues_$472_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.CommitmentValues memory"
                          }
                        },
                        "id": 200,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "maxLTV",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 471,
                        "src": "2992:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 201,
                        "name": "termsContractCommitmentHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 172,
                        "src": "3060:27:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 180,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1313,
                      "src": "2719:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 202,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2719:372:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 170,
                  "id": 203,
                  "nodeType": "Return",
                  "src": "2712:379:0"
                }
              ]
            },
            "documentation": null,
            "id": 205,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "hashCreditorCommitmentForOrder",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 167,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 164,
                  "name": "commitmentValues",
                  "nodeType": "VariableDeclaration",
                  "scope": 205,
                  "src": "2483:33:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CommitmentValues_$472_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.CommitmentValues"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 163,
                    "name": "CommitmentValues",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 472,
                    "src": "2483:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CommitmentValues_$472_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.CommitmentValues"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 166,
                  "name": "order",
                  "nodeType": "VariableDeclaration",
                  "scope": 205,
                  "src": "2518:28:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_DebtOrder_$1069_memory_ptr",
                    "typeString": "struct OrderLibrary.DebtOrder"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 165,
                    "name": "OrderLibrary.DebtOrder",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1069,
                    "src": "2518:22:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_DebtOrder_$1069_storage_ptr",
                      "typeString": "struct OrderLibrary.DebtOrder"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2482:65:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 170,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 169,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 205,
                  "src": "2570:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 168,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2570:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2569:9:0"
            },
            "scope": 437,
            "src": "2443:652:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 244,
              "nodeType": "Block",
              "src": "3231:648:0",
              "statements": [
                {
                  "assignments": [
                    215
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 215,
                      "name": "simpleInterestParameters",
                      "nodeType": "VariableDeclaration",
                      "scope": 245,
                      "src": "3235:56:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 214,
                        "name": "SimpleInterestParameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 483,
                        "src": "3235:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_storage_ptr",
                          "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 220,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 217,
                        "name": "termsContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 207,
                        "src": "3328:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 218,
                        "name": "termsContractParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 209,
                        "src": "3343:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 216,
                      "name": "unpackSimpleInterestParameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 279,
                      "src": "3297:30:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes32_$returns$_t_struct$_SimpleInterestParameters_$483_memory_ptr_$",
                        "typeString": "function (address,bytes32) pure returns (struct LTVDecisionEngineTypes.SimpleInterestParameters memory)"
                      }
                    },
                    "id": 219,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3297:70:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3235:132:0"
                },
                {
                  "assignments": [
                    222
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 222,
                      "name": "collateralParameters",
                      "nodeType": "VariableDeclaration",
                      "scope": 245,
                      "src": "3372:48:0",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CollateralParameters_$490_memory_ptr",
                        "typeString": "struct LTVDecisionEngineTypes.CollateralParameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 221,
                        "name": "CollateralParameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 490,
                        "src": "3372:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CollateralParameters_$490_storage_ptr",
                          "typeString": "struct LTVDecisionEngineTypes.CollateralParameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 226,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 224,
                        "name": "termsContractParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 209,
                        "src": "3453:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 223,
                      "name": "unpackCollateralParameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 309,
                      "src": "3426:26:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_struct$_CollateralParameters_$490_memory_ptr_$",
                        "typeString": "function (bytes32) view returns (struct LTVDecisionEngineTypes.CollateralParameters memory)"
                      }
                    },
                    "id": 225,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3426:51:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CollateralParameters_$490_memory_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.CollateralParameters memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3372:105:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 228,
                          "name": "simpleInterestParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 215,
                          "src": "3542:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                          }
                        },
                        "id": 229,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "principalTokenIndex",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 474,
                        "src": "3542:44:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 230,
                          "name": "simpleInterestParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 215,
                          "src": "3591:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                          }
                        },
                        "id": 231,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "principalAmount",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 476,
                        "src": "3591:40:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 232,
                          "name": "simpleInterestParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 215,
                          "src": "3636:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                          }
                        },
                        "id": 233,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "interestRate",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 478,
                        "src": "3636:37:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 234,
                          "name": "simpleInterestParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 215,
                          "src": "3678:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                          }
                        },
                        "id": 235,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "amortizationUnitType",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 480,
                        "src": "3678:45:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 236,
                          "name": "simpleInterestParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 215,
                          "src": "3728:24:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                          }
                        },
                        "id": 237,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "termLengthInAmortizationUnits",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 482,
                        "src": "3728:54:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 238,
                          "name": "collateralParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 222,
                          "src": "3787:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CollateralParameters_$490_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.CollateralParameters memory"
                          }
                        },
                        "id": 239,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "collateralTokenIndex",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 485,
                        "src": "3787:41:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 240,
                          "name": "collateralParameters",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 222,
                          "src": "3833:20:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CollateralParameters_$490_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.CollateralParameters memory"
                          }
                        },
                        "id": 241,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "gracePeriodInDays",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 489,
                        "src": "3833:38:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 227,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1313,
                      "src": "3489:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3489:386:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 213,
                  "id": 243,
                  "nodeType": "Return",
                  "src": "3482:393:0"
                }
              ]
            },
            "documentation": null,
            "id": 245,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "getTermsContractCommitmentHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 207,
                  "name": "termsContract",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3141:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 206,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3141:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 209,
                  "name": "termsContractParameters",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3166:31:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 208,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3166:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3137:63:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 213,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 212,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 245,
                  "src": "3222:7:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 211,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3222:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3221:9:0"
            },
            "scope": 437,
            "src": "3098:781:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 278,
              "nodeType": "Block",
              "src": "4035:673:0",
              "statements": [
                {
                  "assignments": [
                    255
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 255,
                      "name": "simpleInterestTermsContract",
                      "nodeType": "VariableDeclaration",
                      "scope": 279,
                      "src": "4121:64:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_SimpleInterestTermsContractInterface_$965",
                        "typeString": "contract SimpleInterestTermsContractInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 254,
                        "name": "SimpleInterestTermsContractInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 965,
                        "src": "4121:36:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_SimpleInterestTermsContractInterface_$965",
                          "typeString": "contract SimpleInterestTermsContractInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 259,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 257,
                        "name": "termsContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 247,
                        "src": "4225:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 256,
                      "name": "SimpleInterestTermsContractInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 965,
                      "src": "4188:36:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_SimpleInterestTermsContractInterface_$965_$",
                        "typeString": "type(contract SimpleInterestTermsContractInterface)"
                      }
                    },
                    "id": 258,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4188:51:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_SimpleInterestTermsContractInterface_$965",
                      "typeString": "contract SimpleInterestTermsContractInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4121:118:0"
                },
                {
                  "assignments": [
                    260,
                    261,
                    262,
                    263,
                    264
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 260,
                      "name": "principalTokenIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 279,
                      "src": "4249:19:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 261,
                      "name": "principalAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 279,
                      "src": "4270:15:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 262,
                      "name": "interestRate",
                      "nodeType": "VariableDeclaration",
                      "scope": 279,
                      "src": "4287:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 263,
                      "name": "amortizationUnitType",
                      "nodeType": "VariableDeclaration",
                      "scope": 279,
                      "src": "4301:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 264,
                      "name": "termLengthInAmortizationUnits",
                      "nodeType": "VariableDeclaration",
                      "scope": 279,
                      "src": "4323:29:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 269,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 267,
                        "name": "termsContractParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 249,
                        "src": "4413:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 265,
                        "name": "simpleInterestTermsContract",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 255,
                        "src": "4359:27:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_SimpleInterestTermsContractInterface_$965",
                          "typeString": "contract SimpleInterestTermsContractInterface"
                        }
                      },
                      "id": 266,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unpackParametersFromBytes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 964,
                      "src": "4359:53:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_bytes32_$returns$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (bytes32) pure external returns (uint256,uint256,uint256,uint256,uint256)"
                      }
                    },
                    "id": 268,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4359:78:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4244:193:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 271,
                        "name": "principalTokenIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 260,
                        "src": "4500:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 272,
                        "name": "principalAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 261,
                        "src": "4541:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 273,
                        "name": "interestRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 262,
                        "src": "4575:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 274,
                        "name": "amortizationUnitType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 263,
                        "src": "4614:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 275,
                        "name": "termLengthInAmortizationUnits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 264,
                        "src": "4670:29:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": null,
                      "id": 270,
                      "name": "SimpleInterestParameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 483,
                      "src": "4449:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_SimpleInterestParameters_$483_storage_ptr_$",
                        "typeString": "type(struct LTVDecisionEngineTypes.SimpleInterestParameters storage pointer)"
                      }
                    },
                    "id": 276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "principalTokenIndex",
                      "principalAmount",
                      "interestRate",
                      "amortizationUnitType",
                      "termLengthInAmortizationUnits"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "4449:255:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory",
                      "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters memory"
                    }
                  },
                  "functionReturnParameters": 253,
                  "id": 277,
                  "nodeType": "Return",
                  "src": "4442:262:0"
                }
              ]
            },
            "documentation": null,
            "id": 279,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "unpackSimpleInterestParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 250,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 247,
                  "name": "termsContract",
                  "nodeType": "VariableDeclaration",
                  "scope": 279,
                  "src": "3925:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 246,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3925:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 249,
                  "name": "termsContractParameters",
                  "nodeType": "VariableDeclaration",
                  "scope": 279,
                  "src": "3950:31:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 248,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3950:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3921:63:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 253,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 252,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 279,
                  "src": "4008:24:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 251,
                    "name": "SimpleInterestParameters",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 483,
                    "src": "4008:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_SimpleInterestParameters_$483_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.SimpleInterestParameters"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4007:26:0"
            },
            "scope": 437,
            "src": "3882:826:0",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 308,
              "nodeType": "Block",
              "src": "4831:421:0",
              "statements": [
                {
                  "assignments": [
                    287
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 287,
                      "name": "collateralizer",
                      "nodeType": "VariableDeclaration",
                      "scope": 309,
                      "src": "4835:38:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_CollateralizerInterface_$745",
                        "typeString": "contract CollateralizerInterface"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 286,
                        "name": "CollateralizerInterface",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 745,
                        "src": "4835:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CollateralizerInterface_$745",
                          "typeString": "contract CollateralizerInterface"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 293,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 289,
                            "name": "contractRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26,
                            "src": "4900:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ContractRegistryInterface_$797",
                              "typeString": "contract ContractRegistryInterface"
                            }
                          },
                          "id": 290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "collateralizer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 754,
                          "src": "4900:31:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_contract$_CollateralizerInterface_$745_$",
                            "typeString": "function () view external returns (contract CollateralizerInterface)"
                          }
                        },
                        "id": 291,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4900:33:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CollateralizerInterface_$745",
                          "typeString": "contract CollateralizerInterface"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_CollateralizerInterface_$745",
                          "typeString": "contract CollateralizerInterface"
                        }
                      ],
                      "id": 288,
                      "name": "CollateralizerInterface",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 745,
                      "src": "4876:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_CollateralizerInterface_$745_$",
                        "typeString": "type(contract CollateralizerInterface)"
                      }
                    },
                    "id": 292,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4876:58:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_CollateralizerInterface_$745",
                      "typeString": "contract CollateralizerInterface"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4835:99:0"
                },
                {
                  "assignments": [
                    294,
                    295,
                    296
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 294,
                      "name": "collateralTokenIndex",
                      "nodeType": "VariableDeclaration",
                      "scope": 309,
                      "src": "4944:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 295,
                      "name": "collateralAmount",
                      "nodeType": "VariableDeclaration",
                      "scope": 309,
                      "src": "4966:16:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 296,
                      "name": "gracePeriodInDays",
                      "nodeType": "VariableDeclaration",
                      "scope": 309,
                      "src": "4984:17:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": null,
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 301,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 299,
                        "name": "termsContractParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 281,
                        "src": "5059:23:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 297,
                        "name": "collateralizer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 287,
                        "src": "5008:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_CollateralizerInterface_$745",
                          "typeString": "contract CollateralizerInterface"
                        }
                      },
                      "id": 298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "unpackCollateralParametersFromBytes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 744,
                      "src": "5008:50:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_pure$_t_bytes32_$returns$_t_uint256_$_t_uint256_$_t_uint256_$",
                        "typeString": "function (bytes32) pure external returns (uint256,uint256,uint256)"
                      }
                    },
                    "id": 300,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5008:75:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4939:144:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 303,
                        "name": "collateralTokenIndex",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 294,
                        "src": "5143:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 304,
                        "name": "collateralAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 295,
                        "src": "5186:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 305,
                        "name": "gracePeriodInDays",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 296,
                        "src": "5226:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": null,
                      "id": 302,
                      "name": "CollateralParameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 490,
                      "src": "5095:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_CollateralParameters_$490_storage_ptr_$",
                        "typeString": "type(struct LTVDecisionEngineTypes.CollateralParameters storage pointer)"
                      }
                    },
                    "id": 306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "collateralTokenIndex",
                      "collateralAmount",
                      "gracePeriodInDays"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "5095:153:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CollateralParameters_$490_memory",
                      "typeString": "struct LTVDecisionEngineTypes.CollateralParameters memory"
                    }
                  },
                  "functionReturnParameters": 285,
                  "id": 307,
                  "nodeType": "Return",
                  "src": "5088:160:0"
                }
              ]
            },
            "documentation": null,
            "id": 309,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "unpackCollateralParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 281,
                  "name": "termsContractParameters",
                  "nodeType": "VariableDeclaration",
                  "scope": 309,
                  "src": "4750:31:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 280,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4750:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4746:38:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 285,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 284,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 309,
                  "src": "4808:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_CollateralParameters_$490_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.CollateralParameters"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 283,
                    "name": "CollateralParameters",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 490,
                    "src": "4808:20:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CollateralParameters_$490_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.CollateralParameters"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4807:22:0"
            },
            "scope": 437,
            "src": "4711:541:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 384,
              "nodeType": "Block",
              "src": "5436:841:0",
              "statements": [
                {
                  "assignments": [
                    321
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 321,
                      "name": "minPriceTimestamp",
                      "nodeType": "VariableDeclaration",
                      "scope": 385,
                      "src": "5440:22:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 320,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5440:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 326,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 325,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 322,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1309,
                        "src": "5465:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 323,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5465:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "argumentTypes": null,
                      "id": 324,
                      "name": "MAX_PRICE_TTL_IN_SECONDS",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 24,
                      "src": "5483:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5465:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5440:67:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 335,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 330,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 327,
                          "name": "principalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 313,
                          "src": "5516:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 328,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 459,
                        "src": "5516:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 329,
                        "name": "minPriceTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 321,
                        "src": "5543:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5516:44:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "||",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 334,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 331,
                          "name": "collateralPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 315,
                          "src": "5567:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 332,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 459,
                        "src": "5567:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 333,
                        "name": "minPriceTimestamp",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 321,
                        "src": "5595:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5567:45:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "5516:96:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 339,
                  "nodeType": "IfStatement",
                  "src": "5512:124:0",
                  "trueBody": {
                    "id": 338,
                    "nodeType": "Block",
                    "src": "5614:22:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 336,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5626:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 319,
                        "id": 337,
                        "nodeType": "Return",
                        "src": "5619:12:0"
                      }
                    ]
                  }
                },
                {
                  "assignments": [
                    341
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 341,
                      "name": "principalPriceHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 385,
                      "src": "5640:26:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 340,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5640:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 350,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 343,
                          "name": "principalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 313,
                          "src": "5683:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 344,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 457,
                        "src": "5683:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 345,
                          "name": "principalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 313,
                          "src": "5708:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 346,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tokenAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 461,
                        "src": "5708:27:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 347,
                          "name": "principalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 313,
                          "src": "5740:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 348,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 459,
                        "src": "5740:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 342,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1313,
                      "src": "5669:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5669:99:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5640:128:0"
                },
                {
                  "assignments": [
                    352
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 352,
                      "name": "collateralPriceHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 385,
                      "src": "5773:27:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 351,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "5773:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 361,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 354,
                          "name": "collateralPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 315,
                          "src": "5817:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 355,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 457,
                        "src": "5817:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 356,
                          "name": "collateralPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 315,
                          "src": "5843:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 357,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "tokenAddress",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 461,
                        "src": "5843:28:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 358,
                          "name": "collateralPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 315,
                          "src": "5876:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 359,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 459,
                        "src": "5876:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 353,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1313,
                      "src": "5803:9:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
                        "typeString": "function () pure returns (bytes32)"
                      }
                    },
                    "id": 360,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5803:102:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5773:132:0"
                },
                {
                  "assignments": [
                    363
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 363,
                      "name": "principalPriceValid",
                      "nodeType": "VariableDeclaration",
                      "scope": 385,
                      "src": "5910:24:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 362,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5910:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 370,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 365,
                        "name": "priceFeedOperator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 311,
                        "src": "5958:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 366,
                        "name": "principalPriceHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 341,
                        "src": "5980:18:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 367,
                          "name": "principalPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 313,
                          "src": "6003:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 368,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signature",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 463,
                        "src": "6003:24:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ECDSASignature_$1178_memory",
                          "typeString": "struct SignaturesLibrary.ECDSASignature memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_ECDSASignature_$1178_memory",
                          "typeString": "struct SignaturesLibrary.ECDSASignature memory"
                        }
                      ],
                      "id": 364,
                      "name": "isValidSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1209,
                      "src": "5937:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes32_$_t_struct$_ECDSASignature_$1178_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes32,struct SignaturesLibrary.ECDSASignature memory) pure returns (bool)"
                      }
                    },
                    "id": 369,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5937:94:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5910:121:0"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 372,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "!",
                    "prefix": true,
                    "src": "6122:20:0",
                    "subExpression": {
                      "argumentTypes": null,
                      "id": 371,
                      "name": "principalPriceValid",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 363,
                      "src": "6123:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 376,
                  "nodeType": "IfStatement",
                  "src": "6118:48:0",
                  "trueBody": {
                    "id": 375,
                    "nodeType": "Block",
                    "src": "6144:22:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 373,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6156:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 319,
                        "id": 374,
                        "nodeType": "Return",
                        "src": "6149:12:0"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 378,
                        "name": "priceFeedOperator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 311,
                        "src": "6198:17:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 379,
                        "name": "collateralPriceHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 352,
                        "src": "6220:19:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 380,
                          "name": "collateralPrice",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 315,
                          "src": "6244:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                            "typeString": "struct LTVDecisionEngineTypes.Price memory"
                          }
                        },
                        "id": 381,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "signature",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 463,
                        "src": "6244:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ECDSASignature_$1178_memory",
                          "typeString": "struct SignaturesLibrary.ECDSASignature memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_struct$_ECDSASignature_$1178_memory",
                          "typeString": "struct SignaturesLibrary.ECDSASignature memory"
                        }
                      ],
                      "id": 377,
                      "name": "isValidSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1209,
                      "src": "6177:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_address_$_t_bytes32_$_t_struct$_ECDSASignature_$1178_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (address,bytes32,struct SignaturesLibrary.ECDSASignature memory) pure returns (bool)"
                      }
                    },
                    "id": 382,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6177:96:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 319,
                  "id": 383,
                  "nodeType": "Return",
                  "src": "6170:103:0"
                }
              ]
            },
            "documentation": null,
            "id": 385,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "verifyPrices",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 316,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 311,
                  "name": "priceFeedOperator",
                  "nodeType": "VariableDeclaration",
                  "scope": 385,
                  "src": "5280:25:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 310,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5280:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 313,
                  "name": "principalPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 385,
                  "src": "5309:43:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 312,
                    "name": "LTVDecisionEngineTypes.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 464,
                    "src": "5309:28:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$464_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 315,
                  "name": "collateralPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 385,
                  "src": "5356:44:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Price_$464_memory_ptr",
                    "typeString": "struct LTVDecisionEngineTypes.Price"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 314,
                    "name": "LTVDecisionEngineTypes.Price",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 464,
                    "src": "5356:28:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Price_$464_storage_ptr",
                      "typeString": "struct LTVDecisionEngineTypes.Price"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5276:127:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 319,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 318,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 385,
                  "src": "5429:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 317,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5429:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5428:6:0"
            },
            "scope": 437,
            "src": "5255:1022:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 422,
              "nodeType": "Block",
              "src": "6445:207:0",
              "statements": [
                {
                  "assignments": [
                    399
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 399,
                      "name": "principalValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 423,
                      "src": "6449:19:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 398,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6449:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 409,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "hexValue": "3130",
                          "id": 405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6516:2:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10_by_1",
                            "typeString": "int_const 10"
                          },
                          "value": "10"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "**",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 406,
                          "name": "PRECISION",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 21,
                          "src": "6522:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6516:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 402,
                            "name": "principalAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 391,
                            "src": "6495:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 400,
                            "name": "principalTokenPrice",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 387,
                            "src": "6471:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1245,
                          "src": "6471:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6471:40:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1245,
                      "src": "6471:44:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 408,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6471:61:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6449:83:0"
                },
                {
                  "assignments": [
                    411
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 411,
                      "name": "collateralValue",
                      "nodeType": "VariableDeclaration",
                      "scope": 423,
                      "src": "6536:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 410,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6536:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 416,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 414,
                        "name": "collateralAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 393,
                        "src": "6584:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 412,
                        "name": "collateralTokenPrice",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 389,
                        "src": "6559:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 413,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "mul",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1245,
                      "src": "6559:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 415,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6559:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6536:65:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 419,
                        "name": "collateralValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 411,
                        "src": "6632:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 417,
                        "name": "principalValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 399,
                        "src": "6613:14:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 418,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "div",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1259,
                      "src": "6613:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6613:35:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 397,
                  "id": 421,
                  "nodeType": "Return",
                  "src": "6606:42:0"
                }
              ]
            },
            "documentation": null,
            "id": 423,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "computeLTV",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 394,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 387,
                  "name": "principalTokenPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 423,
                  "src": "6303:24:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 386,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6303:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 389,
                  "name": "collateralTokenPrice",
                  "nodeType": "VariableDeclaration",
                  "scope": 423,
                  "src": "6331:25:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 388,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6331:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 391,
                  "name": "principalAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 423,
                  "src": "6360:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 390,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6360:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 393,
                  "name": "collateralAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 423,
                  "src": "6384:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 392,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6384:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6299:109:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 396,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 423,
                  "src": "6438:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 395,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6438:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6437:6:0"
            },
            "scope": 437,
            "src": "6280:372:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 435,
              "nodeType": "Block",
              "src": "6745:57:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 433,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 430,
                      "name": "expirationTimestampInSec",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 425,
                      "src": "6756:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 431,
                        "name": "block",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1309,
                        "src": "6783:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_block",
                          "typeString": "block"
                        }
                      },
                      "id": 432,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "timestamp",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6783:15:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6756:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 429,
                  "id": 434,
                  "nodeType": "Return",
                  "src": "6749:49:0"
                }
              ]
            },
            "documentation": null,
            "id": 436,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": true,
            "modifiers": [],
            "name": "isExpired",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 425,
                  "name": "expirationTimestampInSec",
                  "nodeType": "VariableDeclaration",
                  "scope": 436,
                  "src": "6674:29:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 424,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6674:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6673:31:0"
            },
            "payable": false,
            "returnParameters": {
              "id": 429,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 428,
                  "name": "expired",
                  "nodeType": "VariableDeclaration",
                  "scope": 436,
                  "src": "6730:12:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 427,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6730:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6729:14:0"
            },
            "scope": 437,
            "src": "6655:147:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 438,
        "src": "526:6278:0"
      }
    ],
    "src": "0:6805:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.24+commit.e67f0147.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "2.0.1",
  "updatedAt": "2018-10-16T21:20:58.418Z"
}