{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_hub",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_revokedNonce",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_config",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "AcceptorIsProposer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "tag",
          "type": "bytes32"
        }
      ],
      "name": "AddressMissingHubTag",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "used",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limit",
          "type": "uint256"
        }
      ],
      "name": "AvailableCreditLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "CallerIsNotStatedProposer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "current",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "allowed",
          "type": "address"
        }
      ],
      "name": "CallerNotAllowedAcceptor",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "loanContract",
          "type": "address"
        }
      ],
      "name": "CallerNotLoanContract",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "current",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiration",
          "type": "uint256"
        }
      ],
      "name": "Expired",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "current",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "proposed",
          "type": "bytes32"
        }
      ],
      "name": "InvalidCollateralStateFingerprint",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "refinancingLoanId",
          "type": "uint256"
        }
      ],
      "name": "InvalidRefinancingLoanId",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "signer",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "digest",
          "type": "bytes32"
        }
      ],
      "name": "InvalidSignature",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "length",
          "type": "uint256"
        }
      ],
      "name": "InvalidSignatureLength",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "MissingStateFingerprintComputer",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "addr",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nonceSpace",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "NonceNotUsable",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "proposalHash",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "proposer",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "enum MultiToken.Category",
              "name": "collateralCategory",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "collateralAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "collateralId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "checkCollateralStateFingerprint",
              "type": "bool"
            },
            {
              "internalType": "bytes32",
              "name": "collateralStateFingerprint",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "creditAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creditAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availableCreditLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "fixedInterestAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "accruingInterestAPR",
              "type": "uint40"
            },
            {
              "internalType": "uint32",
              "name": "duration",
              "type": "uint32"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            },
            {
              "internalType": "address",
              "name": "allowedAcceptor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "proposerSpecHash",
              "type": "bytes32"
            },
            {
              "internalType": "bool",
              "name": "isOffer",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "loanContract",
              "type": "address"
            }
          ],
          "indexed": false,
          "internalType": "struct PWNSimpleLoanSimpleProposal.Proposal",
          "name": "proposal",
          "type": "tuple"
        }
      ],
      "name": "ProposalMade",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MULTIPROPOSAL_DOMAIN_SEPARATOR",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MULTIPROPOSAL_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "PROPOSAL_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VERSION",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "acceptor",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "refinancingLoanId",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "proposalData",
          "type": "bytes"
        },
        {
          "internalType": "bytes32[]",
          "name": "proposalInclusionProof",
          "type": "bytes32[]"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "acceptProposal",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "proposalHash",
          "type": "bytes32"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "lender",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "borrower",
              "type": "address"
            },
            {
              "internalType": "uint32",
              "name": "duration",
              "type": "uint32"
            },
            {
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "category",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "assetAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "internalType": "struct MultiToken.Asset",
              "name": "collateral",
              "type": "tuple"
            },
            {
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "category",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "assetAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "id",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "amount",
                  "type": "uint256"
                }
              ],
              "internalType": "struct MultiToken.Asset",
              "name": "credit",
              "type": "tuple"
            },
            {
              "internalType": "uint256",
              "name": "fixedInterestAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "accruingInterestAPR",
              "type": "uint40"
            },
            {
              "internalType": "bytes32",
              "name": "lenderSpecHash",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "borrowerSpecHash",
              "type": "bytes32"
            }
          ],
          "internalType": "struct PWNSimpleLoan.Terms",
          "name": "loanTerms",
          "type": "tuple"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "config",
      "outputs": [
        {
          "internalType": "contract PWNConfig",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "creditUsed",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "proposalData",
          "type": "bytes"
        }
      ],
      "name": "decodeProposalData",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum MultiToken.Category",
              "name": "collateralCategory",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "collateralAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "collateralId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "checkCollateralStateFingerprint",
              "type": "bool"
            },
            {
              "internalType": "bytes32",
              "name": "collateralStateFingerprint",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "creditAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creditAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availableCreditLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "fixedInterestAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "accruingInterestAPR",
              "type": "uint40"
            },
            {
              "internalType": "uint32",
              "name": "duration",
              "type": "uint32"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            },
            {
              "internalType": "address",
              "name": "allowedAcceptor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "proposerSpecHash",
              "type": "bytes32"
            },
            {
              "internalType": "bool",
              "name": "isOffer",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "loanContract",
              "type": "address"
            }
          ],
          "internalType": "struct PWNSimpleLoanSimpleProposal.Proposal",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum MultiToken.Category",
              "name": "collateralCategory",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "collateralAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "collateralId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "checkCollateralStateFingerprint",
              "type": "bool"
            },
            {
              "internalType": "bytes32",
              "name": "collateralStateFingerprint",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "creditAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creditAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availableCreditLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "fixedInterestAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "accruingInterestAPR",
              "type": "uint40"
            },
            {
              "internalType": "uint32",
              "name": "duration",
              "type": "uint32"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            },
            {
              "internalType": "address",
              "name": "allowedAcceptor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "proposerSpecHash",
              "type": "bytes32"
            },
            {
              "internalType": "bool",
              "name": "isOffer",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "loanContract",
              "type": "address"
            }
          ],
          "internalType": "struct PWNSimpleLoanSimpleProposal.Proposal",
          "name": "proposal",
          "type": "tuple"
        }
      ],
      "name": "encodeProposalData",
      "outputs": [
        {
          "internalType": "bytes",
          "name": "",
          "type": "bytes"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes32",
              "name": "multiproposalMerkleRoot",
              "type": "bytes32"
            }
          ],
          "internalType": "struct PWNSimpleLoanProposal.Multiproposal",
          "name": "multiproposal",
          "type": "tuple"
        }
      ],
      "name": "getMultiproposalHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum MultiToken.Category",
              "name": "collateralCategory",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "collateralAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "collateralId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "checkCollateralStateFingerprint",
              "type": "bool"
            },
            {
              "internalType": "bytes32",
              "name": "collateralStateFingerprint",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "creditAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creditAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availableCreditLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "fixedInterestAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "accruingInterestAPR",
              "type": "uint40"
            },
            {
              "internalType": "uint32",
              "name": "duration",
              "type": "uint32"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            },
            {
              "internalType": "address",
              "name": "allowedAcceptor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "proposerSpecHash",
              "type": "bytes32"
            },
            {
              "internalType": "bool",
              "name": "isOffer",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "loanContract",
              "type": "address"
            }
          ],
          "internalType": "struct PWNSimpleLoanSimpleProposal.Proposal",
          "name": "proposal",
          "type": "tuple"
        }
      ],
      "name": "getProposalHash",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "hub",
      "outputs": [
        {
          "internalType": "contract PWNHub",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "enum MultiToken.Category",
              "name": "collateralCategory",
              "type": "uint8"
            },
            {
              "internalType": "address",
              "name": "collateralAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "collateralId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "collateralAmount",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "checkCollateralStateFingerprint",
              "type": "bool"
            },
            {
              "internalType": "bytes32",
              "name": "collateralStateFingerprint",
              "type": "bytes32"
            },
            {
              "internalType": "address",
              "name": "creditAddress",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "creditAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "availableCreditLimit",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "fixedInterestAmount",
              "type": "uint256"
            },
            {
              "internalType": "uint40",
              "name": "accruingInterestAPR",
              "type": "uint40"
            },
            {
              "internalType": "uint32",
              "name": "duration",
              "type": "uint32"
            },
            {
              "internalType": "uint40",
              "name": "expiration",
              "type": "uint40"
            },
            {
              "internalType": "address",
              "name": "allowedAcceptor",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "proposerSpecHash",
              "type": "bytes32"
            },
            {
              "internalType": "bool",
              "name": "isOffer",
              "type": "bool"
            },
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "loanContract",
              "type": "address"
            }
          ],
          "internalType": "struct PWNSimpleLoanSimpleProposal.Proposal",
          "name": "proposal",
          "type": "tuple"
        }
      ],
      "name": "makeProposal",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "proposalHash",
          "type": "bytes32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposalsMade",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "nonceSpace",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        }
      ],
      "name": "revokeNonce",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "revokedNonce",
      "outputs": [
        {
          "internalType": "contract PWNRevokedNonce",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": {
    "object": "0x6101206040523480156200001257600080fd5b5060405162002686380380620026868339810160408190526200003591620001ea565b604080518082018252601b81527f50574e53696d706c654c6f616e53696d706c6550726f706f73616c000000000060208083019190915282518084018452600381526218971960e91b818301526001600160a01b0380881660c05280871660e052851661010052925186938693869390927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f91620000d69185910162000234565b6040516020818303038152906040528051906020012082604051602001620000ff919062000234565b60408051601f1981840301815282825280516020918201209083019490945281019190915260608101919091524660808201523060a082015260c00160408051808303601f1901815282825280516020918201206080527fb2178a58fb1eefb359ecfdd57bb19c0bdd0f4e6eed8547f46600e500ed111af3908301527fb63b40822cc79278afd8d1ce1a8006a4a298ec829d4d1610b69b2a4830c232709082015260600160408051601f19818403018152919052805160209091012060a05250620002659650505050505050565b80516001600160a01b0381168114620001e557600080fd5b919050565b6000806000606084860312156200020057600080fd5b6200020b84620001cd565b92506200021b60208501620001cd565b91506200022b60408501620001cd565b90509250925092565b6000825160005b818110156200025757602081860181015185830152016200023b565b506000920191825250919050565b60805160a05160c05160e051610100516123ab620002db6000396000818161024e0152610ff40152600081816102c20152818161072b01528181610d4e0152610e950152600081816101c70152610a430152600081816102e901526107c7015260008181610192015261091701526123ab6000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c806379502c55116100a25780639788ad55116100715780639788ad55146102bd578063abe93878146102e4578063d06a0d821461030b578063f0209ad614610332578063ffa1ad741461035257600080fd5b806379502c5514610249578063829d37701461027057806383f19a0b14610283578063853b94a01461029657600080fd5b8063365a86fc116100de578063365a86fc146101c2578063382c0cdd14610201578063579bfc30146102145780635b3275e21461022957600080fd5b806301e83272146101105780631da4c2751461013a5780632d5d17fc1461016d5780633644e5151461018d575b600080fd5b61012361011e36600461185b565b610374565b6040516101319291906119ad565b60405180910390f35b61015d610148366004611a4f565b60006020819052908152604090205460ff1681565b6040519015158152602001610131565b61018061017b366004611aa8565b61061c565b6040516101319190611b59565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610131565b6101e97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610131565b6101b461020f366004611ca2565b6106dd565b610227610222366004611cbb565b610714565b005b61023c610237366004611d49565b61079a565b6040516101319190611ee1565b6101e97f000000000000000000000000000000000000000000000000000000000000000081565b6101b461027e366004611ef4565b6107c3565b6101b4610291366004611ca2565b610893565b6101b47f2b5f73ebb16e8e796c727d020a1a8f0190005ba40559ee87674fb8de78939b1a81565b6101e97f000000000000000000000000000000000000000000000000000000000000000081565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b6101b47f73af92d8ed4d3261ba61cd686d2f8a9cceb2563cc7c4c5355eb121316fc5358d81565b6101b4610340366004611a4f565b60016020526000908152604090205481565b61023c6040518060400160405280600381526020016218971960e91b81525081565b600061037e611762565b60006103bf89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061061c92505050565b905061040a7f2b5f73ebb16e8e796c727d020a1a8f0190005ba40559ee87674fb8de78939b1a826040516020016103f69190611b59565b604051602081830303815290604052610913565b92506104e98b8b858a8a8a8a604051806101c001604052808a602001516001600160a01b031681526020018a6040015181526020018a60800151151581526020018a60a0015181526020018a60e0015181526020018a610100015181526020018a610180015164ffffffffff1681526020018a6101a001516001600160a01b031681526020018a6101c001516001600160a01b031681526020018a6102000151151581526020018a610220015181526020018a610240015181526020018a610260015181526020018a61028001516001600160a01b03168152506109a4565b604051806101200160405280826102000151610505578c61050c565b826101c001515b6001600160a01b0316815260200182610200015161052f57826101c00151610531565b8c5b6001600160a01b0316815260200182610160015163ffffffff16815260200160405180608001604052808460000151600381111561057157610571611942565b815260200184602001516001600160a01b0316815260200184604001518152602001846060015181525081526020016105b28360c001518460e001516111a7565b8152602001826101200151815260200182610140015164ffffffffff1681526020018261020001516105e55760006105ec565b826101e001515b815260200182610200015161060657826101e00151610609565b60005b8152509150509850989650505050505050565b604080516102a08101825260008082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e082018190526102008201819052610220820181905261024082018190526102608201819052610280820152825190916106d79184018101908401611f6d565b92915050565b60006106d77f2b5f73ebb16e8e796c727d020a1a8f0190005ba40559ee87674fb8de78939b1a836040516020016103f691906120aa565b60405163f79924a960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f79924a99061076490339086908690600401612229565b600060405180830381600087803b15801561077e57600080fd5b505af1158015610792573d6000803e3d6000fd5b505050505050565b6060816040516020016107ad9190611b59565b6040516020818303038152906040529050919050565b60007f00000000000000000000000000000000000000000000000000000000000000007f73af92d8ed4d3261ba61cd686d2f8a9cceb2563cc7c4c5355eb121316fc5358d8360405160200161081b9151815260200190565b60408051601f1981840301815290829052610839929160200161224a565b6040516020818303038152906040528051906020012060405160200161087692919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050919050565b600061089e826106dd565b90506108bb816108b66101e085016101c08601612270565b6111df565b6108cd6101e083016101c08401612270565b6001600160a01b0316817fe228ae64deb022978896dc961784e5e37437005800b772804f5cf7d66c76f4648460405161090691906120aa565b60405180910390a3919050565b60007f0000000000000000000000000000000000000000000000000000000000000000838360405160200161094992919061224a565b6040516020818303038152906040528051906020012060405160200161098692919061190160f01b81526002810192909252602282015260420190565b60405160208183030381529060405280519060200120905092915050565b806101a001516001600160a01b0316336001600160a01b0316146109f8576101a081015160405163a4ce7f2960e01b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b6101a081015160405163680cabbd60e11b81526001600160a01b0391821660048201527f9e56ea094d7a53440eef11fa42b63159fbf703b4ee579494a6ae85afc560359460248201527f00000000000000000000000000000000000000000000000000000000000000009091169063d019577a90604401602060405180830381865afa158015610a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab0919061228d565b610b05576101a0810151604051630b92eb2560e11b81526001600160a01b0390911660048201527f9e56ea094d7a53440eef11fa42b63159fbf703b4ee579494a6ae85afc560359460248201526044016109ef565b6000849003610ba55760008681526020819052604090205460ff16610ba057610b6a8161010001518785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061122f92505050565b610ba0576101008101516040516301d2d55760e31b81526001600160a01b039091166004820152602481018790526044016109ef565b610c47565b6000610bc76040518060200160405280610bc089898c6113d6565b90526107c3565b9050610c0f8261010001518286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061122f92505050565b610c45576101008201516040516301d2d55760e31b81526001600160a01b039091166004820152602481018290526044016109ef565b505b876001600160a01b03168161010001516001600160a01b031603610c89576040516326ab1a1d60e11b81526001600160a01b03891660048201526024016109ef565b86600003610cc35761014081015115610cbe57806101400151604051637a4b6f9760e11b81526004016109ef91815260200190565b610d0c565b8061014001518714610d0c57610140810151151580610ce55750806101200151155b15610d0c57806101400151604051637a4b6f9760e11b81526004016109ef91815260200190565b8060c0015164ffffffffff164210610d4c5760c081015160405163aa2fd92560e01b815242600482015264ffffffffff90911660248201526044016109ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f291a62c8261010001518361016001518461018001516040518463ffffffff1660e01b8152600401610dab93929190612229565b602060405180830381865afa158015610dc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dec919061228d565b610e1e57806101000151816101600151826101800151604051632108c30560e11b81526004016109ef93929190612229565b60e08101516001600160a01b031615801590610e5057508060e001516001600160a01b0316886001600160a01b031614155b15610e875760e0810151604051636075c95560e11b81526001600160a01b03808b16600483015290911660248201526044016109ef565b8060a00151600003610f29577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f79924a98261010001518361016001518461018001516040518463ffffffff1660e01b8152600401610ef293929190612229565b600060405180830381600087803b158015610f0c57600080fd5b505af1158015610f20573d6000803e3d6000fd5b50505050610fc4565b60a08101516080820151600088815260016020526040902054610f4c91906122c0565b11610f7f57608081015160008781526001602052604081208054909190610f749084906122c0565b90915550610fc49050565b6080810151600087815260016020526040902054610f9d91906122c0565b60a082015160405163231795cb60e21b8152600481019290925260248201526044016109ef565b80604001511561119d578051604051630b7e49eb60e21b81526001600160a01b03918216600482015260009182917f000000000000000000000000000000000000000000000000000000000000000090911690632df927ac90602401602060405180830381865afa15801561103d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106191906122d3565b90506001600160a01b038116156110ff578251602084015160405163ec2ce34560e01b81526001600160a01b0384169263ec2ce345926110b7926004016001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156110d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f891906122f0565b9150611166565b82516111129063f511231560e01b611422565b1561114d578251602084015160405163f511231560e01b81526001600160a01b039092169163f5112315916110b79160040190815260200190565b60405163f3c0936360e01b815260040160405180910390fd5b8183606001511461119a576060830151604051633840fc0160e01b81526109ef918491600401918252602082015260400190565b50505b5050505050505050565b6111af6117bb565b506040805160808101825260008082526001600160a01b0394909416602082015290810192909252606082015290565b336001600160a01b0382161461121357604051631144200360e31b81526001600160a01b03821660048201526024016109ef565b506000908152602081905260409020805460ff19166001179055565b60006001600160a01b0384163b1561132a57600080856001600160a01b0316631626ba7e60e01b8686604051602401611269929190612309565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516112a7919061232a565b600060405180830381855afa9150503d80600081146112e2576040519150601f19603f3d011682016040523d82523d6000602084013e6112e7565b606091505b50915091508180156112fa575080516020145b801561132157508051630b135d3f60e11b9061131f90830160209081019084016122f0565b145b925050506113cf565b600080600084516041036113525750505060208201516040830151606084015160001a6113a9565b845160400361138b57602085015160408601519093506001600160ff1b038116925061138360ff82901c601b6122c0565b9150506113a9565b845160405163058676ad60e31b81526004016109ef91815260200190565b6113b58682858561143e565b6001600160a01b0316876001600160a01b03161493505050505b9392505050565b600081815b8481101561141957611405828787848181106113f9576113f9612346565b90506020020135611466565b9150806114118161235c565b9150506113db565b50949350505050565b600061142d83611495565b80156113cf57506113cf83836114c8565b600080600061144f87878787611551565b9150915061145c81611615565b5095945050505050565b60008183106114825760008281526020849052604090206113cf565b60008381526020839052604090206113cf565b60006114a8826301ffc9a760e01b6114c8565b80156106d757506114c1826001600160e01b03196114c8565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d9150600051905082801561153a575060208210155b80156115465750600081115b979650505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611588575060009050600361160c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156115dc573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116055760006001925092505061160c565b9150600090505b94509492505050565b600081600481111561162957611629611942565b036116315750565b600181600481111561164557611645611942565b036116925760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109ef565b60028160048111156116a6576116a6611942565b036116f35760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109ef565b600381600481111561170757611707611942565b0361175f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016109ef565b50565b6040805161012081018252600080825260208201819052918101919091526060810161178c6117bb565b81526020016117996117bb565b8152600060208201819052604082018190526060820181905260809091015290565b6040805160808101909152806000815260200160006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b038116811461175f57600080fd5b803561180d816117ed565b919050565b60008083601f84011261182457600080fd5b50813567ffffffffffffffff81111561183c57600080fd5b60208301915083602082850101111561185457600080fd5b9250929050565b60008060008060008060008060a0898b03121561187757600080fd5b8835611882816117ed565b975060208901359650604089013567ffffffffffffffff808211156118a657600080fd5b6118b28c838d01611812565b909850965060608b01359150808211156118cb57600080fd5b818b0191508b601f8301126118df57600080fd5b8135818111156118ee57600080fd5b8c60208260051b850101111561190357600080fd5b6020830196508095505060808b013591508082111561192157600080fd5b5061192e8b828c01611812565b999c989b5096995094979396929594505050565b634e487b7160e01b600052602160045260246000fd5b6004811061197657634e487b7160e01b600052602160045260246000fd5b9052565b611985828251611958565b6020818101516001600160a01b03169083015260408082015190830152606090810151910152565b82815281516001600160a01b03166020820152610200810160208301516001600160a01b038116604084015250604083015163ffffffff811660608401525060608301516119fe608084018261197a565b506080830151610100611a138185018361197a565b60a085015161018085015260c085015164ffffffffff166101a085015260e08501516101c0850152909301516101e09092019190915292915050565b600060208284031215611a6157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516102a0810167ffffffffffffffff81118282101715611aa257611aa2611a68565b60405290565b600060208284031215611aba57600080fd5b813567ffffffffffffffff80821115611ad257600080fd5b818401915084601f830112611ae657600080fd5b813581811115611af857611af8611a68565b604051601f8201601f19908116603f01168101908382118183101715611b2057611b20611a68565b81604052828152876020848701011115611b3957600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006102a082019050611b6d828451611958565b6020830151611b8760208401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151611baf608084018215159052565b5060a083015160a083015260c0830151611bd460c08401826001600160a01b03169052565b5060e08381015190830152610100808401519083015261012080840151908301526101408084015164ffffffffff908116918401919091526101608085015163ffffffff169084015261018080850151909116908301526101a0808401516001600160a01b03908116918401919091526101c0808501518216908401526101e08085015190840152610200808501511515908401526102208085015190840152610240808501519084015261026080850151908401526102808085015191821681850152905b505092915050565b60006102a08284031215611cb557600080fd5b50919050565b60008060408385031215611cce57600080fd5b50508035926020909101359150565b6004811061175f57600080fd5b803561180d81611cdd565b801515811461175f57600080fd5b803561180d81611cf5565b64ffffffffff8116811461175f57600080fd5b803561180d81611d0e565b63ffffffff8116811461175f57600080fd5b803561180d81611d2c565b60006102a08284031215611d5c57600080fd5b611d64611a7e565b611d6d83611cea565b8152611d7b60208401611802565b60208201526040830135604082015260608301356060820152611da060808401611d03565b608082015260a083013560a0820152611dbb60c08401611802565b60c082015260e0838101359082015261010080840135908201526101208084013590820152610140611dee818501611d21565b90820152610160611e00848201611d3e565b90820152610180611e12848201611d21565b908201526101a0611e24848201611802565b908201526101c0611e36848201611802565b908201526101e08381013590820152610200611e53818501611d03565b90820152610220838101359082015261024080840135908201526102608084013590820152610280611e86818501611802565b908201529392505050565b60005b83811015611eac578181015183820152602001611e94565b50506000910152565b60008151808452611ecd816020860160208601611e91565b601f01601f19169290920160200192915050565b6020815260006113cf6020830184611eb5565b600060208284031215611f0657600080fd5b6040516020810181811067ffffffffffffffff82111715611f2957611f29611a68565b6040529135825250919050565b805161180d81611cdd565b805161180d816117ed565b805161180d81611cf5565b805161180d81611d0e565b805161180d81611d2c565b60006102a08284031215611f8057600080fd5b611f88611a7e565b611f9183611f36565b8152611f9f60208401611f41565b60208201526040830151604082015260608301516060820152611fc460808401611f4c565b608082015260a083015160a0820152611fdf60c08401611f41565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140612012818501611f57565b90820152610160612024848201611f62565b90820152610180612036848201611f57565b908201526101a0612048848201611f41565b908201526101c061205a848201611f41565b908201526101e08381015190820152610200612077818501611f4c565b90820152610220838101519082015261024080840151908201526102608084015190820152610280611e86818501611f41565b6102a081016120c1826120bc85611cea565b611958565b6120cd60208401611802565b6001600160a01b03811660208401525060408301356040830152606083013560608301526120fd60808401611d03565b1515608083015260a0838101359083015261211a60c08401611802565b6001600160a01b031660c083015260e0838101359083015261010080840135908301526101208084013590830152610140612156818501611d21565b64ffffffffff169083015261016061216f848201611d3e565b63ffffffff1690830152610180612187848201611d21565b64ffffffffff16908301526101a06121a0848201611802565b6001600160a01b0316908301526101c06121bb848201611802565b6001600160a01b0316908301526101e083810135908301526102006121e1818501611d03565b151590830152610220838101359083015261024080840135908301526102608084013590830152610280612216818501611802565b6001600160a01b03811684830152611c9a565b6001600160a01b039390931683526020830191909152604082015260600190565b82815260008251612262816020850160208701611e91565b919091016020019392505050565b60006020828403121561228257600080fd5b81356113cf816117ed565b60006020828403121561229f57600080fd5b81516113cf81611cf5565b634e487b7160e01b600052601160045260246000fd5b808201808211156106d7576106d76122aa565b6000602082840312156122e557600080fd5b81516113cf816117ed565b60006020828403121561230257600080fd5b5051919050565b8281526040602082015260006123226040830184611eb5565b949350505050565b6000825161233c818460208701611e91565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b60006001820161236e5761236e6122aa565b506001019056fea26469706673582212205673e4a3db10a432a016ddd014ace640aebf89d5bb2aacabd1503df98aaff72964736f6c63430008100033",
    "sourceMap": "421:8518:91:-:0;;;4672:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4106:773:90;;;;;;;;;;;;;;;;;;;;4851:7:91;;;;;;;;;;-1:-1:-1;;;4851:7:91;;;;-1:-1:-1;;;;;4271:18:90;;;;;4299:45;;;;;4354:27;;;;4564:22;;4790:4:91;;4796:13;;4811:7;;4106:773:90;;4445:95;;4564:22;;4106:773;;4564:22;;:::i;:::-;;;;;;;;;;;;;4554:33;;;;;;4628:7;4611:25;;;;;;;;:::i;:::-;;;;-1:-1:-1;;4611:25:90;;;;;;;;;4601:36;;4611:25;4601:36;;;;4421:280;;;1257:25:119;;;;1298:18;;1291:34;;;;1341:18;;;1334:34;;;;4651:13:90;1384:18:119;;;1377:34;4686:4:90;1427:19:119;;;1420:61;1229:19;;4421:280:90;;;;;;-1:-1:-1;;4421:280:90;;;;;;4411:291;;4421:280;4411:291;;;;4392:310;;4780:38;4756:115;;;1666:25:119;4832:29:90;1707:18:119;;;1700:34;1639:18;;4756:115:90;;;-1:-1:-1;;4756:115:90;;;;;;;;;4746:126;;4756:115;4746:126;;;;4713:159;;-1:-1:-1;421:8518:91;;-1:-1:-1;;;;;;;421:8518:91;14:177:119;93:13;;-1:-1:-1;;;;;135:31:119;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:378::-;284:6;292;300;353:2;341:9;332:7;328:23;324:32;321:52;;;369:1;366;359:12;321:52;392:40;422:9;392:40;:::i;:::-;382:50;;451:49;496:2;485:9;481:18;451:49;:::i;:::-;441:59;;519:49;564:2;553:9;549:18;519:49;:::i;:::-;509:59;;196:378;;;;;:::o;579:414::-;710:3;748:6;742:13;773:1;783:129;797:6;794:1;791:13;783:129;;;895:4;879:14;;;875:25;;869:32;856:11;;;849:53;812:12;783:129;;;-1:-1:-1;967:1:119;931:16;;956:13;;;-1:-1:-1;931:16:119;579:414;-1:-1:-1;579:414:119:o;1492:248::-;421:8518:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c806379502c55116100a25780639788ad55116100715780639788ad55146102bd578063abe93878146102e4578063d06a0d821461030b578063f0209ad614610332578063ffa1ad741461035257600080fd5b806379502c5514610249578063829d37701461027057806383f19a0b14610283578063853b94a01461029657600080fd5b8063365a86fc116100de578063365a86fc146101c2578063382c0cdd14610201578063579bfc30146102145780635b3275e21461022957600080fd5b806301e83272146101105780631da4c2751461013a5780632d5d17fc1461016d5780633644e5151461018d575b600080fd5b61012361011e36600461185b565b610374565b6040516101319291906119ad565b60405180910390f35b61015d610148366004611a4f565b60006020819052908152604090205460ff1681565b6040519015158152602001610131565b61018061017b366004611aa8565b61061c565b6040516101319190611b59565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b604051908152602001610131565b6101e97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610131565b6101b461020f366004611ca2565b6106dd565b610227610222366004611cbb565b610714565b005b61023c610237366004611d49565b61079a565b6040516101319190611ee1565b6101e97f000000000000000000000000000000000000000000000000000000000000000081565b6101b461027e366004611ef4565b6107c3565b6101b4610291366004611ca2565b610893565b6101b47f2b5f73ebb16e8e796c727d020a1a8f0190005ba40559ee87674fb8de78939b1a81565b6101e97f000000000000000000000000000000000000000000000000000000000000000081565b6101b47f000000000000000000000000000000000000000000000000000000000000000081565b6101b47f73af92d8ed4d3261ba61cd686d2f8a9cceb2563cc7c4c5355eb121316fc5358d81565b6101b4610340366004611a4f565b60016020526000908152604090205481565b61023c6040518060400160405280600381526020016218971960e91b81525081565b600061037e611762565b60006103bf89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061061c92505050565b905061040a7f2b5f73ebb16e8e796c727d020a1a8f0190005ba40559ee87674fb8de78939b1a826040516020016103f69190611b59565b604051602081830303815290604052610913565b92506104e98b8b858a8a8a8a604051806101c001604052808a602001516001600160a01b031681526020018a6040015181526020018a60800151151581526020018a60a0015181526020018a60e0015181526020018a610100015181526020018a610180015164ffffffffff1681526020018a6101a001516001600160a01b031681526020018a6101c001516001600160a01b031681526020018a6102000151151581526020018a610220015181526020018a610240015181526020018a610260015181526020018a61028001516001600160a01b03168152506109a4565b604051806101200160405280826102000151610505578c61050c565b826101c001515b6001600160a01b0316815260200182610200015161052f57826101c00151610531565b8c5b6001600160a01b0316815260200182610160015163ffffffff16815260200160405180608001604052808460000151600381111561057157610571611942565b815260200184602001516001600160a01b0316815260200184604001518152602001846060015181525081526020016105b28360c001518460e001516111a7565b8152602001826101200151815260200182610140015164ffffffffff1681526020018261020001516105e55760006105ec565b826101e001515b815260200182610200015161060657826101e00151610609565b60005b8152509150509850989650505050505050565b604080516102a08101825260008082526020808301829052928201819052606082018190526080820181905260a0820181905260c0820181905260e08201819052610100820181905261012082018190526101408201819052610160820181905261018082018190526101a082018190526101c082018190526101e082018190526102008201819052610220820181905261024082018190526102608201819052610280820152825190916106d79184018101908401611f6d565b92915050565b60006106d77f2b5f73ebb16e8e796c727d020a1a8f0190005ba40559ee87674fb8de78939b1a836040516020016103f691906120aa565b60405163f79924a960e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f79924a99061076490339086908690600401612229565b600060405180830381600087803b15801561077e57600080fd5b505af1158015610792573d6000803e3d6000fd5b505050505050565b6060816040516020016107ad9190611b59565b6040516020818303038152906040529050919050565b60007f00000000000000000000000000000000000000000000000000000000000000007f73af92d8ed4d3261ba61cd686d2f8a9cceb2563cc7c4c5355eb121316fc5358d8360405160200161081b9151815260200190565b60408051601f1981840301815290829052610839929160200161224a565b6040516020818303038152906040528051906020012060405160200161087692919061190160f01b81526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050919050565b600061089e826106dd565b90506108bb816108b66101e085016101c08601612270565b6111df565b6108cd6101e083016101c08401612270565b6001600160a01b0316817fe228ae64deb022978896dc961784e5e37437005800b772804f5cf7d66c76f4648460405161090691906120aa565b60405180910390a3919050565b60007f0000000000000000000000000000000000000000000000000000000000000000838360405160200161094992919061224a565b6040516020818303038152906040528051906020012060405160200161098692919061190160f01b81526002810192909252602282015260420190565b60405160208183030381529060405280519060200120905092915050565b806101a001516001600160a01b0316336001600160a01b0316146109f8576101a081015160405163a4ce7f2960e01b81523360048201526001600160a01b0390911660248201526044015b60405180910390fd5b6101a081015160405163680cabbd60e11b81526001600160a01b0391821660048201527f9e56ea094d7a53440eef11fa42b63159fbf703b4ee579494a6ae85afc560359460248201527f00000000000000000000000000000000000000000000000000000000000000009091169063d019577a90604401602060405180830381865afa158015610a8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab0919061228d565b610b05576101a0810151604051630b92eb2560e11b81526001600160a01b0390911660048201527f9e56ea094d7a53440eef11fa42b63159fbf703b4ee579494a6ae85afc560359460248201526044016109ef565b6000849003610ba55760008681526020819052604090205460ff16610ba057610b6a8161010001518785858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061122f92505050565b610ba0576101008101516040516301d2d55760e31b81526001600160a01b039091166004820152602481018790526044016109ef565b610c47565b6000610bc76040518060200160405280610bc089898c6113d6565b90526107c3565b9050610c0f8261010001518286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061122f92505050565b610c45576101008201516040516301d2d55760e31b81526001600160a01b039091166004820152602481018290526044016109ef565b505b876001600160a01b03168161010001516001600160a01b031603610c89576040516326ab1a1d60e11b81526001600160a01b03891660048201526024016109ef565b86600003610cc35761014081015115610cbe57806101400151604051637a4b6f9760e11b81526004016109ef91815260200190565b610d0c565b8061014001518714610d0c57610140810151151580610ce55750806101200151155b15610d0c57806101400151604051637a4b6f9760e11b81526004016109ef91815260200190565b8060c0015164ffffffffff164210610d4c5760c081015160405163aa2fd92560e01b815242600482015264ffffffffff90911660248201526044016109ef565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f291a62c8261010001518361016001518461018001516040518463ffffffff1660e01b8152600401610dab93929190612229565b602060405180830381865afa158015610dc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dec919061228d565b610e1e57806101000151816101600151826101800151604051632108c30560e11b81526004016109ef93929190612229565b60e08101516001600160a01b031615801590610e5057508060e001516001600160a01b0316886001600160a01b031614155b15610e875760e0810151604051636075c95560e11b81526001600160a01b03808b16600483015290911660248201526044016109ef565b8060a00151600003610f29577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f79924a98261010001518361016001518461018001516040518463ffffffff1660e01b8152600401610ef293929190612229565b600060405180830381600087803b158015610f0c57600080fd5b505af1158015610f20573d6000803e3d6000fd5b50505050610fc4565b60a08101516080820151600088815260016020526040902054610f4c91906122c0565b11610f7f57608081015160008781526001602052604081208054909190610f749084906122c0565b90915550610fc49050565b6080810151600087815260016020526040902054610f9d91906122c0565b60a082015160405163231795cb60e21b8152600481019290925260248201526044016109ef565b80604001511561119d578051604051630b7e49eb60e21b81526001600160a01b03918216600482015260009182917f000000000000000000000000000000000000000000000000000000000000000090911690632df927ac90602401602060405180830381865afa15801561103d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106191906122d3565b90506001600160a01b038116156110ff578251602084015160405163ec2ce34560e01b81526001600160a01b0384169263ec2ce345926110b7926004016001600160a01b03929092168252602082015260400190565b602060405180830381865afa1580156110d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f891906122f0565b9150611166565b82516111129063f511231560e01b611422565b1561114d578251602084015160405163f511231560e01b81526001600160a01b039092169163f5112315916110b79160040190815260200190565b60405163f3c0936360e01b815260040160405180910390fd5b8183606001511461119a576060830151604051633840fc0160e01b81526109ef918491600401918252602082015260400190565b50505b5050505050505050565b6111af6117bb565b506040805160808101825260008082526001600160a01b0394909416602082015290810192909252606082015290565b336001600160a01b0382161461121357604051631144200360e31b81526001600160a01b03821660048201526024016109ef565b506000908152602081905260409020805460ff19166001179055565b60006001600160a01b0384163b1561132a57600080856001600160a01b0316631626ba7e60e01b8686604051602401611269929190612309565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516112a7919061232a565b600060405180830381855afa9150503d80600081146112e2576040519150601f19603f3d011682016040523d82523d6000602084013e6112e7565b606091505b50915091508180156112fa575080516020145b801561132157508051630b135d3f60e11b9061131f90830160209081019084016122f0565b145b925050506113cf565b600080600084516041036113525750505060208201516040830151606084015160001a6113a9565b845160400361138b57602085015160408601519093506001600160ff1b038116925061138360ff82901c601b6122c0565b9150506113a9565b845160405163058676ad60e31b81526004016109ef91815260200190565b6113b58682858561143e565b6001600160a01b0316876001600160a01b03161493505050505b9392505050565b600081815b8481101561141957611405828787848181106113f9576113f9612346565b90506020020135611466565b9150806114118161235c565b9150506113db565b50949350505050565b600061142d83611495565b80156113cf57506113cf83836114c8565b600080600061144f87878787611551565b9150915061145c81611615565b5095945050505050565b60008183106114825760008281526020849052604090206113cf565b60008381526020839052604090206113cf565b60006114a8826301ffc9a760e01b6114c8565b80156106d757506114c1826001600160e01b03196114c8565b1592915050565b604080516001600160e01b03198316602480830191909152825180830390910181526044909101909152602080820180516001600160e01b03166301ffc9a760e01b178152825160009392849283928392918391908a617530fa92503d9150600051905082801561153a575060208210155b80156115465750600081115b979650505050505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115611588575060009050600361160c565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156115dc573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116055760006001925092505061160c565b9150600090505b94509492505050565b600081600481111561162957611629611942565b036116315750565b600181600481111561164557611645611942565b036116925760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016109ef565b60028160048111156116a6576116a6611942565b036116f35760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016109ef565b600381600481111561170757611707611942565b0361175f5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016109ef565b50565b6040805161012081018252600080825260208201819052918101919091526060810161178c6117bb565b81526020016117996117bb565b8152600060208201819052604082018190526060820181905260809091015290565b6040805160808101909152806000815260200160006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b038116811461175f57600080fd5b803561180d816117ed565b919050565b60008083601f84011261182457600080fd5b50813567ffffffffffffffff81111561183c57600080fd5b60208301915083602082850101111561185457600080fd5b9250929050565b60008060008060008060008060a0898b03121561187757600080fd5b8835611882816117ed565b975060208901359650604089013567ffffffffffffffff808211156118a657600080fd5b6118b28c838d01611812565b909850965060608b01359150808211156118cb57600080fd5b818b0191508b601f8301126118df57600080fd5b8135818111156118ee57600080fd5b8c60208260051b850101111561190357600080fd5b6020830196508095505060808b013591508082111561192157600080fd5b5061192e8b828c01611812565b999c989b5096995094979396929594505050565b634e487b7160e01b600052602160045260246000fd5b6004811061197657634e487b7160e01b600052602160045260246000fd5b9052565b611985828251611958565b6020818101516001600160a01b03169083015260408082015190830152606090810151910152565b82815281516001600160a01b03166020820152610200810160208301516001600160a01b038116604084015250604083015163ffffffff811660608401525060608301516119fe608084018261197a565b506080830151610100611a138185018361197a565b60a085015161018085015260c085015164ffffffffff166101a085015260e08501516101c0850152909301516101e09092019190915292915050565b600060208284031215611a6157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b6040516102a0810167ffffffffffffffff81118282101715611aa257611aa2611a68565b60405290565b600060208284031215611aba57600080fd5b813567ffffffffffffffff80821115611ad257600080fd5b818401915084601f830112611ae657600080fd5b813581811115611af857611af8611a68565b604051601f8201601f19908116603f01168101908382118183101715611b2057611b20611a68565b81604052828152876020848701011115611b3957600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006102a082019050611b6d828451611958565b6020830151611b8760208401826001600160a01b03169052565b5060408301516040830152606083015160608301526080830151611baf608084018215159052565b5060a083015160a083015260c0830151611bd460c08401826001600160a01b03169052565b5060e08381015190830152610100808401519083015261012080840151908301526101408084015164ffffffffff908116918401919091526101608085015163ffffffff169084015261018080850151909116908301526101a0808401516001600160a01b03908116918401919091526101c0808501518216908401526101e08085015190840152610200808501511515908401526102208085015190840152610240808501519084015261026080850151908401526102808085015191821681850152905b505092915050565b60006102a08284031215611cb557600080fd5b50919050565b60008060408385031215611cce57600080fd5b50508035926020909101359150565b6004811061175f57600080fd5b803561180d81611cdd565b801515811461175f57600080fd5b803561180d81611cf5565b64ffffffffff8116811461175f57600080fd5b803561180d81611d0e565b63ffffffff8116811461175f57600080fd5b803561180d81611d2c565b60006102a08284031215611d5c57600080fd5b611d64611a7e565b611d6d83611cea565b8152611d7b60208401611802565b60208201526040830135604082015260608301356060820152611da060808401611d03565b608082015260a083013560a0820152611dbb60c08401611802565b60c082015260e0838101359082015261010080840135908201526101208084013590820152610140611dee818501611d21565b90820152610160611e00848201611d3e565b90820152610180611e12848201611d21565b908201526101a0611e24848201611802565b908201526101c0611e36848201611802565b908201526101e08381013590820152610200611e53818501611d03565b90820152610220838101359082015261024080840135908201526102608084013590820152610280611e86818501611802565b908201529392505050565b60005b83811015611eac578181015183820152602001611e94565b50506000910152565b60008151808452611ecd816020860160208601611e91565b601f01601f19169290920160200192915050565b6020815260006113cf6020830184611eb5565b600060208284031215611f0657600080fd5b6040516020810181811067ffffffffffffffff82111715611f2957611f29611a68565b6040529135825250919050565b805161180d81611cdd565b805161180d816117ed565b805161180d81611cf5565b805161180d81611d0e565b805161180d81611d2c565b60006102a08284031215611f8057600080fd5b611f88611a7e565b611f9183611f36565b8152611f9f60208401611f41565b60208201526040830151604082015260608301516060820152611fc460808401611f4c565b608082015260a083015160a0820152611fdf60c08401611f41565b60c082015260e0838101519082015261010080840151908201526101208084015190820152610140612012818501611f57565b90820152610160612024848201611f62565b90820152610180612036848201611f57565b908201526101a0612048848201611f41565b908201526101c061205a848201611f41565b908201526101e08381015190820152610200612077818501611f4c565b90820152610220838101519082015261024080840151908201526102608084015190820152610280611e86818501611f41565b6102a081016120c1826120bc85611cea565b611958565b6120cd60208401611802565b6001600160a01b03811660208401525060408301356040830152606083013560608301526120fd60808401611d03565b1515608083015260a0838101359083015261211a60c08401611802565b6001600160a01b031660c083015260e0838101359083015261010080840135908301526101208084013590830152610140612156818501611d21565b64ffffffffff169083015261016061216f848201611d3e565b63ffffffff1690830152610180612187848201611d21565b64ffffffffff16908301526101a06121a0848201611802565b6001600160a01b0316908301526101c06121bb848201611802565b6001600160a01b0316908301526101e083810135908301526102006121e1818501611d03565b151590830152610220838101359083015261024080840135908301526102608084013590830152610280612216818501611802565b6001600160a01b03811684830152611c9a565b6001600160a01b039390931683526020830191909152604082015260600190565b82815260008251612262816020850160208701611e91565b919091016020019392505050565b60006020828403121561228257600080fd5b81356113cf816117ed565b60006020828403121561229f57600080fd5b81516113cf81611cf5565b634e487b7160e01b600052601160045260246000fd5b808201808211156106d7576106d76122aa565b6000602082840312156122e557600080fd5b81516113cf816117ed565b60006020828403121561230257600080fd5b5051919050565b8281526040602082015260006123226040830184611eb5565b949350505050565b6000825161233c818460208701611e91565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b60006001820161236e5761236e6122aa565b506001019056fea26469706673582212205673e4a3db10a432a016ddd014ace640aebf89d5bb2aacabd1503df98aaff72964736f6c63430008100033",
    "sourceMap": "421:8518:91:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6362:2574;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2224:46:90;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;4591:14:119;;4584:22;4566:41;;4554:2;4539:18;2224:46:90;4426:187:119;6146:153:91;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1134:41:90:-;;;;;;;;8438:25:119;;;8426:2;8411:18;1134:41:90;8292:177:119;1243:27:90;;;;;;;;-1:-1:-1;;;;;8654:32:119;;;8636:51;;8624:2;8609:18;1243:27:90;8474:219:119;5031:164:91;;;;;;:::i;:::-;;:::i;5801:137:90:-;;;;;;:::i;:::-;;:::i;:::-;;5862:135:91;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;1327:33:90:-;;;;;5251:322;;;;;;:::i;:::-;;:::i;5438:273:91:-;;;;;;:::i;:::-;;:::i;605:569::-;;649:525;605:569;;1276:45:90;;;;;1181:55;;;;;1367:108;;1416:59;1367:108;;2422:46;;;;;;:::i;:::-;;;;;;;;;;;;;;490:38:91;;;;;;;;;;;;;;;-1:-1:-1;;;490:38:91;;;;;6362:2574;6602:20;6624:36;;:::i;:::-;6704:24;6731:32;6750:12;;6731:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6731:18:91;;-1:-1:-1;;;6731:32:91:i;:::-;6704:59;;6819:57;649:525;6866:8;6855:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;6819:16;:57::i;:::-;6804:72;;6921:1015;6950:8;6972:17;7003:12;7029:22;;7065:9;;7088:838;;;;;;;;7138:8;:26;;;-1:-1:-1;;;;;7088:838:91;;;;;7196:8;:21;;;7088:838;;;;7268:8;:40;;;7088:838;;;;;;7354:8;:35;;;7088:838;;;;7421:8;:21;;;7088:838;;;;7482:8;:29;;;7088:838;;;;7541:8;:19;;;7088:838;;;;;;7595:8;:24;;;-1:-1:-1;;;;;7088:838:91;;;;;7647:8;:17;;;-1:-1:-1;;;;;7088:838:91;;;;;7691:8;:16;;;7088:838;;;;;;7744:8;:26;;;7088:838;;;;7800:8;:19;;;7088:838;;;;7844:8;:14;;;7088:838;;;;7890:8;:21;;;-1:-1:-1;;;;;7088:838:91;;;;6921:15;:1015::i;:::-;7995:934;;;;;;;;8037:8;:16;;;:47;;8076:8;8037:47;;;8056:8;:17;;;8037:47;-1:-1:-1;;;;;7995:934:91;;;;;8108:8;:16;;;:47;;8138:8;:17;;;8108:47;;;8127:8;8108:47;-1:-1:-1;;;;;7995:934:91;;;;;8179:8;:17;;;7995:934;;;;;;8222:239;;;;;;;;8267:8;:27;;;8222:239;;;;;;;;:::i;:::-;;;;;8326:8;:26;;;-1:-1:-1;;;;;8222:239:91;;;;;8374:8;:21;;;8222:239;;;;8421:8;:25;;;8222:239;;;7995:934;;;;8483:133;8532:8;:22;;;8580:8;:21;;;8483:16;:133::i;:::-;7995:934;;;;8651:8;:28;;;7995:934;;;;8714:8;:28;;;7995:934;;;;;;8772:8;:16;;;:57;;8827:1;8772:57;;;8791:8;:25;;;8772:57;7995:934;;;;8861:8;:16;;;:57;;8893:8;:25;;;8861:57;;;8888:1;8861:57;7995:934;;;7983:946;;6662:2274;6362:2574;;;;;;;;;;;:::o;6146:153::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6256:36:91;;-1:-1:-1;;6256:36:91;;;;;;;;;;:::i;:::-;6249:43;6146:153;-1:-1:-1;;6146:153:91:o;5031:164::-;5105:7;5131:57;649:525;5178:8;5167:20;;;;;;;;:::i;5801:137:90:-;5876:55;;-1:-1:-1;;;5876:55:90;;-1:-1:-1;;;;;5876:12:90;:24;;;;:55;;5901:10;;5913;;5925:5;;5876:55;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5801:137;;:::o;5862:135:91:-;5939:12;5981:8;5970:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;5963:27;;5862:135;;;:::o;5251:322:90:-;5338:7;5415:30;1416:59;5526:13;5515:25;;;;;;20100:13:119;20082:32;;20070:2;20055:18;;19872:248;5515:25:90;;;;-1:-1:-1;;5515:25:90;;;;;;;;;;5457:97;;;5515:25;5457:97;;:::i;:::-;;;;;;;;;;;;;5447:108;;;;;;5374:191;;;;;;;;-1:-1:-1;;;20747:27:119;;20799:1;20790:11;;20783:27;;;;20835:2;20826:12;;20819:28;20872:2;20863:12;;20489:392;5374:191:90;;;;;;;;;;;;;5364:202;;;;;;5357:209;;5251:322;;;:::o;5438:273:91:-;5506:20;5553:25;5569:8;5553:15;:25::i;:::-;5538:40;-1:-1:-1;5588:46:91;5538:40;5616:17;;;;;;;;:::i;:::-;5588:13;:46::i;:::-;5676:17;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5649:55:91;5662:12;5649:55;5695:8;5649:55;;;;;;:::i;:::-;;;;;;;;5438:273;;;:::o;7156:332:90:-;7283:7;7360:16;7422;7440:15;7388:81;;;;;;;;;:::i;:::-;;;;;;;;;;;;;7378:92;;;;;;7319:161;;;;;;;;-1:-1:-1;;;20747:27:119;;20799:1;20790:11;;20783:27;;;;20835:2;20826:12;;20819:28;20872:2;20863:12;;20489:392;7319:161:90;;;;;;;;;;;;;7309:172;;;;;;7302:179;;7156:332;;;;:::o;8351:5323::-;8664:8;:21;;;-1:-1:-1;;;;;8650:35:90;:10;-1:-1:-1;;;;;8650:35:90;;8646:155;;8766:21;;;;8708:82;;-1:-1:-1;;;8708:82:90;;8740:10;8708:82;;;21350:34:119;-1:-1:-1;;;;;21420:15:119;;;21400:18;;;21393:43;21285:18;;8708:82:90;;;;;;;;8646:155;8826:21;;;;8815:57;;-1:-1:-1;;;8815:57:90;;-1:-1:-1;;;;;21639:32:119;;;8815:57:90;;;21621:51:119;266:28:76;21688:18:119;;;21681:34;8815:3:90;:10;;;;;;21594:18:119;;8815:57:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8810:178;;8924:21;;;;8895:82;;-1:-1:-1;;;8895:82:90;;-1:-1:-1;;;;;21639:32:119;;;8895:82:90;;;21621:51:119;266:28:76;21688:18:119;;;21681:34;21594:18;;8895:82:90;21447:274:119;8810:178:90;9100:1;9067:34;;;9063:1025;;9163:13;:27;;;;;;;;;;;;;9158:293;;9215:83;9255:8;:17;;;9274:12;9288:9;;9215:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9215:39:90;;-1:-1:-1;;;9215:83:90:i;:::-;9210:227;;9376:17;;;;9329:89;;-1:-1:-1;;;9329:89:90;;-1:-1:-1;;;;;21639:32:119;;;9329:89:90;;;21621:51:119;21688:18;;;21681:34;;;21594:18;;9329:89:90;21447:274:119;9210:227:90;9063:1025;;;9520:25;9548:287;9586:235;;;;;;;;9647:155;9713:22;;9767:12;9647:32;:155::i;:::-;9586:235;;9548:20;:287::i;:::-;9520:315;;9854:88;9894:8;:17;;;9913;9932:9;;9854:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9854:39:90;;-1:-1:-1;;;9854:88:90:i;:::-;9849:229;;10016:17;;;;9969:94;;-1:-1:-1;;;9969:94:90;;-1:-1:-1;;;;;21639:32:119;;;9969:94:90;;;21621:51:119;21688:18;;;21681:34;;;21594:18;;9969:94:90;21447:274:119;9849:229:90;9467:621;9063:1025;10165:8;-1:-1:-1;;;;;10144:29:90;:8;:17;;;-1:-1:-1;;;;;10144:29:90;;10140:104;;10196:37;;-1:-1:-1;;;10196:37:90;;-1:-1:-1;;;;;8654:32:119;;10196:37:90;;;8636:51:119;8609:18;;10196:37:90;8474:219:119;10140:104:90;10296:17;10317:1;10296:22;10292:500;;10338:26;;;;:31;10334:152;;10442:8;:26;;;10396:75;;-1:-1:-1;;;10396:75:90;;;;;;8438:25:119;;8426:2;8411:18;;8292:177;10334:152:90;10292:500;;;10541:8;:26;;;10520:17;:47;10516:266;;10591:26;;;;:31;;;:52;;;10627:8;:16;;;10626:17;10591:52;10587:181;;;10720:8;:26;;;10674:75;;-1:-1:-1;;;10674:75:90;;;;;;8438:25:119;;8426:2;8411:18;;8292:177;10587:181:90;10866:8;:19;;;10847:38;;:15;:38;10843:146;;10956:19;;;;10908:70;;-1:-1:-1;;;10908:70:90;;10927:15;10908:70;;;22357:25:119;22430:12;22418:25;;;22398:18;;;22391:53;22330:18;;10908:70:90;22184:266:119;10843:146:90;11045:12;-1:-1:-1;;;;;11045:26:90;;11072:8;:17;;;11091:8;:19;;;11112:8;:14;;;11045:82;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11040:296;;11205:8;:17;;;11252:8;:19;;;11296:8;:14;;;11150:175;;-1:-1:-1;;;11150:175:90;;;;;;;;;;:::i;11040:296::-;11409:24;;;;-1:-1:-1;;;;;11409:38:90;;;;;:78;;;11463:8;:24;;;-1:-1:-1;;;;;11451:36:90;:8;-1:-1:-1;;;;;11451:36:90;;;11409:78;11405:198;;;11565:24;;;;11510:82;;-1:-1:-1;;;11510:82:90;;-1:-1:-1;;;;;21368:15:119;;;11510:82:90;;;21350:34:119;21420:15;;;21400:18;;;21393:43;21285:18;;11510:82:90;21138:304:119;11405:198:90;11617:8;:29;;;11650:1;11617:34;11613:723;;11752:12;-1:-1:-1;;;;;11752:24:90;;11777:8;:17;;;11796:8;:19;;;11817:8;:14;;;11752:80;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11613:723;;;11905:29;;;;11880:21;;;;11853:24;;;;:10;:24;;;;;;:48;;11880:21;11853:48;:::i;:::-;:81;11849:487;;12046:21;;;;12018:24;;;;:10;:24;;;;;:49;;:24;;;:49;;12046:21;;12018:49;:::i;:::-;;;;-1:-1:-1;11849:487:90;;-1:-1:-1;11849:487:90;;12235:21;;;;12208:24;;;;:10;:24;;;;;;:48;;12235:21;12208:48;:::i;:::-;12281:29;;;;12155:170;;-1:-1:-1;;;12155:170:90;;;;;22891:25:119;;;;22932:18;;;22925:34;22864:18;;12155:170:90;22717:248:119;11849:487:90;12406:8;:40;;;12402:1266;;;12574:26;;12539:62;;-1:-1:-1;;;12539:62:90;;-1:-1:-1;;;;;8654:32:119;;;12539:62:90;;;8636:51:119;12462:26:90;;;;12539:6;:34;;;;;;8609:18:119;;12539:62:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12502:99;-1:-1:-1;;;;;;12619:31:90;;;12615:717;;12802:26;;12839:21;;;;12740:139;;-1:-1:-1;;;12740:139:90;;-1:-1:-1;;;;;12740:32:90;;;;;:139;;;;-1:-1:-1;;;;;21639:32:119;;;;21621:51;;21703:2;21688:18;;21681:34;21609:2;21594:18;;21447:274;12740:139:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12719:160;;12615:717;;;12936:26;;12904:87;;-1:-1:-1;;;12904:31:90;:87::i;:::-;12900:432;;;13085:26;;13133:21;;;;13076:79;;-1:-1:-1;;;13076:79:90;;-1:-1:-1;;;;;13076:56:90;;;;;;:79;;;;8438:25:119;;;8426:2;8411:18;;8292:177;12900:432:90;13284:33;;-1:-1:-1;;;13284:33:90;;;;;;;;;;;12900:432;13389:18;13350:8;:35;;;:57;13346:312;;13589:35;;;;13474:169;;-1:-1:-1;;;13474:169:90;;;;13539:18;;13474:169;;22891:25:119;;;22947:2;22932:18;;22925:34;22879:2;22864:18;;22717:248;13346:312:90;12448:1220;;12402:1266;8351:5323;;;;;;;;:::o;2528:160:0:-;2604:12;;:::i;:::-;-1:-1:-1;2635:46:0;;;;;;;;-1:-1:-1;2635:46:0;;;-1:-1:-1;;;;;2635:46:0;;;;;;;;;;;;;;;;;;;;2528:160::o;7709:238:90:-;7795:10;-1:-1:-1;;;;;7795:22:90;;;7791:105;;7840:45;;-1:-1:-1;;;7840:45:90;;-1:-1:-1;;;;;8654:32:119;;7840:45:90;;;8636:51:119;8609:18;;7840:45:90;8474:219:119;7791:105:90;-1:-1:-1;7906:13:90;:27;;;;;;;;;;:34;;-1:-1:-1;;7906:34:90;7936:4;7906:34;;;7709:238::o;1541:1696:85:-;1677:4;-1:-1:-1;;;;;1759:18:85;;;:22;1755:1476;;1798:12;1812:19;1835:6;-1:-1:-1;;;;;1835:17:85;1893:34;;;1929:4;1935:9;1870:75;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;1870:75:85;;;;;;;;;;;;;;-1:-1:-1;;;;;1870:75:85;-1:-1:-1;;;;;;1870:75:85;;;;;;;;;;1835:124;;;;1870:75;1835:124;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1797:162;;;;1996:7;:46;;;;;2023:6;:13;2040:2;2023:19;1996:46;:142;;;;-1:-1:-1;2062:29:85;;-1:-1:-1;;;2103:34:85;2062:29;;;;;;;;;;;;:::i;:::-;:76;1996:142;1973:165;;;;;;1755:1476;2226:9;2249;2272:7;2348:9;:16;2368:2;2348:22;2344:817;;-1:-1:-1;;;2447:4:85;2432:20;;2426:27;2500:4;2485:20;;2479:27;2561:4;2546:20;;2540:27;2537:1;2532:36;2344:817;;;2686:9;:16;2706:2;2686:22;2682:479;;2814:4;2799:20;;2793:27;2868:4;2853:20;;2847:27;2793;;-1:-1:-1;;;;;;2914:80:85;;;-1:-1:-1;3022:25:85;3038:3;3023:18;;;3045:2;3022:25;:::i;:::-;3012:36;;2710:353;2682:479;;;3127:9;:16;3094:52;;-1:-1:-1;;;3094:52:85;;;;;;8438:25:119;;8426:2;8411:18;;8292:177;2682:479:85;3192:28;3206:4;3212:1;3215;3218;3192:13;:28::i;:::-;-1:-1:-1;;;;;3182:38:85;:6;-1:-1:-1;;;;;3182:38:85;;3175:45;;;;;1755:1476;1541:1696;;;;;:::o;2331:300:60:-;2424:7;2466:4;2424:7;2480:116;2500:16;;;2480:116;;;2552:33;2562:12;2576:5;;2582:1;2576:8;;;;;;;:::i;:::-;;;;;;;2552:9;:33::i;:::-;2537:48;-1:-1:-1;2518:3:60;;;;:::i;:::-;;;;2480:116;;;-1:-1:-1;2612:12:60;2331:300;-1:-1:-1;;;;2331:300:60:o;1349:282:62:-;1436:4;1543:23;1558:7;1543:14;:23::i;:::-;:81;;;;;1570:54;1603:7;1612:11;1570:32;:54::i;6598:232:59:-;6683:7;6703:17;6722:18;6744:25;6755:4;6761:1;6764;6767;6744:10;:25::i;:::-;6702:67;;;;6779:18;6791:5;6779:11;:18::i;:::-;-1:-1:-1;6814:9:59;6598:232;-1:-1:-1;;;;;6598:232:59:o;9205:147:60:-;9268:7;9298:1;9294;:5;:51;;9426:13;9517:15;;;9552:4;9545:15;;;9598:4;9582:21;;9294:51;;;9426:13;9517:15;;;9552:4;9545:15;;;9598:4;9582:21;;9302:20;9358:261;704:427:62;768:4;975:68;1008:7;-1:-1:-1;;;975:32:62;:68::i;:::-;:149;;;;-1:-1:-1;1060:64:62;1093:7;-1:-1:-1;;;;;;1060:32:62;:64::i;:::-;1059:65;956:168;704:427;-1:-1:-1;;704:427:62:o;4421:647::-;4592:71;;;-1:-1:-1;;;;;;25001:33:119;;4592:71:62;;;;24983:52:119;;;;4592:71:62;;;;;;;;;;24956:18:119;;;;4592:71:62;;;;;;;;;-1:-1:-1;;;;;4592:71:62;-1:-1:-1;;;4592:71:62;;;4871:20;;4523:4;;4592:71;4523:4;;;;;;4592:71;4523:4;;4871:20;4836:7;4829:5;4818:86;4807:97;;4931:16;4917:30;;4981:4;4975:11;4960:26;;5013:7;:29;;;;;5038:4;5024:10;:18;;5013:29;:48;;;;;5060:1;5046:11;:15;5013:48;5006:55;4421:647;-1:-1:-1;;;;;;;4421:647:62:o;5009:1456:59:-;5097:7;;6021:66;6008:79;;6004:161;;;-1:-1:-1;6119:1:59;;-1:-1:-1;6123:30:59;6103:51;;6004:161;6276:24;;;6259:14;6276:24;;;;;;;;;25273:25:119;;;25346:4;25334:17;;25314:18;;;25307:45;;;;25368:18;;;25361:34;;;25411:18;;;25404:34;;;6276:24:59;;25245:19:119;;6276:24:59;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6276:24:59;;-1:-1:-1;;6276:24:59;;;-1:-1:-1;;;;;;;6314:20:59;;6310:101;;6366:1;6370:29;6350:50;;;;;;;6310:101;6429:6;-1:-1:-1;6437:20:59;;-1:-1:-1;5009:1456:59;;;;;;;;:::o;570:511::-;647:20;638:5;:29;;;;;;;;:::i;:::-;;634:441;;570:511;:::o;634:441::-;743:29;734:5;:38;;;;;;;;:::i;:::-;;730:345;;788:34;;-1:-1:-1;;;788:34:59;;25651:2:119;788:34:59;;;25633:21:119;25690:2;25670:18;;;25663:30;25729:26;25709:18;;;25702:54;25773:18;;788:34:59;25449:348:119;730:345:59;852:35;843:5;:44;;;;;;;;:::i;:::-;;839:236;;903:41;;-1:-1:-1;;;903:41:59;;26004:2:119;903:41:59;;;25986:21:119;26043:2;26023:18;;;26016:30;26082:33;26062:18;;;26055:61;26133:18;;903:41:59;25802:355:119;839:236:59;974:30;965:5;:39;;;;;;;;:::i;:::-;;961:114;;1020:44;;-1:-1:-1;;;1020:44:59;;26364:2:119;1020:44:59;;;26346:21:119;26403:2;26383:18;;;26376:30;26442:34;26422:18;;;26415:62;-1:-1:-1;;;26493:18:119;;;26486:32;26535:19;;1020:44:59;26162:398:119;961:114:59;570:511;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:131:119:-;-1:-1:-1;;;;;89:31:119;;79:42;;69:70;;135:1;132;125:12;150:134;218:20;;247:31;218:20;247:31;:::i;:::-;150:134;;;:::o;289:347::-;340:8;350:6;404:3;397:4;389:6;385:17;381:27;371:55;;422:1;419;412:12;371:55;-1:-1:-1;445:20:119;;488:18;477:30;;474:50;;;520:1;517;510:12;474:50;557:4;549:6;545:17;533:29;;609:3;602:4;593:6;585;581:19;577:30;574:39;571:59;;;626:1;623;616:12;571:59;289:347;;;;;:::o;641:1394::-;785:6;793;801;809;817;825;833;841;894:3;882:9;873:7;869:23;865:33;862:53;;;911:1;908;901:12;862:53;950:9;937:23;969:31;994:5;969:31;:::i;:::-;1019:5;-1:-1:-1;1071:2:119;1056:18;;1043:32;;-1:-1:-1;1126:2:119;1111:18;;1098:32;1149:18;1179:14;;;1176:34;;;1206:1;1203;1196:12;1176:34;1245:58;1295:7;1286:6;1275:9;1271:22;1245:58;:::i;:::-;1322:8;;-1:-1:-1;1219:84:119;-1:-1:-1;1410:2:119;1395:18;;1382:32;;-1:-1:-1;1426:16:119;;;1423:36;;;1455:1;1452;1445:12;1423:36;1493:8;1482:9;1478:24;1468:34;;1540:7;1533:4;1529:2;1525:13;1521:27;1511:55;;1562:1;1559;1552:12;1511:55;1602:2;1589:16;1628:2;1620:6;1617:14;1614:34;;;1644:1;1641;1634:12;1614:34;1697:7;1692:2;1682:6;1679:1;1675:14;1671:2;1667:23;1663:32;1660:45;1657:65;;;1718:1;1715;1708:12;1657:65;1749:2;1745;1741:11;1731:21;;1771:6;1761:16;;;1830:3;1819:9;1815:19;1802:33;1786:49;;1860:2;1850:8;1847:16;1844:36;;;1876:1;1873;1866:12;1844:36;;1915:60;1967:7;1956:8;1945:9;1941:24;1915:60;:::i;:::-;641:1394;;;;-1:-1:-1;641:1394:119;;-1:-1:-1;641:1394:119;;;;;;1994:8;-1:-1:-1;;;641:1394:119:o;2248:127::-;2309:10;2304:3;2300:20;2297:1;2290:31;2340:4;2337:1;2330:15;2364:4;2361:1;2354:15;2380:236;2460:1;2453:5;2450:12;2440:143;;2505:10;2500:3;2496:20;2493:1;2486:31;2540:4;2537:1;2530:15;2568:4;2565:1;2558:15;2440:143;2592:18;;2380:236::o;2621:302::-;2680:43;2719:3;2711:5;2705:12;2680:43;:::i;:::-;2776:4;2765:16;;;2759:23;-1:-1:-1;;;;;2755:49:119;2739:14;;;2732:73;2854:4;2843:16;;;2837:23;2821:14;;;2814:47;2910:4;2899:16;;;2893:23;2877:14;;2870:47;2621:302::o;3029:1111::-;3252:25;;;3305:13;;-1:-1:-1;;;;;2106:31:119;3335:2;3320:18;;2094:44;3239:3;3224:19;;3386:2;3374:15;;3368:22;-1:-1:-1;;;;;2106:31:119;;3447:2;3432:18;;2094:44;-1:-1:-1;3500:2:119;3488:15;;3482:22;2225:10;2214:22;;3562:2;3547:18;;2202:35;3513:53;3615:2;3607:6;3603:15;3597:22;3628:60;3683:3;3672:9;3668:19;3652:14;3628:60;:::i;:::-;;3737:3;3729:6;3725:16;3719:23;3761:3;3773:59;3828:2;3817:9;3813:18;3797:14;3773:59;:::i;:::-;3887:4;3875:17;;3869:24;3863:3;3848:19;;3841:53;3943:4;3931:17;;3925:24;3004:12;2993:24;4007:3;3992:19;;2981:37;4067:4;4055:17;;4049:24;4043:3;4028:19;;4021:53;4117:15;;;4111:22;4105:3;4090:19;;;4083:51;;;;3029:1111;;-1:-1:-1;;3029:1111:119:o;4145:180::-;4204:6;4257:2;4245:9;4236:7;4232:23;4228:32;4225:52;;;4273:1;4270;4263:12;4225:52;-1:-1:-1;4296:23:119;;4145:180;-1:-1:-1;4145:180:119:o;4618:127::-;4679:10;4674:3;4670:20;4667:1;4660:31;4710:4;4707:1;4700:15;4734:4;4731:1;4724:15;4750:247;4817:2;4811:9;4859:3;4847:16;;4893:18;4878:34;;4914:22;;;4875:62;4872:88;;;4940:18;;:::i;:::-;4976:2;4969:22;4750:247;:::o;5002:921::-;5070:6;5123:2;5111:9;5102:7;5098:23;5094:32;5091:52;;;5139:1;5136;5129:12;5091:52;5179:9;5166:23;5208:18;5249:2;5241:6;5238:14;5235:34;;;5265:1;5262;5255:12;5235:34;5303:6;5292:9;5288:22;5278:32;;5348:7;5341:4;5337:2;5333:13;5329:27;5319:55;;5370:1;5367;5360:12;5319:55;5406:2;5393:16;5428:2;5424;5421:10;5418:36;;;5434:18;;:::i;:::-;5509:2;5503:9;5477:2;5563:13;;-1:-1:-1;;5559:22:119;;;5583:2;5555:31;5551:40;5539:53;;;5607:18;;;5627:22;;;5604:46;5601:72;;;5653:18;;:::i;:::-;5693:10;5689:2;5682:22;5728:2;5720:6;5713:18;5768:7;5763:2;5758;5754;5750:11;5746:20;5743:33;5740:53;;;5789:1;5786;5779:12;5740:53;5845:2;5840;5836;5832:11;5827:2;5819:6;5815:15;5802:46;5890:1;5868:15;;;5885:2;5864:24;5857:35;;;;-1:-1:-1;5872:6:119;5002:921;-1:-1:-1;;;;;5002:921:119:o;5928:2359::-;6074:4;6116:3;6105:9;6101:19;6093:27;;6129:50;6169:9;6160:6;6154:13;6129:50;:::i;:::-;6226:4;6218:6;6214:17;6208:24;6241:54;6289:4;6278:9;6274:20;6260:12;-1:-1:-1;;;;;2106:31:119;2094:44;;2040:104;6241:54;;6351:4;6343:6;6339:17;6333:24;6326:4;6315:9;6311:20;6304:54;6414:4;6406:6;6402:17;6396:24;6389:4;6378:9;6374:20;6367:54;6470:4;6462:6;6458:17;6452:24;6485:53;6532:4;6521:9;6517:20;6501:14;4400:13;4393:21;4381:34;;4330:91;6485:53;;6594:4;6586:6;6582:17;6576:24;6569:4;6558:9;6554:20;6547:54;6650:4;6642:6;6638:17;6632:24;6665:56;6715:4;6704:9;6700:20;6684:14;-1:-1:-1;;;;;2106:31:119;2094:44;;2040:104;6665:56;-1:-1:-1;6777:4:119;6765:17;;;6759:24;6737:20;;;6730:54;6803:6;6851:15;;;6845:22;6825:18;;;6818:50;6887:6;6935:15;;;6929:22;6909:18;;;6902:50;6971:6;7014:15;;;7008:22;3004:12;2993:24;;;7073:18;;;2981:37;;;;7111:6;7154:15;;;7148:22;2225:10;2214:22;7213:18;;;2202:35;7251:6;7294:15;;;7288:22;2993:24;;;7353:18;;;2981:37;7391:6;7434:15;;;7428:22;-1:-1:-1;;;;;2106:31:119;;;7494:18;;;2094:44;;;;7532:6;7575:15;;;7569:22;2106:31;;7635:18;;;2094:44;7673:6;7721:15;;;7715:22;7695:18;;;7688:50;7757:6;7800:15;;;7794:22;4400:13;4393:21;7857:18;;;4381:34;7896:6;7945:16;;;7939:23;7918:19;;;7911:52;7983:6;8032:16;;;8026:23;8005:19;;;7998:52;8070:6;8119:16;;;8113:23;8092:19;;;8085:52;8157:6;8200:16;;;8194:23;2106:31;;;8261:19;;;2094:44;8157:6;8226:55;;;5928:2359;;;;:::o;8698:196::-;8786:6;8839:3;8827:9;8818:7;8814:23;8810:33;8807:53;;;8856:1;8853;8846:12;8807:53;-1:-1:-1;8879:9:119;8698:196;-1:-1:-1;8698:196:119:o;8899:248::-;8967:6;8975;9028:2;9016:9;9007:7;9003:23;8999:32;8996:52;;;9044:1;9041;9034:12;8996:52;-1:-1:-1;;9067:23:119;;;9137:2;9122:18;;;9109:32;;-1:-1:-1;8899:248:119:o;9152:107::-;9233:1;9226:5;9223:12;9213:40;;9249:1;9246;9239:12;9264:146;9338:20;;9367:37;9338:20;9367:37;:::i;9415:118::-;9501:5;9494:13;9487:21;9480:5;9477:32;9467:60;;9523:1;9520;9513:12;9538:128;9603:20;;9632:28;9603:20;9632:28;:::i;9671:123::-;9756:12;9749:5;9745:24;9738:5;9735:35;9725:63;;9784:1;9781;9774:12;9799:132;9866:20;;9895:30;9866:20;9895:30;:::i;9936:121::-;10021:10;10014:5;10010:22;10003:5;10000:33;9990:61;;10047:1;10044;10037:12;10062:132;10129:20;;10158:30;10129:20;10158:30;:::i;10199:1945::-;10285:6;10338:3;10326:9;10317:7;10313:23;10309:33;10306:53;;;10355:1;10352;10345:12;10306:53;10381:17;;:::i;:::-;10421:35;10446:9;10421:35;:::i;:::-;10414:5;10407:50;10489:38;10523:2;10512:9;10508:18;10489:38;:::i;:::-;10484:2;10477:5;10473:14;10466:62;10588:2;10577:9;10573:18;10560:32;10555:2;10548:5;10544:14;10537:56;10653:2;10642:9;10638:18;10625:32;10620:2;10613:5;10609:14;10602:56;10691:36;10722:3;10711:9;10707:19;10691:36;:::i;:::-;10685:3;10678:5;10674:15;10667:61;10789:3;10778:9;10774:19;10761:33;10755:3;10748:5;10744:15;10737:58;10828:39;10862:3;10851:9;10847:19;10828:39;:::i;:::-;10822:3;10811:15;;10804:64;10929:3;10914:19;;;10901:33;10884:15;;;10877:58;10954:3;11002:18;;;10989:32;10973:14;;;10966:56;11041:3;11089:18;;;11076:32;11060:14;;;11053:56;11128:3;11163:37;11181:18;;;11163:37;:::i;:::-;11147:14;;;11140:61;11220:3;11255:37;11273:18;;;11255:37;:::i;:::-;11239:14;;;11232:61;11312:3;11347:37;11365:18;;;11347:37;:::i;:::-;11331:14;;;11324:61;11404:3;11439:38;11458:18;;;11439:38;:::i;:::-;11423:14;;;11416:62;11497:3;11532:38;11551:18;;;11532:38;:::i;:::-;11516:14;;;11509:62;11590:3;11638:18;;;11625:32;11609:14;;;11602:56;11677:3;11712:35;11728:18;;;11712:35;:::i;:::-;11696:14;;;11689:59;11768:3;11817:19;;;11804:33;11787:15;;;11780:58;11858:3;11907:19;;;11894:33;11877:15;;;11870:58;11948:3;11997:19;;;11984:33;11967:15;;;11960:58;12038:3;12074:39;12093:19;;;12074:39;:::i;:::-;12057:15;;;12050:64;12061:5;10199:1945;-1:-1:-1;;;10199:1945:119:o;12149:250::-;12234:1;12244:113;12258:6;12255:1;12252:13;12244:113;;;12334:11;;;12328:18;12315:11;;;12308:39;12280:2;12273:10;12244:113;;;-1:-1:-1;;12391:1:119;12373:16;;12366:27;12149:250::o;12404:270::-;12445:3;12483:5;12477:12;12510:6;12505:3;12498:19;12526:76;12595:6;12588:4;12583:3;12579:14;12572:4;12565:5;12561:16;12526:76;:::i;:::-;12656:2;12635:15;-1:-1:-1;;12631:29:119;12622:39;;;;12663:4;12618:50;;12404:270;-1:-1:-1;;12404:270:119:o;12679:217::-;12826:2;12815:9;12808:21;12789:4;12846:44;12886:2;12875:9;12871:18;12863:6;12846:44;:::i;13128:445::-;13219:6;13272:2;13260:9;13251:7;13247:23;13243:32;13240:52;;;13288:1;13285;13278:12;13240:52;13321:2;13315:9;13363:2;13355:6;13351:15;13432:6;13420:10;13417:22;13396:18;13384:10;13381:34;13378:62;13375:88;;;13443:18;;:::i;:::-;13479:2;13472:22;13518:23;;13503:39;;-1:-1:-1;13510:6:119;13128:445;-1:-1:-1;13128:445:119:o;14217:150::-;14302:13;;14324:37;14302:13;14324:37;:::i;14372:138::-;14451:13;;14473:31;14451:13;14473:31;:::i;14515:132::-;14591:13;;14613:28;14591:13;14613:28;:::i;14652:136::-;14730:13;;14752:30;14730:13;14752:30;:::i;14793:136::-;14871:13;;14893:30;14871:13;14893:30;:::i;14934:2007::-;15031:6;15084:3;15072:9;15063:7;15059:23;15055:33;15052:53;;;15101:1;15098;15091:12;15052:53;15127:17;;:::i;:::-;15167:46;15203:9;15167:46;:::i;:::-;15160:5;15153:61;15246:49;15291:2;15280:9;15276:18;15246:49;:::i;:::-;15241:2;15234:5;15230:14;15223:73;15349:2;15338:9;15334:18;15328:25;15323:2;15316:5;15312:14;15305:49;15407:2;15396:9;15392:18;15386:25;15381:2;15374:5;15370:14;15363:49;15445:47;15487:3;15476:9;15472:19;15445:47;:::i;:::-;15439:3;15432:5;15428:15;15421:72;15547:3;15536:9;15532:19;15526:26;15520:3;15513:5;15509:15;15502:51;15586:50;15631:3;15620:9;15616:19;15586:50;:::i;:::-;15580:3;15569:15;;15562:75;15691:3;15676:19;;;15670:26;15653:15;;;15646:51;15716:3;15757:18;;;15751:25;15735:14;;;15728:49;15796:3;15837:18;;;15831:25;15815:14;;;15808:49;15876:3;15911:48;15940:18;;;15911:48;:::i;:::-;15895:14;;;15888:72;15979:3;16014:48;16043:18;;;16014:48;:::i;:::-;15998:14;;;15991:72;16082:3;16117:48;16146:18;;;16117:48;:::i;:::-;16101:14;;;16094:72;16185:3;16220:49;16250:18;;;16220:49;:::i;:::-;16204:14;;;16197:73;16289:3;16324:49;16354:18;;;16324:49;:::i;:::-;16308:14;;;16301:73;16393:3;16434:18;;;16428:25;16412:14;;;16405:49;16473:3;16508:46;16535:18;;;16508:46;:::i;:::-;16492:14;;;16485:70;16575:3;16617:19;;;16611:26;16594:15;;;16587:51;16658:3;16700:19;;;16694:26;16677:15;;;16670:51;16741:3;16783:19;;;16777:26;16760:15;;;16753:51;16824:3;16860:50;16890:19;;;16860:50;:::i;16946:2571::-;17136:3;17121:19;;17149:69;17125:9;17174:32;17199:6;17174:32;:::i;:::-;17149:69;:::i;:::-;17247:37;17278:4;17270:6;17266:17;17247:37;:::i;:::-;-1:-1:-1;;;;;2106:31:119;;17341:4;17326:20;;2094:44;17293:54;17410:4;17402:6;17398:17;17385:31;17378:4;17367:9;17363:20;17356:61;17480:4;17472:6;17468:17;17455:31;17448:4;17437:9;17433:20;17426:61;17518:34;17546:4;17538:6;17534:17;17518:34;:::i;:::-;4400:13;4393:21;17608:4;17593:20;;4381:34;17677:4;17665:17;;;17652:31;17630:20;;;17623:61;17715:37;17746:4;17734:17;;17715:37;:::i;:::-;-1:-1:-1;;;;;2106:31:119;17811:4;17796:20;;2094:44;17880:4;17868:17;;;17855:31;17833:20;;;17826:61;17906:6;17961:15;;;17948:29;17928:18;;;17921:57;17997:6;18052:15;;;18039:29;18019:18;;;18012:57;18088:6;18125:34;18143:15;;;18125:34;:::i;:::-;3004:12;2993:24;18202:18;;;2981:37;18240:6;18277:34;18295:15;;;18277:34;:::i;:::-;2225:10;2214:22;18354:18;;;2202:35;18392:6;18429:34;18447:15;;;18429:34;:::i;:::-;3004:12;2993:24;18506:18;;;2981:37;18544:6;18581:35;18600:15;;;18581:35;:::i;:::-;-1:-1:-1;;;;;2106:31:119;18660:18;;;2094:44;18698:6;18735:35;18754:15;;;18735:35;:::i;:::-;-1:-1:-1;;;;;2106:31:119;18814:18;;;2094:44;18852:6;18907:15;;;18894:29;18874:18;;;18867:57;18943:6;18980:32;18996:15;;;18980:32;:::i;:::-;4400:13;4393:21;19053:18;;;4381:34;19092:6;19148:16;;;19135:30;19114:19;;;19107:59;19186:6;19242:16;;;19229:30;19208:19;;;19201:59;19280:6;19336:16;;;19323:30;19302:19;;;19295:59;19374:6;19411:36;19430:16;;;19411:36;:::i;:::-;-1:-1:-1;;;;;2106:31:119;;19491:19;;;2094:44;19456:55;2040:104;19522:345;-1:-1:-1;;;;;19742:32:119;;;;19724:51;;19806:2;19791:18;;19784:34;;;;19849:2;19834:18;;19827:34;19712:2;19697:18;;19522:345::o;20125:359::-;20312:6;20307:3;20300:19;20282:3;20348:6;20342:13;20364:73;20430:6;20425:2;20420:3;20416:12;20411:2;20403:6;20399:15;20364:73;:::i;:::-;20457:16;;;;20475:2;20453:25;;20125:359;-1:-1:-1;;;20125:359:119:o;20886:247::-;20945:6;20998:2;20986:9;20977:7;20973:23;20969:32;20966:52;;;21014:1;21011;21004:12;20966:52;21053:9;21040:23;21072:31;21097:5;21072:31;:::i;21726:245::-;21793:6;21846:2;21834:9;21825:7;21821:23;21817:32;21814:52;;;21862:1;21859;21852:12;21814:52;21894:9;21888:16;21913:28;21935:5;21913:28;:::i;22455:127::-;22516:10;22511:3;22507:20;22504:1;22497:31;22547:4;22544:1;22537:15;22571:4;22568:1;22561:15;22587:125;22652:9;;;22673:10;;;22670:36;;;22686:18;;:::i;22970:286::-;23075:6;23128:2;23116:9;23107:7;23103:23;23099:32;23096:52;;;23144:1;23141;23134:12;23096:52;23176:9;23170:16;23195:31;23220:5;23195:31;:::i;23540:184::-;23610:6;23663:2;23651:9;23642:7;23638:23;23634:32;23631:52;;;23679:1;23676;23669:12;23631:52;-1:-1:-1;23702:16:119;;23540:184;-1:-1:-1;23540:184:119:o;23982:288::-;24157:6;24146:9;24139:25;24200:2;24195;24184:9;24180:18;24173:30;24120:4;24220:44;24260:2;24249:9;24245:18;24237:6;24220:44;:::i;:::-;24212:52;23982:288;-1:-1:-1;;;;23982:288:119:o;24275:287::-;24404:3;24442:6;24436:13;24458:66;24517:6;24512:3;24505:4;24497:6;24493:17;24458:66;:::i;:::-;24540:16;;;;;24275:287;-1:-1:-1;;24275:287:119:o;24567:127::-;24628:10;24623:3;24619:20;24616:1;24609:31;24659:4;24656:1;24649:15;24683:4;24680:1;24673:15;24699:135;24738:3;24759:17;;;24756:43;;24779:18;;:::i;:::-;-1:-1:-1;24826:1:119;24815:13;;24699:135::o",
    "linkReferences": {},
    "immutableReferences": {
      "64601": [
        {
          "start": 402,
          "length": 32
        },
        {
          "start": 2327,
          "length": 32
        }
      ],
      "64603": [
        {
          "start": 745,
          "length": 32
        },
        {
          "start": 1991,
          "length": 32
        }
      ],
      "64606": [
        {
          "start": 455,
          "length": 32
        },
        {
          "start": 2627,
          "length": 32
        }
      ],
      "64609": [
        {
          "start": 706,
          "length": 32
        },
        {
          "start": 1835,
          "length": 32
        },
        {
          "start": 3406,
          "length": 32
        },
        {
          "start": 3733,
          "length": 32
        }
      ],
      "64612": [
        {
          "start": 590,
          "length": 32
        },
        {
          "start": 4084,
          "length": 32
        }
      ]
    }
  },
  "methodIdentifiers": {
    "DOMAIN_SEPARATOR()": "3644e515",
    "MULTIPROPOSAL_DOMAIN_SEPARATOR()": "abe93878",
    "MULTIPROPOSAL_TYPEHASH()": "d06a0d82",
    "PROPOSAL_TYPEHASH()": "853b94a0",
    "VERSION()": "ffa1ad74",
    "acceptProposal(address,uint256,bytes,bytes32[],bytes)": "01e83272",
    "config()": "79502c55",
    "creditUsed(bytes32)": "f0209ad6",
    "decodeProposalData(bytes)": "2d5d17fc",
    "encodeProposalData((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": "5b3275e2",
    "getMultiproposalHash((bytes32))": "829d3770",
    "getProposalHash((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": "382c0cdd",
    "hub()": "365a86fc",
    "makeProposal((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": "83f19a0b",
    "proposalsMade(bytes32)": "1da4c275",
    "revokeNonce(uint256,uint256)": "579bfc30",
    "revokedNonce()": "9788ad55"
  },
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.16+commit.07a7930e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_hub\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_revokedNonce\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_config\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"AcceptorIsProposer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"tag\",\"type\":\"bytes32\"}],\"name\":\"AddressMissingHubTag\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"used\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"limit\",\"type\":\"uint256\"}],\"name\":\"AvailableCreditLimitExceeded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"CallerIsNotStatedProposer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"current\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"allowed\",\"type\":\"address\"}],\"name\":\"CallerNotAllowedAcceptor\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"loanContract\",\"type\":\"address\"}],\"name\":\"CallerNotLoanContract\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"current\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiration\",\"type\":\"uint256\"}],\"name\":\"Expired\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"current\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"proposed\",\"type\":\"bytes32\"}],\"name\":\"InvalidCollateralStateFingerprint\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"}],\"name\":\"InvalidRefinancingLoanId\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"signer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"digest\",\"type\":\"bytes32\"}],\"name\":\"InvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"InvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MissingStateFingerprintComputer\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"NonceNotUsable\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"proposalHash\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"collateralCategory\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"collateralAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"checkCollateralStateFingerprint\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"collateralStateFingerprint\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creditAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableCreditLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fixedInterestAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"accruingInterestAPR\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"expiration\",\"type\":\"uint40\"},{\"internalType\":\"address\",\"name\":\"allowedAcceptor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"proposerSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOffer\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"loanContract\",\"type\":\"address\"}],\"indexed\":false,\"internalType\":\"struct PWNSimpleLoanSimpleProposal.Proposal\",\"name\":\"proposal\",\"type\":\"tuple\"}],\"name\":\"ProposalMade\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPROPOSAL_DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MULTIPROPOSAL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROPOSAL_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"acceptor\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"proposalData\",\"type\":\"bytes\"},{\"internalType\":\"bytes32[]\",\"name\":\"proposalInclusionProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"acceptProposal\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"proposalHash\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"lender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"borrower\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"category\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"assetAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct MultiToken.Asset\",\"name\":\"collateral\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"category\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"assetAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"id\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"struct MultiToken.Asset\",\"name\":\"credit\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"fixedInterestAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"accruingInterestAPR\",\"type\":\"uint40\"},{\"internalType\":\"bytes32\",\"name\":\"lenderSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"borrowerSpecHash\",\"type\":\"bytes32\"}],\"internalType\":\"struct PWNSimpleLoan.Terms\",\"name\":\"loanTerms\",\"type\":\"tuple\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"config\",\"outputs\":[{\"internalType\":\"contract PWNConfig\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"creditUsed\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"proposalData\",\"type\":\"bytes\"}],\"name\":\"decodeProposalData\",\"outputs\":[{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"collateralCategory\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"collateralAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"checkCollateralStateFingerprint\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"collateralStateFingerprint\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creditAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableCreditLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fixedInterestAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"accruingInterestAPR\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"expiration\",\"type\":\"uint40\"},{\"internalType\":\"address\",\"name\":\"allowedAcceptor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"proposerSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOffer\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"loanContract\",\"type\":\"address\"}],\"internalType\":\"struct PWNSimpleLoanSimpleProposal.Proposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"collateralCategory\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"collateralAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"checkCollateralStateFingerprint\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"collateralStateFingerprint\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creditAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableCreditLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fixedInterestAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"accruingInterestAPR\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"expiration\",\"type\":\"uint40\"},{\"internalType\":\"address\",\"name\":\"allowedAcceptor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"proposerSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOffer\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"loanContract\",\"type\":\"address\"}],\"internalType\":\"struct PWNSimpleLoanSimpleProposal.Proposal\",\"name\":\"proposal\",\"type\":\"tuple\"}],\"name\":\"encodeProposalData\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"multiproposalMerkleRoot\",\"type\":\"bytes32\"}],\"internalType\":\"struct PWNSimpleLoanProposal.Multiproposal\",\"name\":\"multiproposal\",\"type\":\"tuple\"}],\"name\":\"getMultiproposalHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"collateralCategory\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"collateralAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"checkCollateralStateFingerprint\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"collateralStateFingerprint\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creditAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableCreditLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fixedInterestAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"accruingInterestAPR\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"expiration\",\"type\":\"uint40\"},{\"internalType\":\"address\",\"name\":\"allowedAcceptor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"proposerSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOffer\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"loanContract\",\"type\":\"address\"}],\"internalType\":\"struct PWNSimpleLoanSimpleProposal.Proposal\",\"name\":\"proposal\",\"type\":\"tuple\"}],\"name\":\"getProposalHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hub\",\"outputs\":[{\"internalType\":\"contract PWNHub\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"enum MultiToken.Category\",\"name\":\"collateralCategory\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"collateralAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"collateralId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"collateralAmount\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"checkCollateralStateFingerprint\",\"type\":\"bool\"},{\"internalType\":\"bytes32\",\"name\":\"collateralStateFingerprint\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"creditAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"creditAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"availableCreditLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fixedInterestAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint40\",\"name\":\"accruingInterestAPR\",\"type\":\"uint40\"},{\"internalType\":\"uint32\",\"name\":\"duration\",\"type\":\"uint32\"},{\"internalType\":\"uint40\",\"name\":\"expiration\",\"type\":\"uint40\"},{\"internalType\":\"address\",\"name\":\"allowedAcceptor\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"proposer\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"proposerSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"isOffer\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"refinancingLoanId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"loanContract\",\"type\":\"address\"}],\"internalType\":\"struct PWNSimpleLoanSimpleProposal.Proposal\",\"name\":\"proposal\",\"type\":\"tuple\"}],\"name\":\"makeProposal\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"proposalHash\",\"type\":\"bytes32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"proposalsMade\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nonceSpace\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"revokeNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"revokedNonce\",\"outputs\":[{\"internalType\":\"contract PWNRevokedNonce\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"InvalidSignature(address,bytes32)\":[{\"details\":\"Thrown when signature is invalid.\"}],\"InvalidSignatureLength(uint256)\":[{\"details\":\"Thrown when signature length is not 64 nor 65 bytes.\"}],\"NonceNotUsable(address,uint256,uint256)\":[{\"details\":\"Maybe nonce is revoked or not in the current nonce space.\"}]},\"kind\":\"dev\",\"methods\":{\"acceptProposal(address,uint256,bytes,bytes32[],bytes)\":{\"details\":\"Function can be called only by a loan contract with appropriate PWN Hub tag.\",\"params\":{\"acceptor\":\"Address of a proposal acceptor.\",\"proposalData\":\"Encoded proposal data with signature.\",\"proposalInclusionProof\":\"Multiproposal inclusion proof. Empty if single proposal.\",\"refinancingLoanId\":\"Id of a loan to be refinanced. 0 if creating a new loan.\"},\"returns\":{\"loanTerms\":\"Loan terms.\",\"proposalHash\":\"Proposal hash.\"}},\"decodeProposalData(bytes)\":{\"params\":{\"proposalData\":\"Encoded proposal data.\"},\"returns\":{\"_0\":\"Decoded proposal struct.\"}},\"encodeProposalData((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))\":{\"params\":{\"proposal\":\"Proposal struct to be encoded.\"},\"returns\":{\"_0\":\"Encoded proposal data.\"}},\"getMultiproposalHash((bytes32))\":{\"params\":{\"multiproposal\":\"Multiproposal struct.\"},\"returns\":{\"_0\":\"Multiproposal hash.\"}},\"getProposalHash((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))\":{\"params\":{\"proposal\":\"Proposal struct to be hashed.\"},\"returns\":{\"_0\":\"Proposal struct hash.\"}},\"makeProposal((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))\":{\"details\":\"Function will mark a proposal hash as proposed.\",\"params\":{\"proposal\":\"Proposal struct containing all needed proposal data.\"},\"returns\":{\"proposalHash\":\"Proposal hash.\"}},\"revokeNonce(uint256,uint256)\":{\"params\":{\"nonce\":\"Proposal nonce to be revoked.\",\"nonceSpace\":\"Nonce space of a proposal nonce to be revoked.\"}}},\"stateVariables\":{\"PROPOSAL_TYPEHASH\":{\"details\":\"EIP-712 simple proposal struct type hash.\"}},\"title\":\"PWN Simple Loan Simple Proposal\",\"version\":1},\"userdoc\":{\"errors\":{\"AcceptorIsProposer(address)\":[{\"notice\":\"Thrown when proposal acceptor and proposer are the same.\"}],\"AddressMissingHubTag(address,bytes32)\":[{\"notice\":\"Thrown when an address is missing a PWN Hub tag.\"}],\"AvailableCreditLimitExceeded(uint256,uint256)\":[{\"notice\":\"Thrown when a proposal would exceed the available credit limit.\"}],\"CallerIsNotStatedProposer(address)\":[{\"notice\":\"Thrown when a caller is not a stated proposer.\"}],\"CallerNotAllowedAcceptor(address,address)\":[{\"notice\":\"Thrown when caller is not allowed to accept a proposal.\"}],\"CallerNotLoanContract(address,address)\":[{\"notice\":\"Thrown when a caller is missing a required hub tag.\"}],\"Expired(uint256,uint256)\":[{\"notice\":\"Thrown when a proposal is expired.\"}],\"InvalidCollateralStateFingerprint(bytes32,bytes32)\":[{\"notice\":\"Thrown when a proposed collateral state fingerprint doesn't match the current state.\"}],\"InvalidRefinancingLoanId(uint256)\":[{\"notice\":\"Thrown when provided refinance loan id cannot be used.\"}],\"MissingStateFingerprintComputer()\":[{\"notice\":\"Thrown when a state fingerprint computer is not registered.\"}],\"NonceNotUsable(address,uint256,uint256)\":[{\"notice\":\"Thrown when nonce is currently not usable.\"}]},\"events\":{\"ProposalMade(bytes32,address,(uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))\":{\"notice\":\"Emitted when a proposal is made via an on-chain transaction.\"}},\"kind\":\"user\",\"methods\":{\"acceptProposal(address,uint256,bytes,bytes32[],bytes)\":{\"notice\":\"Accept a proposal and create new loan terms.\"},\"decodeProposalData(bytes)\":{\"notice\":\"Decode proposal data.\"},\"encodeProposalData((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))\":{\"notice\":\"Encode proposal data.\"},\"getMultiproposalHash((bytes32))\":{\"notice\":\"Get a multiproposal hash according to EIP-712.\"},\"getProposalHash((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))\":{\"notice\":\"Get an proposal hash according to EIP-712\"},\"makeProposal((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))\":{\"notice\":\"Make an on-chain proposal.\"},\"revokeNonce(uint256,uint256)\":{\"notice\":\"Helper function for revoking a proposal nonce on behalf of a caller.\"}},\"notice\":\"Contract for creating and accepting simple loan proposals.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/loan/terms/simple/proposal/PWNSimpleLoanSimpleProposal.sol\":\"PWNSimpleLoanSimpleProposal\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":MultiToken/=lib/MultiToken/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\",\":pwn/=src/\"]},\"sources\":{\"lib/MultiToken/src/MultiToken.sol\":{\"keccak256\":\"0xc82d7bddc1a925316875bfe3bf116cb8deacc2c6296fad57b1895db898bf871e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://587293f9235d52ab6f51c794ed68e8828eaa4f8b073fa191556fff37446be10c\",\"dweb:/ipfs/QmdFay286V8GfHZDE7TFDxh9irQsmNDwP4tQFbno49waxY\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable.sol\":{\"keccak256\":\"0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32\",\"dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz\"]},\"lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol\":{\"keccak256\":\"0xde231558366826d7cb61725af8147965a61c53b77a352cc8c9af38fc5a92ac3c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd55624076bf61d44af5ff351919e32dda748567acfbdd6ba3d6c7be61c758e\",\"dweb:/ipfs/QmSki4dTrf4GPm7MTpG3fk8mC7rnjwd2zMomLp6jLuF63Q\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol\":{\"keccak256\":\"0x10a6688bc4154b1b76268dbaf497bd8b24f77525ecb9cf829bd3cccec98eefc2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://68663f939b79e88a5bb677cf6c549e88eb4f587379c09f80d19cde14b0eb984b\",\"dweb:/ipfs/QmVfeL1uxQ5161d25DsNqptjaur7VQugjCSGitrRscTdmV\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol\":{\"keccak256\":\"0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e\",\"dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45\",\"dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol\":{\"keccak256\":\"0xaf297d12d8d4a57fe01a70f0ef38908f208e3faedc577056d0b728fa2f3ccf0c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fbfaf37123958822a2720a4ea29651be00edab787540b770f73d3e025d286ff8\",\"dweb:/ipfs/QmbzgWeTm8hJVUqWrNAwFjshqbYVyeGpQA8D1huzxQdmw6\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://720d6bb56ea0c4ef781c0bd65c5bd0541f5a46100163b2587170f97658d2deed\",\"dweb:/ipfs/QmTS2biLVPrv8CeeXCaKmkFxonMiRvc1LxiYBRYDAJHQUS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol\":{\"keccak256\":\"0xcab667ddad478ff0d39c2053ca77fac778af8483c18ab07d810277b4216fd582\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://919c7ea27c77275c3c341da0c4a26a66a20ed27605fbe8becf11f58ec3bc65bf\",\"dweb:/ipfs/QmRLKyVE2n7e2Jo4bLNn8eLgqqhNGYnVQyjJPWdr8poskf\"]},\"lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol\":{\"keccak256\":\"0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec\",\"dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5\",\"dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71\",\"dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68\",\"dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7063b5c98711a98018ba4635ac74cee1c1cfa2ea01099498e062699ed9530005\",\"dweb:/ipfs/QmeJ8rGXkcv7RrqLdAW8PCXPAykxVsddfYY6g5NaTwmRFE\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4\",\"dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708\",\"dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146\",\"dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931\",\"dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c\",\"dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f\",\"dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2\",\"dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol\":{\"keccak256\":\"0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04\",\"dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d\",\"dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd\",\"dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c\",\"dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278\",\"dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7\",\"dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6\"]},\"src/PWNErrors.sol\":{\"keccak256\":\"0x8a0e516fc8ddf54aecb82d5cbd19b6f263950a91d4411d1d4c54b90fae010692\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b9cd08003376c48cdaf6279c4237a38efb1e26080bc29de3343bcfe397a4bb0f\",\"dweb:/ipfs/QmXtMtn71ZzRu1rGQLq8u5vnDy4k462d7mGtu1jFd7ZBJG\"]},\"src/config/PWNConfig.sol\":{\"keccak256\":\"0x15a2ab788f84df29b960d50b33803130bdd61fe7c0ce76d4f6bf76da7cccb594\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://b1310535db741a5a7a0aff71f34ef329c7f5bf3117f9c38587e4090bec340fb4\",\"dweb:/ipfs/QmYRWwiSAyZMdxSqMYU1K2YRFzBW7L2dHXktx1BdFW9fP5\"]},\"src/hub/PWNHub.sol\":{\"keccak256\":\"0x92ad9edafc151bc7efc1b132c1be55966bb692860a94803a74ce5a948985126c\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://a04dbfe0ea39f7cd04b7947cac66ce77745ecc20a24aad3f8d35a6d319eec202\",\"dweb:/ipfs/QmbxoqEtL4YwMQDfCydurWLHeVjL1Yjc4Ty4vsRoCqXabv\"]},\"src/hub/PWNHubAccessControl.sol\":{\"keccak256\":\"0x310e0389c98971c4d6c25d8756c1e8a962c8b22c54e3ce6d80a383fb5b755448\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://63748084b8c8a9e2cce98a87d27a8baf353fae903641d6fdfc2cdc4ed229243f\",\"dweb:/ipfs/QmVywLNCBeWkNdWjpdumnAam1Shwj8k3DxxpRcWAK997Nw\"]},\"src/hub/PWNHubTags.sol\":{\"keccak256\":\"0xd1e685e8075f1f16835d38cfe39b1eee9edbf75089a0109002f7b2bfe14c177a\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://4a01df6b1c2cf493017b7abb4b9ec6ac16c9b1c3498b16ccbdc4f2045909dde8\",\"dweb:/ipfs/QmcYEgSZrE33YKxDDBvhVgZTfT9Tj1RTEX3iA717zZyspJ\"]},\"src/interfaces/ICryptoKitties.sol\":{\"keccak256\":\"0x9aaa7f948d4f2121d764b5664fe1c8431b3c5bfce780228eceb56d1589681706\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://05416e111c8ff6a1464248ac387e8c69015c355e949967586d514d9d17d619aa\",\"dweb:/ipfs/QmVK5Q6bS1CevgdxB17RJ9BGZsspCXdY5Y5dX4cpgQ4Rze\"]},\"src/interfaces/IERC5646.sol\":{\"keccak256\":\"0xff5ce494375d2cf5a67fe9460ea66aa3572b8a0434ae538cbac0a55f7aac5c5e\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://e8e2b472fa80a92ae12985da77056f68f0e0f36fca7ac37b6d30db82a2527180\",\"dweb:/ipfs/QmdFTGSCaPcVfthbGSUuiyhivqBx6xN9dCL14PCbR39Wki\"]},\"src/interfaces/IMultiTokenCategoryRegistry.sol\":{\"keccak256\":\"0x5607c7415785a07c7226638ab7d16ae9a87906e5eafb06e723944144b8f7c48a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://dd5f1d39f2acb6cda18a1199e06be211deccce27478de077d942ced8ada6e0b1\",\"dweb:/ipfs/Qmdx2uXjyoyyqNQU5aQTpagujxSVAfS17Sc3ziJGAofXnX\"]},\"src/interfaces/IPWNLoanMetadataProvider.sol\":{\"keccak256\":\"0x6cc991fd9c8c88e0a69e835fcd514868836e2432b12454dfcb6a681a3a9d13b8\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://69fd07433fd7eb2f1474d778476240434fa79a31525341d88a588573562389c6\",\"dweb:/ipfs/Qmb6gWNQD96oSgwH5Yf6eMHxYWXZwCPrd7MvK86r7UKhZK\"]},\"src/interfaces/IPoolAdapter.sol\":{\"keccak256\":\"0xe0309b4e7da2046095c7dc943d953f32d2a46b0ad64beaf3f4ed1b440fe43f89\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://15870bf95e096b35620787a0eba49f7becbaff738651a83bd28310d022cdc93b\",\"dweb:/ipfs/QmZPYmxrjB6SFWr5arTztrDofQ6XdyzXTUMeaQt5wcbv3T\"]},\"src/interfaces/IStateFingerpringComputer.sol\":{\"keccak256\":\"0xb2f72031bdd6b6ac7179ca9af90c290d37bcc43d6bab4db6e0b1ee7c7b4f72a2\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://d8de3c648f1afab5458e553042a59b0df3d8d54be1a488e891de70821745da0c\",\"dweb:/ipfs/QmQ6QoeMgZGdVjJ2aAt8t1AuBCJ95m6BRSR1GKRqVk4jct\"]},\"src/loan/lib/PWNFeeCalculator.sol\":{\"keccak256\":\"0xab8eb0be2d2e5a7c909a326de53459ae2ed6fd7cdd3985719515f279f952fcdf\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://4ca7a9d230ab90b46cdb1a16bd99af5639af7adcf2250a20b7e1f77c952344f5\",\"dweb:/ipfs/QmXzwraVHPmrVFtR4tkm5JqafygeDDvbQbkKu33EYUWLMq\"]},\"src/loan/lib/PWNSignatureChecker.sol\":{\"keccak256\":\"0xb76220c904f1b4c9e08166c4175746b161aaf70be14dc22b1a335f351970d1fd\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://846d1cc6b7f1ba8b0bc6b5836aad018828bc1ad8f6f994ec59d24f6617d91fc1\",\"dweb:/ipfs/QmWe7cAsDysa6Qjn9vBAiHW4iaPmZnaeVmqxnwRMikgSCM\"]},\"src/loan/terms/simple/loan/PWNSimpleLoan.sol\":{\"keccak256\":\"0x6dd44efd796277aeb5a7712591cfbee10ea3058c0f8f97f9c6111297714d3155\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://0a65b5a30ea71966c8deaa54f621985568fbcbe37bcb6174219410837c9722d9\",\"dweb:/ipfs/QmWzCC35n2a2GsqEkU27i1LKGjqhYTZ1wLfEBnUxsPRrfr\"]},\"src/loan/terms/simple/proposal/PWNSimpleLoanProposal.sol\":{\"keccak256\":\"0xa0569c9949bfcd4995d813e1bfe3cb89dcf55293e2fb7728ade49d49be1c6d2d\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://d94dc60f4f6591cac65d95bea69a8b6364589977b085892f334e4224ce3b754d\",\"dweb:/ipfs/QmV3NaHYz3bNbXsKbrHEJxBuLHJyStB6917hJ1D7dtqhs5\"]},\"src/loan/terms/simple/proposal/PWNSimpleLoanSimpleProposal.sol\":{\"keccak256\":\"0x69b24da24443ebfaed2095aa3925b56e744a25129f84296f033a88e63173689c\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://0e343ddf85d3500dc7bfab1f078a22c4c2aa3860baa42b67844aafbe1233b865\",\"dweb:/ipfs/QmRSKg7E8rayxA2ZRmETkptDWMMHrvPyc81z7me6XfHfgA\"]},\"src/loan/token/PWNLOAN.sol\":{\"keccak256\":\"0x92981fb0bd0abcadc45b0f88bfc5fcc960ce7a5b79494fc6c9fd5990b197c764\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://e10726f492991694d751b68bf87a352f1284710ba311614295381a58ebfd226e\",\"dweb:/ipfs/Qmct6PYHSqHo9K9rGAif9ohBpJuQnTBWdHJRdENpetGg7k\"]},\"src/loan/vault/PWNVault.sol\":{\"keccak256\":\"0x00f3a6cad5f19a0a818d351a5aa849e41a34bf0251a872d4993d40d77468f29e\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://01942d7d871fe64f229820f5f90be23b647e438d951531a5f60a470f8093977e\",\"dweb:/ipfs/QmcyDXfCdgSQ8P454JxfuTzNBSxfpzeJ9aTPBefTH3dTvK\"]},\"src/loan/vault/Permit.sol\":{\"keccak256\":\"0xce0acf24731cfaa49535adea5c0c6ebade736d35f3f54a8150ef175a693e3cee\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://3542ad1e3295c63363fe825d3e46ad447fcd614f31f4dadeea39d24086e02c7a\",\"dweb:/ipfs/QmVjAuaQ1UdqgJAmvR8pdXQCb3Zy7fDQeBtbx9ZTbCQic4\"]},\"src/nonce/PWNRevokedNonce.sol\":{\"keccak256\":\"0xc0c75afa97243c3ef711e04cc9ffd0b3d44fa7999333b0048dc37b562a4cc06e\",\"license\":\"GPL-3.0-only\",\"urls\":[\"bzz-raw://5b2b7271b9505f35a05d2d68803f20116b621dcecfc528806225e0280b0a420e\",\"dweb:/ipfs/QmZh95WUcgTHz7ifsQhmrq1wCjvDXfwwh9G7k49otPisxx\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.16+commit.07a7930e"
    },
    "language": "Solidity",
    "output": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_hub",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_revokedNonce",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_config",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            }
          ],
          "type": "error",
          "name": "AcceptorIsProposer"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "tag",
              "type": "bytes32"
            }
          ],
          "type": "error",
          "name": "AddressMissingHubTag"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "used",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "limit",
              "type": "uint256"
            }
          ],
          "type": "error",
          "name": "AvailableCreditLimitExceeded"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            }
          ],
          "type": "error",
          "name": "CallerIsNotStatedProposer"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "current",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "allowed",
              "type": "address"
            }
          ],
          "type": "error",
          "name": "CallerNotAllowedAcceptor"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "caller",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "loanContract",
              "type": "address"
            }
          ],
          "type": "error",
          "name": "CallerNotLoanContract"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "current",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "expiration",
              "type": "uint256"
            }
          ],
          "type": "error",
          "name": "Expired"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "current",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "proposed",
              "type": "bytes32"
            }
          ],
          "type": "error",
          "name": "InvalidCollateralStateFingerprint"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            }
          ],
          "type": "error",
          "name": "InvalidRefinancingLoanId"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "signer",
              "type": "address"
            },
            {
              "internalType": "bytes32",
              "name": "digest",
              "type": "bytes32"
            }
          ],
          "type": "error",
          "name": "InvalidSignature"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "length",
              "type": "uint256"
            }
          ],
          "type": "error",
          "name": "InvalidSignatureLength"
        },
        {
          "inputs": [],
          "type": "error",
          "name": "MissingStateFingerprintComputer"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "addr",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            }
          ],
          "type": "error",
          "name": "NonceNotUsable"
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "proposalHash",
              "type": "bytes32",
              "indexed": true
            },
            {
              "internalType": "address",
              "name": "proposer",
              "type": "address",
              "indexed": true
            },
            {
              "internalType": "struct PWNSimpleLoanSimpleProposal.Proposal",
              "name": "proposal",
              "type": "tuple",
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "collateralCategory",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "collateralAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "checkCollateralStateFingerprint",
                  "type": "bool"
                },
                {
                  "internalType": "bytes32",
                  "name": "collateralStateFingerprint",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "creditAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "creditAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "availableCreditLimit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "fixedInterestAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "accruingInterestAPR",
                  "type": "uint40"
                },
                {
                  "internalType": "uint32",
                  "name": "duration",
                  "type": "uint32"
                },
                {
                  "internalType": "uint40",
                  "name": "expiration",
                  "type": "uint40"
                },
                {
                  "internalType": "address",
                  "name": "allowedAcceptor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "proposerSpecHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isOffer",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "refinancingLoanId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonceSpace",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "loanContract",
                  "type": "address"
                }
              ],
              "indexed": false
            }
          ],
          "type": "event",
          "name": "ProposalMade",
          "anonymous": false
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "MULTIPROPOSAL_DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "MULTIPROPOSAL_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "PROPOSAL_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "VERSION",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "acceptor",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "refinancingLoanId",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "proposalData",
              "type": "bytes"
            },
            {
              "internalType": "bytes32[]",
              "name": "proposalInclusionProof",
              "type": "bytes32[]"
            },
            {
              "internalType": "bytes",
              "name": "signature",
              "type": "bytes"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "acceptProposal",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "proposalHash",
              "type": "bytes32"
            },
            {
              "internalType": "struct PWNSimpleLoan.Terms",
              "name": "loanTerms",
              "type": "tuple",
              "components": [
                {
                  "internalType": "address",
                  "name": "lender",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "borrower",
                  "type": "address"
                },
                {
                  "internalType": "uint32",
                  "name": "duration",
                  "type": "uint32"
                },
                {
                  "internalType": "struct MultiToken.Asset",
                  "name": "collateral",
                  "type": "tuple",
                  "components": [
                    {
                      "internalType": "enum MultiToken.Category",
                      "name": "category",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "assetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "id",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ]
                },
                {
                  "internalType": "struct MultiToken.Asset",
                  "name": "credit",
                  "type": "tuple",
                  "components": [
                    {
                      "internalType": "enum MultiToken.Category",
                      "name": "category",
                      "type": "uint8"
                    },
                    {
                      "internalType": "address",
                      "name": "assetAddress",
                      "type": "address"
                    },
                    {
                      "internalType": "uint256",
                      "name": "id",
                      "type": "uint256"
                    },
                    {
                      "internalType": "uint256",
                      "name": "amount",
                      "type": "uint256"
                    }
                  ]
                },
                {
                  "internalType": "uint256",
                  "name": "fixedInterestAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "accruingInterestAPR",
                  "type": "uint40"
                },
                {
                  "internalType": "bytes32",
                  "name": "lenderSpecHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bytes32",
                  "name": "borrowerSpecHash",
                  "type": "bytes32"
                }
              ]
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "config",
          "outputs": [
            {
              "internalType": "contract PWNConfig",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "creditUsed",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes",
              "name": "proposalData",
              "type": "bytes"
            }
          ],
          "stateMutability": "pure",
          "type": "function",
          "name": "decodeProposalData",
          "outputs": [
            {
              "internalType": "struct PWNSimpleLoanSimpleProposal.Proposal",
              "name": "",
              "type": "tuple",
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "collateralCategory",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "collateralAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "checkCollateralStateFingerprint",
                  "type": "bool"
                },
                {
                  "internalType": "bytes32",
                  "name": "collateralStateFingerprint",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "creditAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "creditAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "availableCreditLimit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "fixedInterestAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "accruingInterestAPR",
                  "type": "uint40"
                },
                {
                  "internalType": "uint32",
                  "name": "duration",
                  "type": "uint32"
                },
                {
                  "internalType": "uint40",
                  "name": "expiration",
                  "type": "uint40"
                },
                {
                  "internalType": "address",
                  "name": "allowedAcceptor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "proposerSpecHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isOffer",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "refinancingLoanId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonceSpace",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "loanContract",
                  "type": "address"
                }
              ]
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct PWNSimpleLoanSimpleProposal.Proposal",
              "name": "proposal",
              "type": "tuple",
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "collateralCategory",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "collateralAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "checkCollateralStateFingerprint",
                  "type": "bool"
                },
                {
                  "internalType": "bytes32",
                  "name": "collateralStateFingerprint",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "creditAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "creditAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "availableCreditLimit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "fixedInterestAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "accruingInterestAPR",
                  "type": "uint40"
                },
                {
                  "internalType": "uint32",
                  "name": "duration",
                  "type": "uint32"
                },
                {
                  "internalType": "uint40",
                  "name": "expiration",
                  "type": "uint40"
                },
                {
                  "internalType": "address",
                  "name": "allowedAcceptor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "proposerSpecHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isOffer",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "refinancingLoanId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonceSpace",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "loanContract",
                  "type": "address"
                }
              ]
            }
          ],
          "stateMutability": "pure",
          "type": "function",
          "name": "encodeProposalData",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "",
              "type": "bytes"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct PWNSimpleLoanProposal.Multiproposal",
              "name": "multiproposal",
              "type": "tuple",
              "components": [
                {
                  "internalType": "bytes32",
                  "name": "multiproposalMerkleRoot",
                  "type": "bytes32"
                }
              ]
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getMultiproposalHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct PWNSimpleLoanSimpleProposal.Proposal",
              "name": "proposal",
              "type": "tuple",
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "collateralCategory",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "collateralAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "checkCollateralStateFingerprint",
                  "type": "bool"
                },
                {
                  "internalType": "bytes32",
                  "name": "collateralStateFingerprint",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "creditAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "creditAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "availableCreditLimit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "fixedInterestAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "accruingInterestAPR",
                  "type": "uint40"
                },
                {
                  "internalType": "uint32",
                  "name": "duration",
                  "type": "uint32"
                },
                {
                  "internalType": "uint40",
                  "name": "expiration",
                  "type": "uint40"
                },
                {
                  "internalType": "address",
                  "name": "allowedAcceptor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "proposerSpecHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isOffer",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "refinancingLoanId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonceSpace",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "loanContract",
                  "type": "address"
                }
              ]
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "getProposalHash",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "hub",
          "outputs": [
            {
              "internalType": "contract PWNHub",
              "name": "",
              "type": "address"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "struct PWNSimpleLoanSimpleProposal.Proposal",
              "name": "proposal",
              "type": "tuple",
              "components": [
                {
                  "internalType": "enum MultiToken.Category",
                  "name": "collateralCategory",
                  "type": "uint8"
                },
                {
                  "internalType": "address",
                  "name": "collateralAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "collateralAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "bool",
                  "name": "checkCollateralStateFingerprint",
                  "type": "bool"
                },
                {
                  "internalType": "bytes32",
                  "name": "collateralStateFingerprint",
                  "type": "bytes32"
                },
                {
                  "internalType": "address",
                  "name": "creditAddress",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "creditAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "availableCreditLimit",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "fixedInterestAmount",
                  "type": "uint256"
                },
                {
                  "internalType": "uint40",
                  "name": "accruingInterestAPR",
                  "type": "uint40"
                },
                {
                  "internalType": "uint32",
                  "name": "duration",
                  "type": "uint32"
                },
                {
                  "internalType": "uint40",
                  "name": "expiration",
                  "type": "uint40"
                },
                {
                  "internalType": "address",
                  "name": "allowedAcceptor",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "proposer",
                  "type": "address"
                },
                {
                  "internalType": "bytes32",
                  "name": "proposerSpecHash",
                  "type": "bytes32"
                },
                {
                  "internalType": "bool",
                  "name": "isOffer",
                  "type": "bool"
                },
                {
                  "internalType": "uint256",
                  "name": "refinancingLoanId",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonceSpace",
                  "type": "uint256"
                },
                {
                  "internalType": "uint256",
                  "name": "nonce",
                  "type": "uint256"
                },
                {
                  "internalType": "address",
                  "name": "loanContract",
                  "type": "address"
                }
              ]
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "makeProposal",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "proposalHash",
              "type": "bytes32"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function",
          "name": "proposalsMade",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ]
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "nonceSpace",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nonce",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function",
          "name": "revokeNonce"
        },
        {
          "inputs": [],
          "stateMutability": "view",
          "type": "function",
          "name": "revokedNonce",
          "outputs": [
            {
              "internalType": "contract PWNRevokedNonce",
              "name": "",
              "type": "address"
            }
          ]
        }
      ],
      "devdoc": {
        "kind": "dev",
        "methods": {
          "acceptProposal(address,uint256,bytes,bytes32[],bytes)": {
            "details": "Function can be called only by a loan contract with appropriate PWN Hub tag.",
            "params": {
              "acceptor": "Address of a proposal acceptor.",
              "proposalData": "Encoded proposal data with signature.",
              "proposalInclusionProof": "Multiproposal inclusion proof. Empty if single proposal.",
              "refinancingLoanId": "Id of a loan to be refinanced. 0 if creating a new loan."
            },
            "returns": {
              "loanTerms": "Loan terms.",
              "proposalHash": "Proposal hash."
            }
          },
          "decodeProposalData(bytes)": {
            "params": {
              "proposalData": "Encoded proposal data."
            },
            "returns": {
              "_0": "Decoded proposal struct."
            }
          },
          "encodeProposalData((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": {
            "params": {
              "proposal": "Proposal struct to be encoded."
            },
            "returns": {
              "_0": "Encoded proposal data."
            }
          },
          "getMultiproposalHash((bytes32))": {
            "params": {
              "multiproposal": "Multiproposal struct."
            },
            "returns": {
              "_0": "Multiproposal hash."
            }
          },
          "getProposalHash((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": {
            "params": {
              "proposal": "Proposal struct to be hashed."
            },
            "returns": {
              "_0": "Proposal struct hash."
            }
          },
          "makeProposal((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": {
            "details": "Function will mark a proposal hash as proposed.",
            "params": {
              "proposal": "Proposal struct containing all needed proposal data."
            },
            "returns": {
              "proposalHash": "Proposal hash."
            }
          },
          "revokeNonce(uint256,uint256)": {
            "params": {
              "nonce": "Proposal nonce to be revoked.",
              "nonceSpace": "Nonce space of a proposal nonce to be revoked."
            }
          }
        },
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {
          "acceptProposal(address,uint256,bytes,bytes32[],bytes)": {
            "notice": "Accept a proposal and create new loan terms."
          },
          "decodeProposalData(bytes)": {
            "notice": "Decode proposal data."
          },
          "encodeProposalData((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": {
            "notice": "Encode proposal data."
          },
          "getMultiproposalHash((bytes32))": {
            "notice": "Get a multiproposal hash according to EIP-712."
          },
          "getProposalHash((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": {
            "notice": "Get an proposal hash according to EIP-712"
          },
          "makeProposal((uint8,address,uint256,uint256,bool,bytes32,address,uint256,uint256,uint256,uint40,uint32,uint40,address,address,bytes32,bool,uint256,uint256,uint256,address))": {
            "notice": "Make an on-chain proposal."
          },
          "revokeNonce(uint256,uint256)": {
            "notice": "Helper function for revoking a proposal nonce on behalf of a caller."
          }
        },
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "MultiToken/=lib/MultiToken/src/",
        "ds-test/=lib/forge-std/lib/ds-test/src/",
        "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
        "forge-std/=lib/forge-std/src/",
        "openzeppelin-contracts/=lib/openzeppelin-contracts/",
        "openzeppelin/=lib/openzeppelin-contracts/contracts/",
        "pwn/=src/"
      ],
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "src/loan/terms/simple/proposal/PWNSimpleLoanSimpleProposal.sol": "PWNSimpleLoanSimpleProposal"
      },
      "libraries": {}
    },
    "sources": {
      "lib/MultiToken/src/MultiToken.sol": {
        "keccak256": "0xc82d7bddc1a925316875bfe3bf116cb8deacc2c6296fad57b1895db898bf871e",
        "urls": [
          "bzz-raw://587293f9235d52ab6f51c794ed68e8828eaa4f8b073fa191556fff37446be10c",
          "dweb:/ipfs/QmdFay286V8GfHZDE7TFDxh9irQsmNDwP4tQFbno49waxY"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/access/Ownable.sol": {
        "keccak256": "0xba43b97fba0d32eb4254f6a5a297b39a19a247082a02d6e69349e071e2946218",
        "urls": [
          "bzz-raw://fc980984badf3984b6303b377711220e067722bbd6a135b24669ff5069ef9f32",
          "dweb:/ipfs/QmPHXMSXj99XjSVM21YsY6aNtLLjLVXDbyN76J5HQYvvrz"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol": {
        "keccak256": "0xde231558366826d7cb61725af8147965a61c53b77a352cc8c9af38fc5a92ac3c",
        "urls": [
          "bzz-raw://1fd55624076bf61d44af5ff351919e32dda748567acfbdd6ba3d6c7be61c758e",
          "dweb:/ipfs/QmSki4dTrf4GPm7MTpG3fk8mC7rnjwd2zMomLp6jLuF63Q"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol": {
        "keccak256": "0x10a6688bc4154b1b76268dbaf497bd8b24f77525ecb9cf829bd3cccec98eefc2",
        "urls": [
          "bzz-raw://68663f939b79e88a5bb677cf6c549e88eb4f587379c09f80d19cde14b0eb984b",
          "dweb:/ipfs/QmVfeL1uxQ5161d25DsNqptjaur7VQugjCSGitrRscTdmV"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol": {
        "keccak256": "0x0705a4b1b86d7b0bd8432118f226ba139c44b9dcaba0a6eafba2dd7d0639c544",
        "urls": [
          "bzz-raw://c45b821ef9e882e57c256697a152e108f0f2ad6997609af8904cae99c9bd422e",
          "dweb:/ipfs/QmRKCJW6jjzR5UYZcLpGnhEJ75UVbH6EHkEa49sWx2SKng"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol": {
        "keccak256": "0x6ebf1944ab804b8660eb6fc52f9fe84588cee01c2566a69023e59497e7d27f45",
        "urls": [
          "bzz-raw://2900536cdadec954ced8789a9d1ed4b5e640029e1424e91fd5b88026486f4d45",
          "dweb:/ipfs/QmUMUX7CuYoiHvFkhifqtXGaciw2wnm4t9sAoPzETZ3Gbq"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol": {
        "keccak256": "0xaf297d12d8d4a57fe01a70f0ef38908f208e3faedc577056d0b728fa2f3ccf0c",
        "urls": [
          "bzz-raw://fbfaf37123958822a2720a4ea29651be00edab787540b770f73d3e025d286ff8",
          "dweb:/ipfs/QmbzgWeTm8hJVUqWrNAwFjshqbYVyeGpQA8D1huzxQdmw6"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol": {
        "keccak256": "0x3d6069be9b4c01fb81840fb9c2c4dc58dd6a6a4aafaa2c6837de8699574d84c6",
        "urls": [
          "bzz-raw://720d6bb56ea0c4ef781c0bd65c5bd0541f5a46100163b2587170f97658d2deed",
          "dweb:/ipfs/QmTS2biLVPrv8CeeXCaKmkFxonMiRvc1LxiYBRYDAJHQUS"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol": {
        "keccak256": "0xcab667ddad478ff0d39c2053ca77fac778af8483c18ab07d810277b4216fd582",
        "urls": [
          "bzz-raw://919c7ea27c77275c3c341da0c4a26a66a20ed27605fbe8becf11f58ec3bc65bf",
          "dweb:/ipfs/QmRLKyVE2n7e2Jo4bLNn8eLgqqhNGYnVQyjJPWdr8poskf"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol": {
        "keccak256": "0xeb373f1fdc7b755c6a750123a9b9e3a8a02c1470042fd6505d875000a80bde0b",
        "urls": [
          "bzz-raw://0e28648f994abf1d6bc345644a361cc0b7efa544f8bc0c8ec26011fed85a91ec",
          "dweb:/ipfs/QmVVE7AiRjKaQYYji7TkjmTeVzGpNmms5eoxqTCfvvpj6D"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol": {
        "keccak256": "0x287b55befed2961a7eabd7d7b1b2839cbca8a5b80ef8dcbb25ed3d4c2002c305",
        "urls": [
          "bzz-raw://bd39944e8fc06be6dbe2dd1d8449b5336e23c6a7ba3e8e9ae5ae0f37f35283f5",
          "dweb:/ipfs/QmPV3FGYjVwvKSgAXKUN3r9T9GwniZz83CxBpM7vyj2G53"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol": {
        "keccak256": "0xb264c03a3442eb37a68ad620cefd1182766b58bee6cec40343480392d6b14d69",
        "urls": [
          "bzz-raw://28879d01fd22c07b44f006612775f8577defbe459cb01685c5e25cd518c91a71",
          "dweb:/ipfs/QmVgfkwv2Fxw6hhTcDUZhE7NkoSKjab3ipM7UaRbt6uXb5"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol": {
        "keccak256": "0xabefac93435967b4d36a4fabcbdbb918d1f0b7ae3c3d85bc30923b326c927ed1",
        "urls": [
          "bzz-raw://9d213d3befca47da33f6db0310826bcdb148299805c10d77175ecfe1d06a9a68",
          "dweb:/ipfs/QmRgCn6SP1hbBkExUADFuDo8xkT4UU47yjNF5FhCeRbQmS"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol": {
        "keccak256": "0x2c309e7df9e05e6ce15bedfe74f3c61b467fc37e0fae9eab496acf5ea0bbd7ff",
        "urls": [
          "bzz-raw://7063b5c98711a98018ba4635ac74cee1c1cfa2ea01099498e062699ed9530005",
          "dweb:/ipfs/QmeJ8rGXkcv7RrqLdAW8PCXPAykxVsddfYY6g5NaTwmRFE"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol": {
        "keccak256": "0x5bce51e11f7d194b79ea59fe00c9e8de9fa2c5530124960f29a24d4c740a3266",
        "urls": [
          "bzz-raw://7e66dfde185df46104c11bc89d08fa0760737aa59a2b8546a656473d810a8ea4",
          "dweb:/ipfs/QmXvyqtXPaPss2PD7eqPoSao5Szm2n6UMoiG8TZZDjmChR"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol": {
        "keccak256": "0xa82b58eca1ee256be466e536706850163d2ec7821945abd6b4778cfb3bee37da",
        "urls": [
          "bzz-raw://6e75cf83beb757b8855791088546b8337e9d4684e169400c20d44a515353b708",
          "dweb:/ipfs/QmYvPafLfoquiDMEj7CKHtvbgHu7TJNPSVPSCjrtjV8HjV"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol": {
        "keccak256": "0x75b829ff2f26c14355d1cba20e16fe7b29ca58eb5fef665ede48bc0f9c6c74b9",
        "urls": [
          "bzz-raw://a0a107160525724f9e1bbbab031defc2f298296dd9e331f16a6f7130cec32146",
          "dweb:/ipfs/QmemujxSd7gX8A9M8UwmNbz4Ms3U9FG9QfudUgxwvTmPWf"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/Address.sol": {
        "keccak256": "0x006dd67219697fe68d7fbfdea512e7c4cb64a43565ed86171d67e844982da6fa",
        "urls": [
          "bzz-raw://2455248c8ddd9cc6a7af76a13973cddf222072427e7b0e2a7d1aff345145e931",
          "dweb:/ipfs/QmfYjnjRbWqYpuxurqveE6HtzsY1Xx323J428AKQgtBJZm"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/Context.sol": {
        "keccak256": "0xa92e4fa126feb6907daa0513ddd816b2eb91f30a808de54f63c17d0e162c3439",
        "urls": [
          "bzz-raw://a367861093b74443b137564d3f3c472f70bcf114739e62059c939f25e315706c",
          "dweb:/ipfs/Qmd7JMpcxD9RuQjK3uM3EzJUgSqdN8vzp8eytEiuwxQJ6h"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/Strings.sol": {
        "keccak256": "0x3088eb2868e8d13d89d16670b5f8612c4ab9ff8956272837d8e90106c59c14a0",
        "urls": [
          "bzz-raw://b81d9ff6559ea5c47fc573e17ece6d9ba5d6839e213e6ebc3b4c5c8fe4199d7f",
          "dweb:/ipfs/QmPCW1bFisUzJkyjroY3yipwfism9RRCigCcK1hbXtVM8n"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol": {
        "keccak256": "0x809bc3edb4bcbef8263fa616c1b60ee0004b50a8a1bfa164d8f57fd31f520c58",
        "urls": [
          "bzz-raw://8b93a1e39a4a19eba1600b92c96f435442db88cac91e315c8291547a2a7bcfe2",
          "dweb:/ipfs/QmTm34KVe6uZBZwq8dZDNWwPcm24qBJdxqL3rPxBJ4LrMv"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol": {
        "keccak256": "0xcf688741f79f4838d5301dcf72d0af9eff11bbab6ab0bb112ad144c7fb672dac",
        "urls": [
          "bzz-raw://85d9c87a481fe99fd28a146c205da0867ef7e1b7edbe0036abc86d2e64eb1f04",
          "dweb:/ipfs/QmR7m1zWQNfZHUKTtqnjoCjCBbNFcjCxV27rxf6iMfhVtG"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol": {
        "keccak256": "0xd10975de010d89fd1c78dc5e8a9a7e7f496198085c151648f20cba166b32582b",
        "urls": [
          "bzz-raw://fb0048dee081f6fffa5f74afc3fb328483c2a30504e94a0ddd2a5114d731ec4d",
          "dweb:/ipfs/QmZptt1nmYoA5SgjwnSgWqgUSDgm4q52Yos3xhnMv3MV43"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol": {
        "keccak256": "0x5a08ad61f4e82b8a3323562661a86fb10b10190848073fdc13d4ac43710ffba5",
        "urls": [
          "bzz-raw://6f7bb74cf88fd88daa34e118bc6e363381d05044f34f391d39a10c0c9dac3ebd",
          "dweb:/ipfs/QmNbQ3v8v4zuDtg7VeLAbdhAm3tCzUodNoDZZ8ekmCHWZX"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol": {
        "keccak256": "0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1",
        "urls": [
          "bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f",
          "dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/math/Math.sol": {
        "keccak256": "0xe4455ac1eb7fc497bb7402579e7b4d64d928b846fce7d2b6fde06d366f21c2b3",
        "urls": [
          "bzz-raw://cc8841b3cd48ad125e2f46323c8bad3aa0e88e399ec62acb9e57efa7e7c8058c",
          "dweb:/ipfs/QmSqE4mXHA2BXW58deDbXE8MTcsL5JSKNDbm23sVQxRLPS"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol": {
        "keccak256": "0x52a8cfb0f5239d11b457dcdd1b326992ef672714ca8da71a157255bddd13f3ad",
        "urls": [
          "bzz-raw://495145362c7ff1c9ca88c58bbbbcb412e3c2004406647412394486552ff6c278",
          "dweb:/ipfs/QmNNCeng6d5eRPDn6tkWSQhjE39XWfQEfjA63rRwHmr1iH"
        ],
        "license": "MIT"
      },
      "lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol": {
        "keccak256": "0xf92515413956f529d95977adc9b0567d583c6203fc31ab1c23824c35187e3ddc",
        "urls": [
          "bzz-raw://c50fcc459e49a9858b6d8ad5f911295cb7c9ab57567845a250bf0153f84a95c7",
          "dweb:/ipfs/QmcEW85JRzvDkQggxiBBLVAasXWdkhEysqypj9EaB6H2g6"
        ],
        "license": "MIT"
      },
      "src/PWNErrors.sol": {
        "keccak256": "0x8a0e516fc8ddf54aecb82d5cbd19b6f263950a91d4411d1d4c54b90fae010692",
        "urls": [
          "bzz-raw://b9cd08003376c48cdaf6279c4237a38efb1e26080bc29de3343bcfe397a4bb0f",
          "dweb:/ipfs/QmXtMtn71ZzRu1rGQLq8u5vnDy4k462d7mGtu1jFd7ZBJG"
        ],
        "license": "GPL-3.0-only"
      },
      "src/config/PWNConfig.sol": {
        "keccak256": "0x15a2ab788f84df29b960d50b33803130bdd61fe7c0ce76d4f6bf76da7cccb594",
        "urls": [
          "bzz-raw://b1310535db741a5a7a0aff71f34ef329c7f5bf3117f9c38587e4090bec340fb4",
          "dweb:/ipfs/QmYRWwiSAyZMdxSqMYU1K2YRFzBW7L2dHXktx1BdFW9fP5"
        ],
        "license": "GPL-3.0-only"
      },
      "src/hub/PWNHub.sol": {
        "keccak256": "0x92ad9edafc151bc7efc1b132c1be55966bb692860a94803a74ce5a948985126c",
        "urls": [
          "bzz-raw://a04dbfe0ea39f7cd04b7947cac66ce77745ecc20a24aad3f8d35a6d319eec202",
          "dweb:/ipfs/QmbxoqEtL4YwMQDfCydurWLHeVjL1Yjc4Ty4vsRoCqXabv"
        ],
        "license": "GPL-3.0-only"
      },
      "src/hub/PWNHubAccessControl.sol": {
        "keccak256": "0x310e0389c98971c4d6c25d8756c1e8a962c8b22c54e3ce6d80a383fb5b755448",
        "urls": [
          "bzz-raw://63748084b8c8a9e2cce98a87d27a8baf353fae903641d6fdfc2cdc4ed229243f",
          "dweb:/ipfs/QmVywLNCBeWkNdWjpdumnAam1Shwj8k3DxxpRcWAK997Nw"
        ],
        "license": "GPL-3.0-only"
      },
      "src/hub/PWNHubTags.sol": {
        "keccak256": "0xd1e685e8075f1f16835d38cfe39b1eee9edbf75089a0109002f7b2bfe14c177a",
        "urls": [
          "bzz-raw://4a01df6b1c2cf493017b7abb4b9ec6ac16c9b1c3498b16ccbdc4f2045909dde8",
          "dweb:/ipfs/QmcYEgSZrE33YKxDDBvhVgZTfT9Tj1RTEX3iA717zZyspJ"
        ],
        "license": "GPL-3.0-only"
      },
      "src/interfaces/ICryptoKitties.sol": {
        "keccak256": "0x9aaa7f948d4f2121d764b5664fe1c8431b3c5bfce780228eceb56d1589681706",
        "urls": [
          "bzz-raw://05416e111c8ff6a1464248ac387e8c69015c355e949967586d514d9d17d619aa",
          "dweb:/ipfs/QmVK5Q6bS1CevgdxB17RJ9BGZsspCXdY5Y5dX4cpgQ4Rze"
        ],
        "license": "MIT"
      },
      "src/interfaces/IERC5646.sol": {
        "keccak256": "0xff5ce494375d2cf5a67fe9460ea66aa3572b8a0434ae538cbac0a55f7aac5c5e",
        "urls": [
          "bzz-raw://e8e2b472fa80a92ae12985da77056f68f0e0f36fca7ac37b6d30db82a2527180",
          "dweb:/ipfs/QmdFTGSCaPcVfthbGSUuiyhivqBx6xN9dCL14PCbR39Wki"
        ],
        "license": "GPL-3.0-only"
      },
      "src/interfaces/IMultiTokenCategoryRegistry.sol": {
        "keccak256": "0x5607c7415785a07c7226638ab7d16ae9a87906e5eafb06e723944144b8f7c48a",
        "urls": [
          "bzz-raw://dd5f1d39f2acb6cda18a1199e06be211deccce27478de077d942ced8ada6e0b1",
          "dweb:/ipfs/Qmdx2uXjyoyyqNQU5aQTpagujxSVAfS17Sc3ziJGAofXnX"
        ],
        "license": "MIT"
      },
      "src/interfaces/IPWNLoanMetadataProvider.sol": {
        "keccak256": "0x6cc991fd9c8c88e0a69e835fcd514868836e2432b12454dfcb6a681a3a9d13b8",
        "urls": [
          "bzz-raw://69fd07433fd7eb2f1474d778476240434fa79a31525341d88a588573562389c6",
          "dweb:/ipfs/Qmb6gWNQD96oSgwH5Yf6eMHxYWXZwCPrd7MvK86r7UKhZK"
        ],
        "license": "GPL-3.0-only"
      },
      "src/interfaces/IPoolAdapter.sol": {
        "keccak256": "0xe0309b4e7da2046095c7dc943d953f32d2a46b0ad64beaf3f4ed1b440fe43f89",
        "urls": [
          "bzz-raw://15870bf95e096b35620787a0eba49f7becbaff738651a83bd28310d022cdc93b",
          "dweb:/ipfs/QmZPYmxrjB6SFWr5arTztrDofQ6XdyzXTUMeaQt5wcbv3T"
        ],
        "license": "GPL-3.0-only"
      },
      "src/interfaces/IStateFingerpringComputer.sol": {
        "keccak256": "0xb2f72031bdd6b6ac7179ca9af90c290d37bcc43d6bab4db6e0b1ee7c7b4f72a2",
        "urls": [
          "bzz-raw://d8de3c648f1afab5458e553042a59b0df3d8d54be1a488e891de70821745da0c",
          "dweb:/ipfs/QmQ6QoeMgZGdVjJ2aAt8t1AuBCJ95m6BRSR1GKRqVk4jct"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/lib/PWNFeeCalculator.sol": {
        "keccak256": "0xab8eb0be2d2e5a7c909a326de53459ae2ed6fd7cdd3985719515f279f952fcdf",
        "urls": [
          "bzz-raw://4ca7a9d230ab90b46cdb1a16bd99af5639af7adcf2250a20b7e1f77c952344f5",
          "dweb:/ipfs/QmXzwraVHPmrVFtR4tkm5JqafygeDDvbQbkKu33EYUWLMq"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/lib/PWNSignatureChecker.sol": {
        "keccak256": "0xb76220c904f1b4c9e08166c4175746b161aaf70be14dc22b1a335f351970d1fd",
        "urls": [
          "bzz-raw://846d1cc6b7f1ba8b0bc6b5836aad018828bc1ad8f6f994ec59d24f6617d91fc1",
          "dweb:/ipfs/QmWe7cAsDysa6Qjn9vBAiHW4iaPmZnaeVmqxnwRMikgSCM"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/terms/simple/loan/PWNSimpleLoan.sol": {
        "keccak256": "0x6dd44efd796277aeb5a7712591cfbee10ea3058c0f8f97f9c6111297714d3155",
        "urls": [
          "bzz-raw://0a65b5a30ea71966c8deaa54f621985568fbcbe37bcb6174219410837c9722d9",
          "dweb:/ipfs/QmWzCC35n2a2GsqEkU27i1LKGjqhYTZ1wLfEBnUxsPRrfr"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/terms/simple/proposal/PWNSimpleLoanProposal.sol": {
        "keccak256": "0xa0569c9949bfcd4995d813e1bfe3cb89dcf55293e2fb7728ade49d49be1c6d2d",
        "urls": [
          "bzz-raw://d94dc60f4f6591cac65d95bea69a8b6364589977b085892f334e4224ce3b754d",
          "dweb:/ipfs/QmV3NaHYz3bNbXsKbrHEJxBuLHJyStB6917hJ1D7dtqhs5"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/terms/simple/proposal/PWNSimpleLoanSimpleProposal.sol": {
        "keccak256": "0x69b24da24443ebfaed2095aa3925b56e744a25129f84296f033a88e63173689c",
        "urls": [
          "bzz-raw://0e343ddf85d3500dc7bfab1f078a22c4c2aa3860baa42b67844aafbe1233b865",
          "dweb:/ipfs/QmRSKg7E8rayxA2ZRmETkptDWMMHrvPyc81z7me6XfHfgA"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/token/PWNLOAN.sol": {
        "keccak256": "0x92981fb0bd0abcadc45b0f88bfc5fcc960ce7a5b79494fc6c9fd5990b197c764",
        "urls": [
          "bzz-raw://e10726f492991694d751b68bf87a352f1284710ba311614295381a58ebfd226e",
          "dweb:/ipfs/Qmct6PYHSqHo9K9rGAif9ohBpJuQnTBWdHJRdENpetGg7k"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/vault/PWNVault.sol": {
        "keccak256": "0x00f3a6cad5f19a0a818d351a5aa849e41a34bf0251a872d4993d40d77468f29e",
        "urls": [
          "bzz-raw://01942d7d871fe64f229820f5f90be23b647e438d951531a5f60a470f8093977e",
          "dweb:/ipfs/QmcyDXfCdgSQ8P454JxfuTzNBSxfpzeJ9aTPBefTH3dTvK"
        ],
        "license": "GPL-3.0-only"
      },
      "src/loan/vault/Permit.sol": {
        "keccak256": "0xce0acf24731cfaa49535adea5c0c6ebade736d35f3f54a8150ef175a693e3cee",
        "urls": [
          "bzz-raw://3542ad1e3295c63363fe825d3e46ad447fcd614f31f4dadeea39d24086e02c7a",
          "dweb:/ipfs/QmVjAuaQ1UdqgJAmvR8pdXQCb3Zy7fDQeBtbx9ZTbCQic4"
        ],
        "license": "GPL-3.0-only"
      },
      "src/nonce/PWNRevokedNonce.sol": {
        "keccak256": "0xc0c75afa97243c3ef711e04cc9ffd0b3d44fa7999333b0048dc37b562a4cc06e",
        "urls": [
          "bzz-raw://5b2b7271b9505f35a05d2d68803f20116b621dcecfc528806225e0280b0a420e",
          "dweb:/ipfs/QmZh95WUcgTHz7ifsQhmrq1wCjvDXfwwh9G7k49otPisxx"
        ],
        "license": "GPL-3.0-only"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "src/loan/terms/simple/proposal/PWNSimpleLoanSimpleProposal.sol",
    "id": 65545,
    "exportedSymbols": {
      "MultiToken": [
        1132
      ],
      "PWNSimpleLoan": [
        63281
      ],
      "PWNSimpleLoanProposal": [
        65236
      ],
      "PWNSimpleLoanSimpleProposal": [
        65544
      ]
    },
    "nodeType": "SourceUnit",
    "src": "41:8899:91",
    "nodes": [
      {
        "id": 65238,
        "nodeType": "PragmaDirective",
        "src": "41:23:91",
        "nodes": [],
        "literals": [
          "solidity",
          "0.8",
          ".16"
        ]
      },
      {
        "id": 65240,
        "nodeType": "ImportDirective",
        "src": "66:55:91",
        "nodes": [],
        "absolutePath": "lib/MultiToken/src/MultiToken.sol",
        "file": "MultiToken/MultiToken.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 65545,
        "sourceUnit": 1133,
        "symbolAliases": [
          {
            "foreign": {
              "id": 65239,
              "name": "MultiToken",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 1132,
              "src": "75:10:91",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 65242,
        "nodeType": "ImportDirective",
        "src": "123:77:91",
        "nodes": [],
        "absolutePath": "src/loan/terms/simple/loan/PWNSimpleLoan.sol",
        "file": "pwn/loan/terms/simple/loan/PWNSimpleLoan.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 65545,
        "sourceUnit": 63282,
        "symbolAliases": [
          {
            "foreign": {
              "id": 65241,
              "name": "PWNSimpleLoan",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 63281,
              "src": "132:13:91",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 65244,
        "nodeType": "ImportDirective",
        "src": "201:97:91",
        "nodes": [],
        "absolutePath": "src/loan/terms/simple/proposal/PWNSimpleLoanProposal.sol",
        "file": "pwn/loan/terms/simple/proposal/PWNSimpleLoanProposal.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 65545,
        "sourceUnit": 65237,
        "symbolAliases": [
          {
            "foreign": {
              "id": 65243,
              "name": "PWNSimpleLoanProposal",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 65236,
              "src": "210:21:91",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "id": 65544,
        "nodeType": "ContractDefinition",
        "src": "421:8518:91",
        "nodes": [
          {
            "id": 65250,
            "nodeType": "VariableDeclaration",
            "src": "490:38:91",
            "nodes": [],
            "constant": true,
            "functionSelector": "ffa1ad74",
            "mutability": "constant",
            "name": "VERSION",
            "nameLocation": "513:7:91",
            "scope": 65544,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_string_memory_ptr",
              "typeString": "string"
            },
            "typeName": {
              "id": 65248,
              "name": "string",
              "nodeType": "ElementaryTypeName",
              "src": "490:6:91",
              "typeDescriptions": {
                "typeIdentifier": "t_string_storage_ptr",
                "typeString": "string"
              }
            },
            "value": {
              "hexValue": "312e32",
              "id": 65249,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "523:5:91",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_72fde8556a44472a9465c32773a7311620e335fb2293061673df3c1dc72c1df3",
                "typeString": "literal_string \"1.2\""
              },
              "value": "1.2"
            },
            "visibility": "public"
          },
          {
            "id": 65256,
            "nodeType": "VariableDeclaration",
            "src": "605:569:91",
            "nodes": [],
            "constant": true,
            "documentation": {
              "id": 65251,
              "nodeType": "StructuredDocumentation",
              "src": "535:65:91",
              "text": " @dev EIP-712 simple proposal struct type hash."
            },
            "functionSelector": "853b94a0",
            "mutability": "constant",
            "name": "PROPOSAL_TYPEHASH",
            "nameLocation": "629:17:91",
            "scope": 65544,
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 65252,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "605:7:91",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "50726f706f73616c2875696e743820636f6c6c61746572616c43617465676f72792c6164647265737320636f6c6c61746572616c416464726573732c75696e7432353620636f6c6c61746572616c49642c75696e7432353620636f6c6c61746572616c416d6f756e742c626f6f6c20636865636b436f6c6c61746572616c537461746546696e6765727072696e742c6279746573333220636f6c6c61746572616c537461746546696e6765727072696e742c6164647265737320637265646974416464726573732c75696e7432353620637265646974416d6f756e742c75696e7432353620617661696c61626c654372656469744c696d69742c75696e74323536206669786564496e746572657374416d6f756e742c75696e743430206163637275696e67496e7465726573744150522c75696e743332206475726174696f6e2c75696e7434302065787069726174696f6e2c6164647265737320616c6c6f7765644163636570746f722c616464726573732070726f706f7365722c627974657333322070726f706f73657253706563486173682c626f6f6c2069734f666665722c75696e7432353620726566696e616e63696e674c6f616e49642c75696e74323536206e6f6e636553706163652c75696e74323536206e6f6e63652c61646472657373206c6f616e436f6e747261637429",
                  "id": 65254,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "668:500:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_2b5f73ebb16e8e796c727d020a1a8f0190005ba40559ee87674fb8de78939b1a",
                    "typeString": "literal_string \"Proposal(uint8 collateralCategory,address collateralAddress,uint256 collateralId,uint256 collateralAmount,bool checkCollateralStateFingerprint,bytes32 collateralStateFingerprint,address creditAddress,uint256 creditAmount,uint256 availableCreditLimit,uint256 fixedInterestAmount,uint40 accruingInterestAPR,uint32 duration,uint40 expiration,address allowedAcceptor,address proposer,bytes32 proposerSpecHash,bool isOffer,uint256 refinancingLoanId,uint256 nonceSpace,uint256 nonce,address loanContract)\""
                  },
                  "value": "Proposal(uint8 collateralCategory,address collateralAddress,uint256 collateralId,uint256 collateralAmount,bool checkCollateralStateFingerprint,bytes32 collateralStateFingerprint,address creditAddress,uint256 creditAmount,uint256 availableCreditLimit,uint256 fixedInterestAmount,uint40 accruingInterestAPR,uint32 duration,uint40 expiration,address allowedAcceptor,address proposer,bytes32 proposerSpecHash,bool isOffer,uint256 refinancingLoanId,uint256 nonceSpace,uint256 nonce,address loanContract)"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_2b5f73ebb16e8e796c727d020a1a8f0190005ba40559ee87674fb8de78939b1a",
                    "typeString": "literal_string \"Proposal(uint8 collateralCategory,address collateralAddress,uint256 collateralId,uint256 collateralAmount,bool checkCollateralStateFingerprint,bytes32 collateralStateFingerprint,address creditAddress,uint256 creditAmount,uint256 availableCreditLimit,uint256 fixedInterestAmount,uint40 accruingInterestAPR,uint32 duration,uint40 expiration,address allowedAcceptor,address proposer,bytes32 proposerSpecHash,bool isOffer,uint256 refinancingLoanId,uint256 nonceSpace,uint256 nonce,address loanContract)\""
                  }
                ],
                "id": 65253,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "649:9:91",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 65255,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "nameLocations": [],
              "names": [],
              "nodeType": "FunctionCall",
              "src": "649:525:91",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "id": 65300,
            "nodeType": "StructDefinition",
            "src": "3759:715:91",
            "nodes": [],
            "canonicalName": "PWNSimpleLoanSimpleProposal.Proposal",
            "members": [
              {
                "constant": false,
                "id": 65259,
                "mutability": "mutable",
                "name": "collateralCategory",
                "nameLocation": "3805:18:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "3785:38:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_Category_$50",
                  "typeString": "enum MultiToken.Category"
                },
                "typeName": {
                  "id": 65258,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 65257,
                    "name": "MultiToken.Category",
                    "nameLocations": [
                      "3785:10:91",
                      "3796:8:91"
                    ],
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 50,
                    "src": "3785:19:91"
                  },
                  "referencedDeclaration": 50,
                  "src": "3785:19:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Category_$50",
                    "typeString": "enum MultiToken.Category"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65261,
                "mutability": "mutable",
                "name": "collateralAddress",
                "nameLocation": "3841:17:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "3833:25:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 65260,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "3833:7:91",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65263,
                "mutability": "mutable",
                "name": "collateralId",
                "nameLocation": "3876:12:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "3868:20:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 65262,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3868:7:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65265,
                "mutability": "mutable",
                "name": "collateralAmount",
                "nameLocation": "3906:16:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "3898:24:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 65264,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "3898:7:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65267,
                "mutability": "mutable",
                "name": "checkCollateralStateFingerprint",
                "nameLocation": "3937:31:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "3932:36:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 65266,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "3932:4:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65269,
                "mutability": "mutable",
                "name": "collateralStateFingerprint",
                "nameLocation": "3986:26:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "3978:34:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 65268,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "3978:7:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65271,
                "mutability": "mutable",
                "name": "creditAddress",
                "nameLocation": "4030:13:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4022:21:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 65270,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "4022:7:91",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65273,
                "mutability": "mutable",
                "name": "creditAmount",
                "nameLocation": "4061:12:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4053:20:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 65272,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4053:7:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65275,
                "mutability": "mutable",
                "name": "availableCreditLimit",
                "nameLocation": "4091:20:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4083:28:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 65274,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4083:7:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65277,
                "mutability": "mutable",
                "name": "fixedInterestAmount",
                "nameLocation": "4129:19:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4121:27:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 65276,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4121:7:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65279,
                "mutability": "mutable",
                "name": "accruingInterestAPR",
                "nameLocation": "4165:19:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4158:26:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                },
                "typeName": {
                  "id": 65278,
                  "name": "uint40",
                  "nodeType": "ElementaryTypeName",
                  "src": "4158:6:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65281,
                "mutability": "mutable",
                "name": "duration",
                "nameLocation": "4201:8:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4194:15:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 65280,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "4194:6:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65283,
                "mutability": "mutable",
                "name": "expiration",
                "nameLocation": "4226:10:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4219:17:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                },
                "typeName": {
                  "id": 65282,
                  "name": "uint40",
                  "nodeType": "ElementaryTypeName",
                  "src": "4219:6:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65285,
                "mutability": "mutable",
                "name": "allowedAcceptor",
                "nameLocation": "4254:15:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4246:23:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 65284,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "4246:7:91",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65287,
                "mutability": "mutable",
                "name": "proposer",
                "nameLocation": "4287:8:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4279:16:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 65286,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "4279:7:91",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65289,
                "mutability": "mutable",
                "name": "proposerSpecHash",
                "nameLocation": "4313:16:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4305:24:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 65288,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "4305:7:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65291,
                "mutability": "mutable",
                "name": "isOffer",
                "nameLocation": "4344:7:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4339:12:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 65290,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "4339:4:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65293,
                "mutability": "mutable",
                "name": "refinancingLoanId",
                "nameLocation": "4369:17:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4361:25:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 65292,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4361:7:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65295,
                "mutability": "mutable",
                "name": "nonceSpace",
                "nameLocation": "4404:10:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4396:18:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 65294,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4396:7:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65297,
                "mutability": "mutable",
                "name": "nonce",
                "nameLocation": "4432:5:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4424:13:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 65296,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "4424:7:91",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 65299,
                "mutability": "mutable",
                "name": "loanContract",
                "nameLocation": "4455:12:91",
                "nodeType": "VariableDeclaration",
                "scope": 65300,
                "src": "4447:20:91",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 65298,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "4447:7:91",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nameLocation": "3766:8:91",
            "scope": 65544,
            "visibility": "public"
          },
          {
            "id": 65310,
            "nodeType": "EventDefinition",
            "src": "4572:94:91",
            "nodes": [],
            "anonymous": false,
            "documentation": {
              "id": 65301,
              "nodeType": "StructuredDocumentation",
              "src": "4480:87:91",
              "text": " @notice Emitted when a proposal is made via an on-chain transaction."
            },
            "eventSelector": "e228ae64deb022978896dc961784e5e37437005800b772804f5cf7d66c76f464",
            "name": "ProposalMade",
            "nameLocation": "4578:12:91",
            "parameters": {
              "id": 65309,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65303,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "proposalHash",
                  "nameLocation": "4607:12:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65310,
                  "src": "4591:28:91",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 65302,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4591:7:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 65305,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "proposer",
                  "nameLocation": "4637:8:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65310,
                  "src": "4621:24:91",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 65304,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4621:7:91",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 65308,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "proposal",
                  "nameLocation": "4656:8:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65310,
                  "src": "4647:17:91",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                    "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal"
                  },
                  "typeName": {
                    "id": 65307,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 65306,
                      "name": "Proposal",
                      "nameLocations": [
                        "4647:8:91"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 65300,
                      "src": "4647:8:91"
                    },
                    "referencedDeclaration": 65300,
                    "src": "4647:8:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$65300_storage_ptr",
                      "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4590:75:91"
            }
          },
          {
            "id": 65327,
            "nodeType": "FunctionDefinition",
            "src": "4672:190:91",
            "nodes": [],
            "body": {
              "id": 65326,
              "nodeType": "Block",
              "src": "4860:2:91",
              "nodes": [],
              "statements": []
            },
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 65319,
                    "name": "_hub",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 65312,
                    "src": "4790:4:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "id": 65320,
                    "name": "_revokedNonce",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 65314,
                    "src": "4796:13:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "id": 65321,
                    "name": "_config",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 65316,
                    "src": "4811:7:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  {
                    "hexValue": "50574e53696d706c654c6f616e53696d706c6550726f706f73616c",
                    "id": 65322,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4820:29:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_48605b18ef56d04564be08b27737e278b0f917522c38cf783b322b747c18a589",
                      "typeString": "literal_string \"PWNSimpleLoanSimpleProposal\""
                    },
                    "value": "PWNSimpleLoanSimpleProposal"
                  },
                  {
                    "id": 65323,
                    "name": "VERSION",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 65250,
                    "src": "4851:7:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  }
                ],
                "id": 65324,
                "kind": "baseConstructorSpecifier",
                "modifierName": {
                  "id": 65318,
                  "name": "PWNSimpleLoanProposal",
                  "nameLocations": [
                    "4768:21:91"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 65236,
                  "src": "4768:21:91"
                },
                "nodeType": "ModifierInvocation",
                "src": "4768:91:91"
              }
            ],
            "name": "",
            "nameLocation": "-1:-1:-1",
            "parameters": {
              "id": 65317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65312,
                  "mutability": "mutable",
                  "name": "_hub",
                  "nameLocation": "4701:4:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65327,
                  "src": "4693:12:91",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 65311,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4693:7:91",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 65314,
                  "mutability": "mutable",
                  "name": "_revokedNonce",
                  "nameLocation": "4723:13:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65327,
                  "src": "4715:21:91",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 65313,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4715:7:91",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 65316,
                  "mutability": "mutable",
                  "name": "_config",
                  "nameLocation": "4754:7:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65327,
                  "src": "4746:15:91",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 65315,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4746:7:91",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4683:84:91"
            },
            "returnParameters": {
              "id": 65325,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4860:0:91"
            },
            "scope": 65544,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 65345,
            "nodeType": "FunctionDefinition",
            "src": "5031:164:91",
            "nodes": [],
            "body": {
              "id": 65344,
              "nodeType": "Block",
              "src": "5114:81:91",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 65337,
                        "name": "PROPOSAL_TYPEHASH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65256,
                        "src": "5148:17:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 65340,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 65331,
                            "src": "5178:8:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$65300_calldata_ptr",
                              "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_struct$_Proposal_$65300_calldata_ptr",
                              "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal calldata"
                            }
                          ],
                          "expression": {
                            "id": 65338,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "5167:3:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 65339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberLocation": "5171:6:91",
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "5167:10:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 65341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5167:20:91",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 65336,
                      "name": "_getProposalHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 64872,
                      "src": "5131:16:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,bytes memory) view returns (bytes32)"
                      }
                    },
                    "id": 65342,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5131:57:91",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 65335,
                  "id": 65343,
                  "nodeType": "Return",
                  "src": "5124:64:91"
                }
              ]
            },
            "documentation": {
              "id": 65328,
              "nodeType": "StructuredDocumentation",
              "src": "4868:158:91",
              "text": " @notice Get an proposal hash according to EIP-712\n @param proposal Proposal struct to be hashed.\n @return Proposal struct hash."
            },
            "functionSelector": "382c0cdd",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getProposalHash",
            "nameLocation": "5040:15:91",
            "parameters": {
              "id": 65332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65331,
                  "mutability": "mutable",
                  "name": "proposal",
                  "nameLocation": "5074:8:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65345,
                  "src": "5056:26:91",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$65300_calldata_ptr",
                    "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal"
                  },
                  "typeName": {
                    "id": 65330,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 65329,
                      "name": "Proposal",
                      "nameLocations": [
                        "5056:8:91"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 65300,
                      "src": "5056:8:91"
                    },
                    "referencedDeclaration": 65300,
                    "src": "5056:8:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$65300_storage_ptr",
                      "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5055:28:91"
            },
            "returnParameters": {
              "id": 65335,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65334,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 65345,
                  "src": "5105:7:91",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 65333,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5105:7:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5104:9:91"
            },
            "scope": 65544,
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 65374,
            "nodeType": "FunctionDefinition",
            "src": "5438:273:91",
            "nodes": [],
            "body": {
              "id": 65373,
              "nodeType": "Block",
              "src": "5528:183:91",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "id": 65358,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 65354,
                      "name": "proposalHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 65352,
                      "src": "5538:12:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 65356,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 65349,
                          "src": "5569:8:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$65300_calldata_ptr",
                            "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal calldata"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Proposal_$65300_calldata_ptr",
                            "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal calldata"
                          }
                        ],
                        "id": 65355,
                        "name": "getProposalHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65345,
                        "src": "5553:15:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_struct$_Proposal_$65300_calldata_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (struct PWNSimpleLoanSimpleProposal.Proposal calldata) view returns (bytes32)"
                        }
                      },
                      "id": 65357,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5553:25:91",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "5538:40:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 65359,
                  "nodeType": "ExpressionStatement",
                  "src": "5538:40:91"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 65361,
                        "name": "proposalHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65352,
                        "src": "5602:12:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 65362,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 65349,
                          "src": "5616:8:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$65300_calldata_ptr",
                            "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal calldata"
                          }
                        },
                        "id": 65363,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5625:8:91",
                        "memberName": "proposer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 65287,
                        "src": "5616:17:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 65360,
                      "name": "_makeProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 64897,
                      "src": "5588:13:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 65364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5588:46:91",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 65365,
                  "nodeType": "ExpressionStatement",
                  "src": "5588:46:91"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 65367,
                        "name": "proposalHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65352,
                        "src": "5662:12:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "expression": {
                          "id": 65368,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 65349,
                          "src": "5676:8:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$65300_calldata_ptr",
                            "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal calldata"
                          }
                        },
                        "id": 65369,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "5685:8:91",
                        "memberName": "proposer",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 65287,
                        "src": "5676:17:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 65370,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65349,
                        "src": "5695:8:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$65300_calldata_ptr",
                          "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_struct$_Proposal_$65300_calldata_ptr",
                          "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal calldata"
                        }
                      ],
                      "id": 65366,
                      "name": "ProposalMade",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 65310,
                      "src": "5649:12:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_struct$_Proposal_$65300_memory_ptr_$returns$__$",
                        "typeString": "function (bytes32,address,struct PWNSimpleLoanSimpleProposal.Proposal memory)"
                      }
                    },
                    "id": 65371,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5649:55:91",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 65372,
                  "nodeType": "EmitStatement",
                  "src": "5644:60:91"
                }
              ]
            },
            "documentation": {
              "id": 65346,
              "nodeType": "StructuredDocumentation",
              "src": "5201:232:91",
              "text": " @notice Make an on-chain proposal.\n @dev Function will mark a proposal hash as proposed.\n @param proposal Proposal struct containing all needed proposal data.\n @return proposalHash Proposal hash."
            },
            "functionSelector": "83f19a0b",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "makeProposal",
            "nameLocation": "5447:12:91",
            "parameters": {
              "id": 65350,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65349,
                  "mutability": "mutable",
                  "name": "proposal",
                  "nameLocation": "5478:8:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65374,
                  "src": "5460:26:91",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$65300_calldata_ptr",
                    "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal"
                  },
                  "typeName": {
                    "id": 65348,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 65347,
                      "name": "Proposal",
                      "nameLocations": [
                        "5460:8:91"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 65300,
                      "src": "5460:8:91"
                    },
                    "referencedDeclaration": 65300,
                    "src": "5460:8:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$65300_storage_ptr",
                      "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5459:28:91"
            },
            "returnParameters": {
              "id": 65353,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65352,
                  "mutability": "mutable",
                  "name": "proposalHash",
                  "nameLocation": "5514:12:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65374,
                  "src": "5506:20:91",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 65351,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5506:7:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5505:22:91"
            },
            "scope": 65544,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 65389,
            "nodeType": "FunctionDefinition",
            "src": "5862:135:91",
            "nodes": [],
            "body": {
              "id": 65388,
              "nodeType": "Block",
              "src": "5953:44:91",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 65385,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65378,
                        "src": "5981:8:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                          "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                          "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                        }
                      ],
                      "expression": {
                        "id": 65383,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "5970:3:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 65384,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "5974:6:91",
                      "memberName": "encode",
                      "nodeType": "MemberAccess",
                      "src": "5970:10:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function () pure returns (bytes memory)"
                      }
                    },
                    "id": 65386,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5970:20:91",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 65382,
                  "id": 65387,
                  "nodeType": "Return",
                  "src": "5963:27:91"
                }
              ]
            },
            "documentation": {
              "id": 65375,
              "nodeType": "StructuredDocumentation",
              "src": "5717:140:91",
              "text": " @notice Encode proposal data.\n @param proposal Proposal struct to be encoded.\n @return Encoded proposal data."
            },
            "functionSelector": "5b3275e2",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "encodeProposalData",
            "nameLocation": "5871:18:91",
            "parameters": {
              "id": 65379,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65378,
                  "mutability": "mutable",
                  "name": "proposal",
                  "nameLocation": "5906:8:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65389,
                  "src": "5890:24:91",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                    "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal"
                  },
                  "typeName": {
                    "id": 65377,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 65376,
                      "name": "Proposal",
                      "nameLocations": [
                        "5890:8:91"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 65300,
                      "src": "5890:8:91"
                    },
                    "referencedDeclaration": 65300,
                    "src": "5890:8:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$65300_storage_ptr",
                      "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5889:26:91"
            },
            "returnParameters": {
              "id": 65382,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65381,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 65389,
                  "src": "5939:12:91",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 65380,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5939:5:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5938:14:91"
            },
            "scope": 65544,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "id": 65406,
            "nodeType": "FunctionDefinition",
            "src": "6146:153:91",
            "nodes": [],
            "body": {
              "id": 65405,
              "nodeType": "Block",
              "src": "6239:60:91",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 65400,
                        "name": "proposalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65392,
                        "src": "6267:12:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 65401,
                            "name": "Proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 65300,
                            "src": "6282:8:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_Proposal_$65300_storage_ptr_$",
                              "typeString": "type(struct PWNSimpleLoanSimpleProposal.Proposal storage pointer)"
                            }
                          }
                        ],
                        "id": 65402,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6281:10:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Proposal_$65300_storage_ptr_$",
                          "typeString": "type(struct PWNSimpleLoanSimpleProposal.Proposal storage pointer)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_struct$_Proposal_$65300_storage_ptr_$",
                          "typeString": "type(struct PWNSimpleLoanSimpleProposal.Proposal storage pointer)"
                        }
                      ],
                      "expression": {
                        "id": 65398,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -1,
                        "src": "6256:3:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 65399,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberLocation": "6260:6:91",
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "6256:10:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 65403,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6256:36:91",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                      "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                    }
                  },
                  "functionReturnParameters": 65397,
                  "id": 65404,
                  "nodeType": "Return",
                  "src": "6249:43:91"
                }
              ]
            },
            "documentation": {
              "id": 65390,
              "nodeType": "StructuredDocumentation",
              "src": "6003:138:91",
              "text": " @notice Decode proposal data.\n @param proposalData Encoded proposal data.\n @return Decoded proposal struct."
            },
            "functionSelector": "2d5d17fc",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "decodeProposalData",
            "nameLocation": "6155:18:91",
            "parameters": {
              "id": 65393,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65392,
                  "mutability": "mutable",
                  "name": "proposalData",
                  "nameLocation": "6187:12:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65406,
                  "src": "6174:25:91",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 65391,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6174:5:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6173:27:91"
            },
            "returnParameters": {
              "id": 65397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65396,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 65406,
                  "src": "6222:15:91",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                    "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal"
                  },
                  "typeName": {
                    "id": 65395,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 65394,
                      "name": "Proposal",
                      "nameLocations": [
                        "6222:8:91"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 65300,
                      "src": "6222:8:91"
                    },
                    "referencedDeclaration": 65300,
                    "src": "6222:8:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$65300_storage_ptr",
                      "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6221:17:91"
            },
            "scope": 65544,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          },
          {
            "id": 65543,
            "nodeType": "FunctionDefinition",
            "src": "6362:2574:91",
            "nodes": [],
            "body": {
              "id": 65542,
              "nodeType": "Block",
              "src": "6662:2274:91",
              "nodes": [],
              "statements": [
                {
                  "assignments": [
                    65429
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 65429,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nameLocation": "6720:8:91",
                      "nodeType": "VariableDeclaration",
                      "scope": 65542,
                      "src": "6704:24:91",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                        "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal"
                      },
                      "typeName": {
                        "id": 65428,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 65427,
                          "name": "Proposal",
                          "nameLocations": [
                            "6704:8:91"
                          ],
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 65300,
                          "src": "6704:8:91"
                        },
                        "referencedDeclaration": 65300,
                        "src": "6704:8:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$65300_storage_ptr",
                          "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 65433,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 65431,
                        "name": "proposalData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65413,
                        "src": "6750:12:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "id": 65430,
                      "name": "decodeProposalData",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 65406,
                      "src": "6731:18:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_struct$_Proposal_$65300_memory_ptr_$",
                        "typeString": "function (bytes memory) pure returns (struct PWNSimpleLoanSimpleProposal.Proposal memory)"
                      }
                    },
                    "id": 65432,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6731:32:91",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                      "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6704:59:91"
                },
                {
                  "expression": {
                    "id": 65442,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 65434,
                      "name": "proposalHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 65422,
                      "src": "6804:12:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 65436,
                          "name": "PROPOSAL_TYPEHASH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 65256,
                          "src": "6836:17:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "id": 65439,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "6866:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            ],
                            "expression": {
                              "id": 65437,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "6855:3:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 65438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "6859:6:91",
                            "memberName": "encode",
                            "nodeType": "MemberAccess",
                            "src": "6855:10:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 65440,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6855:20:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 65435,
                        "name": "_getProposalHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 64872,
                        "src": "6819:16:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes32,bytes memory) view returns (bytes32)"
                        }
                      },
                      "id": 65441,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6819:57:91",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "6804:72:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 65443,
                  "nodeType": "ExpressionStatement",
                  "src": "6804:72:91"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 65445,
                        "name": "acceptor",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65409,
                        "src": "6950:8:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 65446,
                        "name": "refinancingLoanId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65411,
                        "src": "6972:17:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 65447,
                        "name": "proposalHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65422,
                        "src": "7003:12:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "id": 65448,
                        "name": "proposalInclusionProof",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65416,
                        "src": "7029:22:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        }
                      },
                      {
                        "id": 65449,
                        "name": "signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 65418,
                        "src": "7065:9:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 65451,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7138:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65452,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7147:17:91",
                            "memberName": "collateralAddress",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65261,
                            "src": "7138:26:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 65453,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7196:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65454,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7205:12:91",
                            "memberName": "collateralId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65263,
                            "src": "7196:21:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 65455,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7268:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65456,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7277:31:91",
                            "memberName": "checkCollateralStateFingerprint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65267,
                            "src": "7268:40:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "expression": {
                              "id": 65457,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7354:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65458,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7363:26:91",
                            "memberName": "collateralStateFingerprint",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65269,
                            "src": "7354:35:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "expression": {
                              "id": 65459,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7421:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65460,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7430:12:91",
                            "memberName": "creditAmount",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65273,
                            "src": "7421:21:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 65461,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7482:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65462,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7491:20:91",
                            "memberName": "availableCreditLimit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65275,
                            "src": "7482:29:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 65463,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7541:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65464,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7550:10:91",
                            "memberName": "expiration",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65283,
                            "src": "7541:19:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            }
                          },
                          {
                            "expression": {
                              "id": 65465,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7595:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65466,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7604:15:91",
                            "memberName": "allowedAcceptor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65285,
                            "src": "7595:24:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 65467,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7647:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65468,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7656:8:91",
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65287,
                            "src": "7647:17:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "expression": {
                              "id": 65469,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7691:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65470,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7700:7:91",
                            "memberName": "isOffer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65291,
                            "src": "7691:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "expression": {
                              "id": 65471,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7744:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65472,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7753:17:91",
                            "memberName": "refinancingLoanId",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65293,
                            "src": "7744:26:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 65473,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7800:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65474,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7809:10:91",
                            "memberName": "nonceSpace",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65295,
                            "src": "7800:19:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 65475,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7844:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65476,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7853:5:91",
                            "memberName": "nonce",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65297,
                            "src": "7844:14:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 65477,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "7890:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65478,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "7899:12:91",
                            "memberName": "loanContract",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65299,
                            "src": "7890:21:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint40",
                              "typeString": "uint40"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 65450,
                          "name": "ProposalBase",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 64649,
                          "src": "7088:12:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_ProposalBase_$64649_storage_ptr_$",
                            "typeString": "type(struct PWNSimpleLoanProposal.ProposalBase storage pointer)"
                          }
                        },
                        "id": 65479,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "nameLocations": [
                          "7119:17:91",
                          "7182:12:91",
                          "7235:31:91",
                          "7326:26:91",
                          "7407:12:91",
                          "7460:20:91",
                          "7529:10:91",
                          "7578:15:91",
                          "7637:8:91",
                          "7682:7:91",
                          "7725:17:91",
                          "7788:10:91",
                          "7837:5:91",
                          "7876:12:91"
                        ],
                        "names": [
                          "collateralAddress",
                          "collateralId",
                          "checkCollateralStateFingerprint",
                          "collateralStateFingerprint",
                          "creditAmount",
                          "availableCreditLimit",
                          "expiration",
                          "allowedAcceptor",
                          "proposer",
                          "isOffer",
                          "refinancingLoanId",
                          "nonceSpace",
                          "nonce",
                          "loanContract"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "7088:838:91",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ProposalBase_$64649_memory_ptr",
                          "typeString": "struct PWNSimpleLoanProposal.ProposalBase memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                          "typeString": "bytes32[] calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_struct$_ProposalBase_$64649_memory_ptr",
                          "typeString": "struct PWNSimpleLoanProposal.ProposalBase memory"
                        }
                      ],
                      "id": 65444,
                      "name": "_acceptProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 65235,
                      "src": "6921:15:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes32_$_t_array$_t_bytes32_$dyn_calldata_ptr_$_t_bytes_calldata_ptr_$_t_struct$_ProposalBase_$64649_memory_ptr_$returns$__$",
                        "typeString": "function (address,uint256,bytes32,bytes32[] calldata,bytes calldata,struct PWNSimpleLoanProposal.ProposalBase memory)"
                      }
                    },
                    "id": 65480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6921:1015:91",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 65481,
                  "nodeType": "ExpressionStatement",
                  "src": "6921:1015:91"
                },
                {
                  "expression": {
                    "id": 65540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 65482,
                      "name": "loanTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 65425,
                      "src": "7983:9:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Terms_$61054_memory_ptr",
                        "typeString": "struct PWNSimpleLoan.Terms memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "condition": {
                            "expression": {
                              "id": 65485,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "8037:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65486,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8046:7:91",
                            "memberName": "isOffer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65291,
                            "src": "8037:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "id": 65489,
                            "name": "acceptor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 65409,
                            "src": "8076:8:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 65490,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "8037:47:91",
                          "trueExpression": {
                            "expression": {
                              "id": 65487,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "8056:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65488,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8065:8:91",
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65287,
                            "src": "8056:17:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "condition": {
                            "expression": {
                              "id": 65491,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "8108:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65492,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8117:7:91",
                            "memberName": "isOffer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65291,
                            "src": "8108:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "expression": {
                              "id": 65494,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "8138:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65495,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8147:8:91",
                            "memberName": "proposer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65287,
                            "src": "8138:17:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 65496,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "8108:47:91",
                          "trueExpression": {
                            "id": 65493,
                            "name": "acceptor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 65409,
                            "src": "8127:8:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "expression": {
                            "id": 65497,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 65429,
                            "src": "8179:8:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                              "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                            }
                          },
                          "id": 65498,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8188:8:91",
                          "memberName": "duration",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 65281,
                          "src": "8179:17:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "expression": {
                                "id": 65501,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65429,
                                "src": "8267:8:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                                }
                              },
                              "id": 65502,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8276:18:91",
                              "memberName": "collateralCategory",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 65259,
                              "src": "8267:27:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_Category_$50",
                                "typeString": "enum MultiToken.Category"
                              }
                            },
                            {
                              "expression": {
                                "id": 65503,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65429,
                                "src": "8326:8:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                                }
                              },
                              "id": 65504,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8335:17:91",
                              "memberName": "collateralAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 65261,
                              "src": "8326:26:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 65505,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65429,
                                "src": "8374:8:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                                }
                              },
                              "id": 65506,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8383:12:91",
                              "memberName": "collateralId",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 65263,
                              "src": "8374:21:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "expression": {
                                "id": 65507,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65429,
                                "src": "8421:8:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                                }
                              },
                              "id": 65508,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8430:16:91",
                              "memberName": "collateralAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 65265,
                              "src": "8421:25:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_Category_$50",
                                "typeString": "enum MultiToken.Category"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 65499,
                              "name": "MultiToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1132,
                              "src": "8222:10:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MultiToken_$1132_$",
                                "typeString": "type(library MultiToken)"
                              }
                            },
                            "id": 65500,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8233:5:91",
                            "memberName": "Asset",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 60,
                            "src": "8222:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_struct$_Asset_$60_storage_ptr_$",
                              "typeString": "type(struct MultiToken.Asset storage pointer)"
                            }
                          },
                          "id": 65509,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "structConstructorCall",
                          "lValueRequested": false,
                          "nameLocations": [
                            "8257:8:91",
                            "8312:12:91",
                            "8370:2:91",
                            "8413:6:91"
                          ],
                          "names": [
                            "category",
                            "assetAddress",
                            "id",
                            "amount"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "8222:239:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$60_memory_ptr",
                            "typeString": "struct MultiToken.Asset memory"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "expression": {
                                "id": 65512,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65429,
                                "src": "8532:8:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                                }
                              },
                              "id": 65513,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8541:13:91",
                              "memberName": "creditAddress",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 65271,
                              "src": "8532:22:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 65514,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 65429,
                                "src": "8580:8:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                  "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                                }
                              },
                              "id": 65515,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "8589:12:91",
                              "memberName": "creditAmount",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 65273,
                              "src": "8580:21:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 65510,
                              "name": "MultiToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1132,
                              "src": "8483:10:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_MultiToken_$1132_$",
                                "typeString": "type(library MultiToken)"
                              }
                            },
                            "id": 65511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8494:5:91",
                            "memberName": "ERC20",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 85,
                            "src": "8483:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$_t_uint256_$returns$_t_struct$_Asset_$60_memory_ptr_$",
                              "typeString": "function (address,uint256) pure returns (struct MultiToken.Asset memory)"
                            }
                          },
                          "id": 65516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [
                            "8518:12:91",
                            "8572:6:91"
                          ],
                          "names": [
                            "assetAddress",
                            "amount"
                          ],
                          "nodeType": "FunctionCall",
                          "src": "8483:133:91",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Asset_$60_memory_ptr",
                            "typeString": "struct MultiToken.Asset memory"
                          }
                        },
                        {
                          "expression": {
                            "id": 65517,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 65429,
                            "src": "8651:8:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                              "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                            }
                          },
                          "id": 65518,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8660:19:91",
                          "memberName": "fixedInterestAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 65277,
                          "src": "8651:28:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "expression": {
                            "id": 65519,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 65429,
                            "src": "8714:8:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                              "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                            }
                          },
                          "id": 65520,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "8723:19:91",
                          "memberName": "accruingInterestAPR",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 65279,
                          "src": "8714:28:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        {
                          "condition": {
                            "expression": {
                              "id": 65521,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "8772:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65522,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8781:7:91",
                            "memberName": "isOffer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65291,
                            "src": "8772:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 65527,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8827:1:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 65526,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8819:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 65525,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "8819:7:91",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 65528,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8819:10:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 65529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "8772:57:91",
                          "trueExpression": {
                            "expression": {
                              "id": 65523,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "8791:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65524,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8800:16:91",
                            "memberName": "proposerSpecHash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65289,
                            "src": "8791:25:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "condition": {
                            "expression": {
                              "id": 65530,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "8861:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65531,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8870:7:91",
                            "memberName": "isOffer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65291,
                            "src": "8861:16:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "expression": {
                              "id": 65536,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 65429,
                              "src": "8893:8:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$65300_memory_ptr",
                                "typeString": "struct PWNSimpleLoanSimpleProposal.Proposal memory"
                              }
                            },
                            "id": 65537,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "8902:16:91",
                            "memberName": "proposerSpecHash",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 65289,
                            "src": "8893:25:91",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "id": 65538,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "8861:57:91",
                          "trueExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 65534,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8888:1:91",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 65533,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8880:7:91",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_bytes32_$",
                                "typeString": "type(bytes32)"
                              },
                              "typeName": {
                                "id": 65532,
                                "name": "bytes32",
                                "nodeType": "ElementaryTypeName",
                                "src": "8880:7:91",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 65535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8880:10:91",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          {
                            "typeIdentifier": "t_struct$_Asset_$60_memory_ptr",
                            "typeString": "struct MultiToken.Asset memory"
                          },
                          {
                            "typeIdentifier": "t_struct$_Asset_$60_memory_ptr",
                            "typeString": "struct MultiToken.Asset memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "id": 65483,
                          "name": "PWNSimpleLoan",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 63281,
                          "src": "7995:13:91",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_PWNSimpleLoan_$63281_$",
                            "typeString": "type(contract PWNSimpleLoan)"
                          }
                        },
                        "id": 65484,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "8009:5:91",
                        "memberName": "Terms",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 61054,
                        "src": "7995:19:91",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Terms_$61054_storage_ptr_$",
                          "typeString": "type(struct PWNSimpleLoan.Terms storage pointer)"
                        }
                      },
                      "id": 65539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "nameLocations": [
                        "8029:6:91",
                        "8098:8:91",
                        "8169:8:91",
                        "8210:10:91",
                        "8475:6:91",
                        "8630:19:91",
                        "8693:19:91",
                        "8756:14:91",
                        "8843:16:91"
                      ],
                      "names": [
                        "lender",
                        "borrower",
                        "duration",
                        "collateral",
                        "credit",
                        "fixedInterestAmount",
                        "accruingInterestAPR",
                        "lenderSpecHash",
                        "borrowerSpecHash"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "7995:934:91",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Terms_$61054_memory_ptr",
                        "typeString": "struct PWNSimpleLoan.Terms memory"
                      }
                    },
                    "src": "7983:946:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Terms_$61054_memory_ptr",
                      "typeString": "struct PWNSimpleLoan.Terms memory"
                    }
                  },
                  "id": 65541,
                  "nodeType": "ExpressionStatement",
                  "src": "7983:946:91"
                }
              ]
            },
            "baseFunctions": [
              64846
            ],
            "documentation": {
              "id": 65407,
              "nodeType": "StructuredDocumentation",
              "src": "6305:52:91",
              "text": " @inheritdoc PWNSimpleLoanProposal"
            },
            "functionSelector": "01e83272",
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "acceptProposal",
            "nameLocation": "6371:14:91",
            "overrides": {
              "id": 65420,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "6575:8:91"
            },
            "parameters": {
              "id": 65419,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65409,
                  "mutability": "mutable",
                  "name": "acceptor",
                  "nameLocation": "6403:8:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65543,
                  "src": "6395:16:91",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 65408,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6395:7:91",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 65411,
                  "mutability": "mutable",
                  "name": "refinancingLoanId",
                  "nameLocation": "6429:17:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65543,
                  "src": "6421:25:91",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 65410,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6421:7:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 65413,
                  "mutability": "mutable",
                  "name": "proposalData",
                  "nameLocation": "6471:12:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65543,
                  "src": "6456:27:91",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 65412,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6456:5:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 65416,
                  "mutability": "mutable",
                  "name": "proposalInclusionProof",
                  "nameLocation": "6512:22:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65543,
                  "src": "6493:41:91",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_calldata_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 65414,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "6493:7:91",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 65415,
                    "nodeType": "ArrayTypeName",
                    "src": "6493:9:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 65418,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "6559:9:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65543,
                  "src": "6544:24:91",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 65417,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "6544:5:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6385:189:91"
            },
            "returnParameters": {
              "id": 65426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65422,
                  "mutability": "mutable",
                  "name": "proposalHash",
                  "nameLocation": "6610:12:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65543,
                  "src": "6602:20:91",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 65421,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6602:7:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 65425,
                  "mutability": "mutable",
                  "name": "loanTerms",
                  "nameLocation": "6651:9:91",
                  "nodeType": "VariableDeclaration",
                  "scope": 65543,
                  "src": "6624:36:91",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Terms_$61054_memory_ptr",
                    "typeString": "struct PWNSimpleLoan.Terms"
                  },
                  "typeName": {
                    "id": 65424,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 65423,
                      "name": "PWNSimpleLoan.Terms",
                      "nameLocations": [
                        "6624:13:91",
                        "6638:5:91"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 61054,
                      "src": "6624:19:91"
                    },
                    "referencedDeclaration": 61054,
                    "src": "6624:19:91",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Terms_$61054_storage_ptr",
                      "typeString": "struct PWNSimpleLoan.Terms"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6601:60:91"
            },
            "scope": 65544,
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 65246,
              "name": "PWNSimpleLoanProposal",
              "nameLocations": [
                "461:21:91"
              ],
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 65236,
              "src": "461:21:91"
            },
            "id": 65247,
            "nodeType": "InheritanceSpecifier",
            "src": "461:21:91"
          }
        ],
        "canonicalName": "PWNSimpleLoanSimpleProposal",
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": {
          "id": 65245,
          "nodeType": "StructuredDocumentation",
          "src": "301:119:91",
          "text": " @title PWN Simple Loan Simple Proposal\n @notice Contract for creating and accepting simple loan proposals."
        },
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          65544,
          65236
        ],
        "name": "PWNSimpleLoanSimpleProposal",
        "nameLocation": "430:27:91",
        "scope": 65545,
        "usedErrors": [
          59971,
          59984,
          60778,
          60785,
          64666,
          64669,
          64676,
          64681,
          64686,
          64691,
          64698,
          64705,
          66360
        ]
      }
    ],
    "license": "GPL-3.0-only"
  },
  "id": 91
}